Files
UnrealEngineUWP/Engine/Source/Editor/DataLayerEditor/Private/DataLayer/DataLayerTreeItem.h
richard malo 0a5cd75ed9 - Added Data Layer highlighting based on editor selection
- Added Data Layer / Actor filtering based on editor selection
#jira UE-135846
#jira UE-135848
#rb patrick.enfedaque
#preflight 619fb87647752856c9ab1b76

#ROBOMERGE-AUTHOR: richard.malo
#ROBOMERGE-SOURCE: CL 18296131 in //UE5/Release-5.0/... via CL 18296191
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18296199 by richard malo in ue5-release-engine-test branch]
2021-11-25 13:51:47 -05:00

51 lines
1.8 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Misc/Attribute.h"
#include "SceneOutlinerFwd.h"
#include "ISceneOutlinerTreeItem.h"
#include "WorldPartition/DataLayer/DataLayer.h"
struct FDataLayerTreeItem : ISceneOutlinerTreeItem
{
public:
FDataLayerTreeItem(UDataLayer* InDataLayer);
UDataLayer* GetDataLayer() const { return DataLayer.Get(); }
/* Begin ISceneOutlinerTreeItem Implementation */
virtual bool IsValid() const override { return DataLayer.IsValid(); }
virtual FSceneOutlinerTreeItemID GetID() const override { return ID; }
virtual FString GetDisplayString() const override;
virtual bool CanInteract() const override { return true; }
virtual TSharedRef<SWidget> GenerateLabelWidget(ISceneOutliner& Outliner, const STableRow<FSceneOutlinerTreeItemPtr>& InRow) override;
virtual bool HasVisibilityInfo() const override { return true; }
virtual void OnVisibilityChanged(const bool bNewVisibility) override;
virtual bool GetVisibility() const override;
virtual bool ShouldShowVisibilityState() const { return true; }
/* End ISceneOutlinerTreeItem Implementation */
bool ShouldBeHighlighted() const;
void SetIsHighlightedIfSelected(bool bInIsHighlightedIfSelected) { bIsHighlighedtIfSelected = bInIsHighlightedIfSelected; }
static const FSceneOutlinerTreeItemType Type;
DECLARE_DELEGATE_RetVal_OneParam(bool, FFilterPredicate, const UDataLayer*);
DECLARE_DELEGATE_RetVal_OneParam(bool, FInteractivePredicate, const UDataLayer*);
bool Filter(FFilterPredicate Pred) const
{
return Pred.Execute(GetDataLayer());
}
bool GetInteractiveState(FInteractivePredicate Pred) const
{
return Pred.Execute(GetDataLayer());
}
private:
TWeakObjectPtr<UDataLayer> DataLayer;
const FObjectKey ID;
bool bIsHighlighedtIfSelected;
};