Files
UnrealEngineUWP/Engine/Source/Editor/DataLayerEditor/Private/DataLayer/DataLayerTreeItem.cpp
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

60 lines
1.7 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "DataLayerTreeItem.h"
#include "DataLayer/DataLayerEditorSubsystem.h"
#include "ISceneOutlinerTreeItem.h"
#include "SceneOutlinerStandaloneTypes.h"
#include "SDataLayerTreeLabel.h"
#include "Editor.h"
#define LOCTEXT_NAMESPACE "DataLayer"
const FSceneOutlinerTreeItemType FDataLayerTreeItem::Type(&ISceneOutlinerTreeItem::Type);
FDataLayerTreeItem::FDataLayerTreeItem(UDataLayer* InDataLayer)
: ISceneOutlinerTreeItem(Type)
, DataLayer(InDataLayer)
, ID(InDataLayer)
, bIsHighlighedtIfSelected(false)
{
Flags.bIsExpanded = false;
}
FString FDataLayerTreeItem::GetDisplayString() const
{
const UDataLayer* DataLayerPtr = DataLayer.Get();
return DataLayerPtr ? DataLayerPtr->GetDataLayerLabel().ToString() : LOCTEXT("DataLayerForMissingDataLayer", "(Deleted Data Layer)").ToString();
}
bool FDataLayerTreeItem::GetVisibility() const
{
const UDataLayer* DataLayerPtr = DataLayer.Get();
return DataLayerPtr && DataLayerPtr->IsVisible();
}
TSharedRef<SWidget> FDataLayerTreeItem::GenerateLabelWidget(ISceneOutliner& Outliner, const STableRow<FSceneOutlinerTreeItemPtr>& InRow)
{
return SNew(SDataLayerTreeLabel, *this, Outliner, InRow);
}
void FDataLayerTreeItem::OnVisibilityChanged(const bool bNewVisibility)
{
if (UDataLayer* DataLayerPtr = DataLayer.Get())
{
UDataLayerEditorSubsystem::Get()->SetDataLayerVisibility(DataLayerPtr, bNewVisibility);
}
}
bool FDataLayerTreeItem::ShouldBeHighlighted() const
{
if (bIsHighlighedtIfSelected)
{
if (UDataLayer* DataLayerPtr = DataLayer.Get())
{
return UDataLayerEditorSubsystem::Get()->DoesDataLayerContainSelectedActors(DataLayerPtr);
}
}
return false;
}
#undef LOCTEXT_NAMESPACE