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

66 lines
3.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "SceneOutlinerFwd.h"
#include "ISceneOutlinerHierarchy.h"
#include "DataLayer/DataLayerAction.h"
class FDataLayerMode;
class UDataLayerInstance;
class UWorld;
class FWorldPartitionActorDesc;
class UWorldPartition;
class FDataLayerHierarchy : public ISceneOutlinerHierarchy
{
public:
virtual ~FDataLayerHierarchy();
static TUniquePtr<FDataLayerHierarchy> Create(FDataLayerMode* Mode, const TWeakObjectPtr<UWorld>& World);
virtual void CreateItems(TArray<FSceneOutlinerTreeItemPtr>& OutItems) const override;
virtual void CreateChildren(const FSceneOutlinerTreeItemPtr& Item, TArray<FSceneOutlinerTreeItemPtr>& OutChildren) const override {}
virtual FSceneOutlinerTreeItemPtr FindOrCreateParentItem(const ISceneOutlinerTreeItem& Item, const TMap<FSceneOutlinerTreeItemID, FSceneOutlinerTreeItemPtr>& Items, bool bCreate = false) override;
void SetShowEditorDataLayers(bool bInShowEditorDataLayers) { bShowEditorDataLayers = bInShowEditorDataLayers; }
void SetShowRuntimeDataLayers(bool bInShowRuntimeDataLayers) { bShowRuntimeDataLayers = bInShowRuntimeDataLayers; }
void SetShowDataLayerActors(bool bInShowDataLayerActors) { bShowDataLayerActors = bInShowDataLayerActors; }
void SetShowUnloadedActors(bool bInShowUnloadedActors) { bShowUnloadedActors = bInShowUnloadedActors; }
void SetShowOnlySelectedActors(bool bInbShowOnlySelectedActors) { bShowOnlySelectedActors = bInbShowOnlySelectedActors; }
void SetHighlightSelectedDataLayers(bool bInHighlightSelectedDataLayers) { bHighlightSelectedDataLayers = bInHighlightSelectedDataLayers; }
void SetShowLevelInstanceContent(bool bInShowLevelInstanceContent) { bShowLevelInstanceContent = bInShowLevelInstanceContent; }
private:
UWorld* GetOwningWorld() const;
FDataLayerHierarchy(FDataLayerMode* Mode, const TWeakObjectPtr<UWorld>& Worlds);
FDataLayerHierarchy(const FDataLayerHierarchy&) = delete;
FDataLayerHierarchy& operator=(const FDataLayerHierarchy&) = delete;
void OnWorldPartitionCreated(UWorld* InWorld);
void OnLevelActorsAdded(const TArray<AActor*>& InActors);
void OnLevelActorsRemoved(const TArray<AActor*>& InActors);
void OnLevelActorAdded(AActor* InActor);
void OnLevelActorDeleted(AActor* InActor);
void OnLevelActorListChanged();
void OnWorldPartitionInitialized(UWorldPartition* InWorldPartition);
void OnWorldPartitionUninitialized(UWorldPartition* InWorldPartition);
void OnLevelAdded(ULevel* InLevel, UWorld* InWorld);
void OnLevelRemoved(ULevel* InLevel, UWorld* InWorld);
void OnLoadedActorAdded(AActor& InActor);
void OnLoadedActorRemoved(AActor& InActor);
void OnActorDescAdded(FWorldPartitionActorDesc* InActorDesc);
void OnActorDescRemoved(FWorldPartitionActorDesc* InActorDesc);
void OnActorDataLayersChanged(const TWeakObjectPtr<AActor>& InActor);
void OnDataLayerChanged(const EDataLayerAction Action, const TWeakObjectPtr<const UDataLayerInstance>& ChangedDataLayer, const FName& ChangedProperty);
void FullRefreshEvent();
FSceneOutlinerTreeItemPtr CreateDataLayerTreeItem(UDataLayerInstance* InDataLayer, bool bInForce = false) const;
bool IsDataLayerPartOfSelection(const UDataLayerInstance* DataLayer) const;
TWeakObjectPtr<UWorld> RepresentingWorld;
bool bShowEditorDataLayers;
bool bShowRuntimeDataLayers;
bool bShowDataLayerActors;
bool bShowUnloadedActors;
bool bShowOnlySelectedActors;
bool bHighlightSelectedDataLayers;
bool bShowLevelInstanceContent;
};