#include "CogSampleGameState.h" #include "CogSampleAbilitySystemComponent.h" #include "GameFramework/Character.h" #include "GameFramework/GameMode.h" #include "GameFramework/GameState.h" #include "Modules/ModuleManager.h" #if ENABLE_COG #include "CogAbilityWindow_Abilities.h" #include "CogAbilityWindow_Attributes.h" #include "CogAbilityWindow_Cheats.h" #include "CogAbilityWindow_Effects.h" #include "CogAbilityWindow_Pools.h" #include "CogAbilityWindow_Tags.h" #include "CogAbilityWindow_Tweaks.h" #include "CogAIWindow_BehaviorTree.h" #include "CogAIWindow_Blackboard.h" #include "CogDebugPlot.h" #include "CogEngineWindow_CollisionTester.h" #include "CogEngineWindow_CollisionViewer.h" #include "CogEngineWindow_CommandBindings.h" #include "CogEngineWindow_DebugSettings.h" #include "CogEngineWindow_ImGui.h" #include "CogEngineWindow_Inspector.h" #include "CogEngineWindow_LogCategories.h" #include "CogEngineWindow_Metrics.h" #include "CogEngineWindow_NetEmulation.h" #include "CogEngineWindow_OutputLog.h" #include "CogEngineWindow_Plots.h" #include "CogEngineWindow_Scalability.h" #include "CogEngineWindow_Selection.h" #include "CogEngineWindow_Skeleton.h" #include "CogEngineWindow_Slate.h" #include "CogEngineWindow_Spawns.h" #include "CogEngineWindow_Stats.h" #include "CogEngineWindow_TimeScale.h" #include "CogEngineWindow_Transform.h" #include "CogInputWindow_Actions.h" #include "CogInputWindow_Gamepad.h" #include "CogSampleWindow_Team.h" #include "CogWindowManager.h" #include "GameFramework/GameUserSettings.h" #endif //ENABLE_COG //-------------------------------------------------------------------------------------------------------------------------- ACogSampleGameState::ACogSampleGameState(const FObjectInitializer & ObjectInitializer) : Super(ObjectInitializer) { SetActorTickEnabled(true); PrimaryActorTick.bCanEverTick = true; PrimaryActorTick.SetTickFunctionEnable(true); PrimaryActorTick.bStartWithTickEnabled = true; AbilitySystemComponent = CreateDefaultSubobject(TEXT("AbilitySystemComponent")); AbilitySystemComponent->SetIsReplicated(true); AbilitySystemComponent->SetReplicationMode(EGameplayEffectReplicationMode::Minimal); } //-------------------------------------------------------------------------------------------------------------------------- void ACogSampleGameState::BeginPlay() { Super::BeginPlay(); AbilitySystemComponent->InitAbilityActorInfo(this, this); #if ENABLE_COG InitializeCog(); #endif //ENABLE_COG } //-------------------------------------------------------------------------------------------------------------------------- void ACogSampleGameState::EndPlay(const EEndPlayReason::Type EndPlayReason) { Super::EndPlay(EndPlayReason); #if ENABLE_COG if (CogWindowManager != nullptr) { CogWindowManager->Shutdown(); } #endif //ENABLE_COG } //-------------------------------------------------------------------------------------------------------------------------- void ACogSampleGameState::Tick(float DeltaSeconds) { Super::Tick(DeltaSeconds); #if ENABLE_COG extern ENGINE_API float GAverageFPS; extern ENGINE_API float GAverageMS; FCogDebugPlot::PlotValue(this, "Frame Rate", GAverageFPS); FCogDebugPlot::PlotValue(this, "Frame Time", GAverageMS); //const float LocalWorldTime = GetWorld()->GetTimeSeconds(); //const float ServerWorldTime = GetServerWorldTimeSeconds(); //const float ServerWorldTimeDelta = LocalWorldTime - ServerWorldTime; //FCogDebugPlot::PlotValue(this, "Server World Time Delta", ServerWorldTimeDelta); if (CogWindowManager != nullptr) { CogWindowManager->Tick(DeltaSeconds); } #endif //ENABLE_COG } #if ENABLE_COG //-------------------------------------------------------------------------------------------------------------------------- void ACogSampleGameState::InitializeCog() { CogWindowManager = NewObject(this); CogWindowManagerRef = CogWindowManager; //--------------------------------------- // Engine //--------------------------------------- CogWindowManager->AddWindow("Engine.Collision Tester"); CogWindowManager->AddWindow("Engine.Collision Viewer"); CogWindowManager->AddWindow("Engine.Command Bindings"); CogWindowManager->AddWindow("Engine.Debug Settings"); CogWindowManager->AddWindow("Engine.ImGui"); FCogEngineWindow_Inspector* Inspector = CogWindowManager->AddWindow("Engine.Inspector"); Inspector->AddFavorite(GEngine->GetGameUserSettings(), [](UObject* Object) { if (UGameUserSettings* UserSettings = Cast(Object)) { UserSettings->ApplySettings(true); } }); CogWindowManager->AddWindow("Engine.Log Categories"); CogWindowManager->AddWindow("Engine.Net Emulation"); CogWindowManager->AddWindow("Engine.Output Log"); CogWindowManager->AddWindow("Engine.Metrics"); CogWindowManager->AddWindow("Engine.Plots"); FCogEngineWindow_Selection* SelectionWindow = CogWindowManager->AddWindow("Engine.Selection"); SelectionWindow->SetActorClasses({ ACharacter::StaticClass(), AActor::StaticClass(), AGameModeBase::StaticClass(), AGameStateBase::StaticClass() }); SelectionWindow->SetTraceType(UEngineTypes::ConvertToTraceType(ECollisionChannel::ECC_Pawn)); CogWindowManager->AddWindow("Engine.Scalability"); CogWindowManager->AddWindow("Engine.Skeleton"); CogWindowManager->AddWindow("Engine.Slate"); CogWindowManager->AddWindow("Engine.Spawns"); FCogEngineWindow_Stats* StatsWindow = CogWindowManager->AddWindow("Engine.Stats"); CogWindowManager->AddWindow("Engine.Time Scale"); CogWindowManager->AddWindow("Engine.Transform"); //--------------------------------------- // Abilities //--------------------------------------- CogWindowManager->AddWindow("Gameplay.Abilities"); CogWindowManager->AddWindow("Gameplay.Attributes"); CogWindowManager->AddWindow("Gameplay.Blocking Tags"); CogWindowManager->AddWindow("Gameplay.Cheats"); CogWindowManager->AddWindow("Gameplay.Effects"); CogWindowManager->AddWindow("Gameplay.Pools"); CogWindowManager->AddWindow("Gameplay.Owned Tags"); CogWindowManager->AddWindow("Gameplay.Team"); CogWindowManager->AddWindow("Gameplay.Tweaks"); //--------------------------------------- // AI //--------------------------------------- CogWindowManager->AddWindow("AI.Behavior Tree"); CogWindowManager->AddWindow("AI.Blackboard"); //--------------------------------------- // Input //--------------------------------------- CogWindowManager->AddWindow("Input.Actions"); CogWindowManager->AddWindow("Input.Gamepad"); } #endif //ENABLE_COG