2020-10-28 06:51:40 -04:00
|
|
|
// 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);
|
|
|
|
|
|
2022-03-15 13:52:28 -04:00
|
|
|
FDataLayerTreeItem::FDataLayerTreeItem(UDataLayerInstance* InDataLayerInstance)
|
2020-10-28 06:51:40 -04:00
|
|
|
: ISceneOutlinerTreeItem(Type)
|
2022-03-15 13:52:28 -04:00
|
|
|
, DataLayerInstance(InDataLayerInstance)
|
|
|
|
|
, ID(InDataLayerInstance)
|
2021-11-25 13:51:47 -05:00
|
|
|
, bIsHighlighedtIfSelected(false)
|
2020-10-28 06:51:40 -04:00
|
|
|
{
|
|
|
|
|
Flags.bIsExpanded = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
FString FDataLayerTreeItem::GetDisplayString() const
|
|
|
|
|
{
|
2022-05-10 10:22:54 -04:00
|
|
|
const UDataLayerInstance* DataLayerInstancePtr = DataLayerInstance.Get();
|
|
|
|
|
return DataLayerInstancePtr ? DataLayerInstancePtr->GetDataLayerShortName() : LOCTEXT("DataLayerForMissingDataLayer", "(Deleted Data Layer)").ToString();
|
2020-10-28 06:51:40 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool FDataLayerTreeItem::GetVisibility() const
|
|
|
|
|
{
|
2022-05-10 10:22:54 -04:00
|
|
|
const UDataLayerInstance* DataLayerInstancePtr = DataLayerInstance.Get();
|
|
|
|
|
return DataLayerInstancePtr && DataLayerInstancePtr->IsVisible();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool FDataLayerTreeItem::ShouldShowVisibilityState() const
|
|
|
|
|
{
|
|
|
|
|
const UDataLayerInstance* DataLayerInstancePtr = DataLayerInstance.Get();
|
|
|
|
|
return DataLayerInstancePtr && !DataLayerInstancePtr->IsReadOnly();
|
2020-10-28 06:51:40 -04:00
|
|
|
}
|
|
|
|
|
|
2022-03-15 13:52:28 -04:00
|
|
|
bool FDataLayerTreeItem::CanInteract() const
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2020-10-28 06:51:40 -04:00
|
|
|
TSharedRef<SWidget> FDataLayerTreeItem::GenerateLabelWidget(ISceneOutliner& Outliner, const STableRow<FSceneOutlinerTreeItemPtr>& InRow)
|
|
|
|
|
{
|
|
|
|
|
return SNew(SDataLayerTreeLabel, *this, Outliner, InRow);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void FDataLayerTreeItem::OnVisibilityChanged(const bool bNewVisibility)
|
|
|
|
|
{
|
2022-05-10 10:22:54 -04:00
|
|
|
if (UDataLayerInstance* DataLayerInstancePtr = DataLayerInstance.Get())
|
2020-10-28 06:51:40 -04:00
|
|
|
{
|
2022-05-10 10:22:54 -04:00
|
|
|
UDataLayerEditorSubsystem::Get()->SetDataLayerVisibility(DataLayerInstancePtr, bNewVisibility);
|
2020-10-28 06:51:40 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2021-11-25 13:51:47 -05:00
|
|
|
bool FDataLayerTreeItem::ShouldBeHighlighted() const
|
|
|
|
|
{
|
|
|
|
|
if (bIsHighlighedtIfSelected)
|
|
|
|
|
{
|
2022-05-10 10:22:54 -04:00
|
|
|
if (UDataLayerInstance* DataLayerInstancePtr = DataLayerInstance.Get())
|
2021-11-25 13:51:47 -05:00
|
|
|
{
|
2022-05-10 10:22:54 -04:00
|
|
|
return UDataLayerEditorSubsystem::Get()->DoesDataLayerContainSelectedActors(DataLayerInstancePtr);
|
2021-11-25 13:51:47 -05:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2020-10-28 06:51:40 -04:00
|
|
|
#undef LOCTEXT_NAMESPACE
|