Files
UnrealEngineUWP/Engine/Source/Editor/DataLayerEditor/Private/DataLayer/DataLayerTreeItem.cpp
richard malo 879c5c42c6 Added support of Data Layers inside Level Instances.
#rb jeanfrancois.dube, patrick.enfedaque, philippe.deseve
#jira UE-151266
#preflight 62796854a35fb5cb3f55e9e6

#ROBOMERGE-OWNER: richard.malo
#ROBOMERGE-AUTHOR: richard.malo
#ROBOMERGE-SOURCE: CL 20121141 via CL 20121608 via CL 20121618
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)

[CL 20122781 by richard malo in ue5-main branch]
2022-05-10 10:22:54 -04:00

71 lines
2.1 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(UDataLayerInstance* InDataLayerInstance)
: ISceneOutlinerTreeItem(Type)
, DataLayerInstance(InDataLayerInstance)
, ID(InDataLayerInstance)
, bIsHighlighedtIfSelected(false)
{
Flags.bIsExpanded = false;
}
FString FDataLayerTreeItem::GetDisplayString() const
{
const UDataLayerInstance* DataLayerInstancePtr = DataLayerInstance.Get();
return DataLayerInstancePtr ? DataLayerInstancePtr->GetDataLayerShortName() : LOCTEXT("DataLayerForMissingDataLayer", "(Deleted Data Layer)").ToString();
}
bool FDataLayerTreeItem::GetVisibility() const
{
const UDataLayerInstance* DataLayerInstancePtr = DataLayerInstance.Get();
return DataLayerInstancePtr && DataLayerInstancePtr->IsVisible();
}
bool FDataLayerTreeItem::ShouldShowVisibilityState() const
{
const UDataLayerInstance* DataLayerInstancePtr = DataLayerInstance.Get();
return DataLayerInstancePtr && !DataLayerInstancePtr->IsReadOnly();
}
bool FDataLayerTreeItem::CanInteract() const
{
return true;
}
TSharedRef<SWidget> FDataLayerTreeItem::GenerateLabelWidget(ISceneOutliner& Outliner, const STableRow<FSceneOutlinerTreeItemPtr>& InRow)
{
return SNew(SDataLayerTreeLabel, *this, Outliner, InRow);
}
void FDataLayerTreeItem::OnVisibilityChanged(const bool bNewVisibility)
{
if (UDataLayerInstance* DataLayerInstancePtr = DataLayerInstance.Get())
{
UDataLayerEditorSubsystem::Get()->SetDataLayerVisibility(DataLayerInstancePtr, bNewVisibility);
}
}
bool FDataLayerTreeItem::ShouldBeHighlighted() const
{
if (bIsHighlighedtIfSelected)
{
if (UDataLayerInstance* DataLayerInstancePtr = DataLayerInstance.Get())
{
return UDataLayerEditorSubsystem::Get()->DoesDataLayerContainSelectedActors(DataLayerInstancePtr);
}
}
return false;
}
#undef LOCTEXT_NAMESPACE