// Copyright Epic Games, Inc. All Rights Reserved. #pragma once // HEADER_UNIT_SKIP - Bad? #if WITH_EDITOR #include "Editor/EditorEngine.h" #include "LevelEditor.h" #endif // WITH_EDITOR #include "GameplayDebuggerAddonManager.h" #include "GameplayDebuggerPlayerManager.h" class AGameplayDebuggingReplicator; class FGameplayDebuggerCompat : public FSelfRegisteringExec, public GameplayDebugger { public: // Begin IModuleInterface virtual void StartupModule() override; virtual void ShutdownModule() override; // End IModuleInterface void WorldAdded(UWorld* InWorld); void WorldDestroyed(UWorld* InWorld); #if WITH_EDITOR void OnLevelActorAdded(AActor* InActor); void OnLevelActorDeleted(AActor* InActor); TSharedRef OnExtendLevelEditorViewMenu(const TSharedRef CommandList); void CreateSnappingOptionsMenu(FMenuBuilder& Builder); void CreateSettingSubMenu(FMenuBuilder& Builder); void HandleSettingChanged(FName PropertyName); #endif TArray >& GetAllReplicators(UWorld* InWorld); void AddReplicator(UWorld* InWorld, AGameplayDebuggingReplicator* InReplicator); void RemoveReplicator(UWorld* InWorld, AGameplayDebuggingReplicator* InReplicator); // Begin FExec Interface virtual bool Exec(UWorld* Inworld, const TCHAR* Cmd, FOutputDevice& Ar) override; // End FExec Interface private: virtual bool CreateGameplayDebuggerForPlayerController(APlayerController* PlayerController) override; virtual bool IsGameplayDebuggerActiveForPlayerController(APlayerController* PlayerController) override; bool DoesGameplayDebuggingReplicatorExistForPlayerController(APlayerController* PlayerController); TMap, TArray > > AllReplicatorsPerWorlds; public: virtual void RegisterCategory(FName CategoryName, FOnGetCategory MakeInstanceDelegate, EGameplayDebuggerCategoryState CategoryState = EGameplayDebuggerCategoryState::Disabled, int32 SlotIdx = INDEX_NONE); virtual void UnregisterCategory(FName CategoryName); virtual void NotifyCategoriesChanged(); virtual void RegisterExtension(FName ExtensionName, IGameplayDebugger::FOnGetExtension MakeInstanceDelegate); virtual void UnregisterExtension(FName ExtensionName); virtual void NotifyExtensionsChanged(); virtual void UseNewGameplayDebugger(); void StartupNewDebugger(); void ShutdownNewDebugger(); AGameplayDebuggerPlayerManager& GetPlayerManager(UWorld* World); void OnWorldInitialized(UWorld* World, const UWorld::InitializationValues IVS); bool bNewDebuggerEnabled; FGameplayDebuggerAddonManager AddonManager; TMap, TWeakObjectPtr> PlayerManagers; private: #if WITH_EDITOR FLevelEditorModule::FLevelEditorMenuExtender ViewMenuExtender; #endif };