// Copyright Epic Games, Inc. All Rights Reserved. #include "DataLayerEditorModule.h" #include "PropertyEditorModule.h" #include "EditorWidgetsModule.h" #include "ObjectNameEditSinkRegistry.h" #include "Widgets/SWidget.h" #include "Widgets/DeclarativeSyntaxSupport.h" #include "Editor.h" #include "Modules/ModuleManager.h" #include "DataLayer/DataLayerPropertyTypeCustomization.h" #include "DataLayer/SDataLayerBrowser.h" #include "DataLayer/DataLayerNameEditSink.h" #include "DataLayer/DataLayerEditorSubsystem.h" #include "WorldPartition/DataLayer/DataLayerInstance.h" IMPLEMENT_MODULE(FDataLayerEditorModule, DataLayerEditor ); static const FName NAME_ActorDataLayer(TEXT("ActorDataLayer")); void FDataLayerEditorModule::StartupModule() { FPropertyEditorModule& PropertyModule = FModuleManager::LoadModuleChecked("PropertyEditor"); PropertyModule.RegisterCustomPropertyTypeLayout(NAME_ActorDataLayer, FOnGetPropertyTypeCustomizationInstance::CreateLambda([] { return MakeShared(); })); FEditorWidgetsModule& EditorWidgetsModule = FModuleManager::LoadModuleChecked("EditorWidgets"); EditorWidgetsModule.GetObjectNameEditSinkRegistry()->RegisterObjectNameEditSink(MakeShared()); } void FDataLayerEditorModule::ShutdownModule() { if (FPropertyEditorModule* PropertyModule = FModuleManager::GetModulePtr("PropertyEditor")) { PropertyModule->UnregisterCustomPropertyTypeLayout(NAME_ActorDataLayer); } } TSharedRef FDataLayerEditorModule::CreateDataLayerBrowser() { TSharedRef NewDataLayerBrowser = SNew(SDataLayerBrowser); DataLayerBrowser = NewDataLayerBrowser; return NewDataLayerBrowser; } void FDataLayerEditorModule::SyncDataLayerBrowserToDataLayer(const UDataLayerInstance* DataLayerInstance) { if (DataLayerBrowser.IsValid()) { TSharedRef Browser = StaticCastSharedRef(DataLayerBrowser.Pin().ToSharedRef()); Browser->SyncDataLayerBrowserToDataLayer(DataLayerInstance); } } bool FDataLayerEditorModule::AddActorToDataLayers(AActor* Actor, const TArray& DataLayers) { return UDataLayerEditorSubsystem::Get()->AddActorToDataLayers(Actor, DataLayers); }