Files
UnrealEngineUWP/Engine/Source/Editor/GameplayDebugger/Private/GameplayDebuggerEditorModule.cpp
guillaume guay b59eecf4c5 - Moved GameplayDebugger from Developer/ into Runtime/ and Editor source folder to be able to use it in shipping build.
- Moved the code originally in a Editor/ folder into its own GameplayDebuggerEditor module and added it so it get dynamically loaded in the editor
- Added some delegates so GameplayDebugger code can communicate to GameplayDebuggerEditor without referencing it. As only GameplayDebuggerEditor should reference GameplayDebugger, not the opposite.

#preflight https://horde.devtools.epicgames.com/job/637808462a05dabce95c5b9e
[REVIEW] https://p4-swarm.epicgames.net/reviews/23207203
[FYI] guillaume.morreel, andrew.ladenberger

[CL 23258875 by guillaume guay in ue5-main branch]
2022-11-24 09:49:23 -05:00

60 lines
2.8 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "GameplayDebuggerEditorModule.h"
#include "CoreMinimal.h"
#include "EditorModeManager.h"
#include "EditorModeRegistry.h"
#include "Engine/World.h"
#include "GameplayDebugger.h"
#include "GameplayDebuggerCategoryConfigCustomization.h"
#include "GameplayDebuggerEdMode.h"
#include "GameplayDebuggerExtensionConfigCustomization.h"
#include "GameplayDebuggerInputConfigCustomization.h"
#include "GameplayDebuggerModule.h"
#include "PropertyEditorModule.h"
IMPLEMENT_MODULE(FGameplayDebuggerEditorModule, GameplayDebuggerEditor)
void FGameplayDebuggerEditorModule::StartupModule()
{
FGameplayDebuggerModule::OnLocalControllerInitialized.AddRaw(this, &FGameplayDebuggerEditorModule::OnLocalControllerInitialized);
FGameplayDebuggerModule::OnLocalControllerUninitialized.AddRaw(this, &FGameplayDebuggerEditorModule::OnLocalControllerUninitialized);
FGameplayDebuggerModule::OnDebuggerEdModeActivation.AddRaw(this, &FGameplayDebuggerEditorModule::OnDebuggerEdModeActivation);
FPropertyEditorModule& PropertyEditorModule = FModuleManager::GetModuleChecked<FPropertyEditorModule>("PropertyEditor");
PropertyEditorModule.RegisterCustomPropertyTypeLayout("GameplayDebuggerCategoryConfig", FOnGetPropertyTypeCustomizationInstance::CreateStatic(&FGameplayDebuggerCategoryConfigCustomization::MakeInstance));
PropertyEditorModule.RegisterCustomPropertyTypeLayout("GameplayDebuggerExtensionConfig", FOnGetPropertyTypeCustomizationInstance::CreateStatic(&FGameplayDebuggerExtensionConfigCustomization::MakeInstance));
PropertyEditorModule.RegisterCustomPropertyTypeLayout("GameplayDebuggerInputConfig", FOnGetPropertyTypeCustomizationInstance::CreateStatic(&FGameplayDebuggerInputConfigCustomization::MakeInstance));
FEditorModeRegistry::Get().RegisterMode<FGameplayDebuggerEdMode>(FGameplayDebuggerEdMode::EM_GameplayDebugger);
}
void FGameplayDebuggerEditorModule::ShutdownModule()
{
FPropertyEditorModule* PropertyEditorModule = FModuleManager::GetModulePtr<FPropertyEditorModule>("PropertyEditor");
if (PropertyEditorModule)
{
PropertyEditorModule->UnregisterCustomPropertyTypeLayout("GameplayDebuggerCategoryConfig");
PropertyEditorModule->UnregisterCustomPropertyTypeLayout("GameplayDebuggerExtensionConfig");
PropertyEditorModule->UnregisterCustomPropertyTypeLayout("GameplayDebuggerInputConfig");
}
FEditorModeRegistry::Get().UnregisterMode(FGameplayDebuggerEdMode::EM_GameplayDebugger);
}
void FGameplayDebuggerEditorModule::OnDebuggerEdModeActivation()
{
GLevelEditorModeTools().ActivateMode(FGameplayDebuggerEdMode::EM_GameplayDebugger);
}
void FGameplayDebuggerEditorModule::OnLocalControllerInitialized()
{
FGameplayDebuggerEdMode::SafeOpenMode();
}
void FGameplayDebuggerEditorModule::OnLocalControllerUninitialized()
{
FGameplayDebuggerEdMode::SafeCloseMode();
}