Rework how ImGui input toggle is triggered

Add a new window CommandBindings to configure the shortcuts of console commands
The first time it is created, this window add the bindings to control cog:

[Tab]  Cog.ToggleInput
[F1]   Cog.LoadLayout 1
[F2]   Cog.LoadLayout 2
[F3]   Cog.LoadLayout 3
[F4]   Cog.LoadLayout 4
[F5]   Cog.ToggleSelectionMode

The selection window can now uses the Actor Label instead of Name (simpler to read)
Fix Blackboard sorting
This commit is contained in:
Arnaud Jamin
2023-10-19 17:28:42 -04:00
parent c32efe88f5
commit 1b5d63b0af
18 changed files with 705 additions and 165 deletions
+8 -26
View File
@@ -25,13 +25,14 @@
#include "CogEngineDataAsset.h"
#include "CogEngineModule.h"
#include "CogEngineWindow_Collisions.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_Metrics.h"
#include "CogEngineWindow_Plots.h"
#include "CogEngineWindow_Scalability.h"
#include "CogEngineWindow_Selection.h"
@@ -43,6 +44,7 @@
#include "CogInputDataAsset.h"
#include "CogInputWindow_Actions.h"
#include "CogInputWindow_Gamepad.h"
#include "CogSampleLogCategories.h"
#include "CogWindowManager.h"
#include "GameFramework/GameUserSettings.h"
@@ -94,6 +96,7 @@ void ACogSampleGameState::EndPlay(const EEndPlayReason::Type EndPlayReason)
Super::EndPlay(EndPlayReason);
#if ENABLE_COG
if (CogWindowManager != nullptr)
{
CogWindowManager->Shutdown();
@@ -123,9 +126,6 @@ void ACogSampleGameState::Tick(float DeltaSeconds)
//--------------------------------------------------------------------------------------------------------------------------
void ACogSampleGameState::InitializeCog()
{
FCogImguiModule::Get().SetToggleInputKey(FCogImGuiKeyInfo(EKeys::Tab));
RegisterCommand(TEXT("Cog.ToggleInput"), TEXT(""), FConsoleCommandWithArgsDelegate::CreateUObject(this, &ACogSampleGameState::CogToggleInput));
CogWindowManager = NewObject<UCogWindowManager>(this);
CogWindowManagerRef = CogWindowManager;
@@ -137,6 +137,8 @@ void ACogSampleGameState::InitializeCog()
UCogEngineWindow_Collisions* CollisionsWindow = CogWindowManager->CreateWindow<UCogEngineWindow_Collisions>("Engine.Collision");
CollisionsWindow->SetAsset(EngineAsset);
CogWindowManager->CreateWindow<UCogEngineWindow_CommandBindings>("Engine.Command Bindings");
CogWindowManager->CreateWindow<UCogEngineWindow_DebugSettings>("Engine.Debug Settings");
CogWindowManager->CreateWindow<UCogEngineWindow_ImGui>("Engine.ImGui");
@@ -150,9 +152,6 @@ void ACogSampleGameState::InitializeCog()
}
});
CogWindowManager->CreateWindow<UCogEngineWindow_LogCategories>("Engine.Log Categories");
CogWindowManager->CreateWindow<UCogEngineWindow_NetEmulation>("Engine.Net Emulation");
@@ -163,7 +162,7 @@ void ACogSampleGameState::InitializeCog()
CogWindowManager->CreateWindow<UCogEngineWindow_Plots>("Engine.Plots");
UCogEngineWindow_Selection* SelectionWindow = CogWindowManager->CreateWindow<UCogEngineWindow_Selection>("Engine.Selection");
SelectionWindow = CogWindowManager->CreateWindow<UCogEngineWindow_Selection>("Engine.Selection");
SelectionWindow->SetActorClasses({ ACharacter::StaticClass(), AActor::StaticClass(), AGameModeBase::StaticClass(), AGameStateBase::StaticClass() });
SelectionWindow->SetTraceType(UEngineTypes::ConvertToTraceType(ECollisionChannel::ECC_Pawn));
@@ -223,25 +222,8 @@ void ACogSampleGameState::InitializeCog()
//---------------------------------------
// Main Menu Widget
//---------------------------------------
CogWindowManager->AddMainMenuWidget(SelectionWindow);
CogWindowManager->AddMainMenuWidget(SelectionWindow.Get());
CogWindowManager->AddMainMenuWidget(StatsWindow);
}
//--------------------------------------------------------------------------------------------------------------------------
void ACogSampleGameState::RegisterCommand(const TCHAR* Name, const TCHAR* Help, const FConsoleCommandWithArgsDelegate& Command)
{
IConsoleManager& ConsoleManager = IConsoleManager::Get();
if (!ConsoleManager.FindConsoleObject(Name))
{
ConsoleManager.RegisterConsoleCommand(Name, Help, Command, ECVF_Cheat);
}
}
//--------------------------------------------------------------------------------------------------------------------------
void ACogSampleGameState::CogToggleInput(const TArray<FString>& Args)
{
FCogImguiModule::Get().ToggleEnableInput();
}
#endif //ENABLE_COG
+4 -2
View File
@@ -6,6 +6,7 @@
#include "CogSampleGameState.generated.h"
class UCogWindowManager;
class UCogEngineWindow_Selection;
UCLASS()
class ACogSampleGameState : public AGameStateBase
@@ -32,11 +33,12 @@ private:
void InitializeCog();
void RegisterCommand(const TCHAR* Name, const TCHAR* Help, const FConsoleCommandWithArgsDelegate& Command);
void RegisterCommands();
void CogToggleInput(const TArray<FString>& Args);
void UnregisterCommands();
TObjectPtr<UCogWindowManager> CogWindowManager = nullptr;
TObjectPtr<UCogEngineWindow_Selection> SelectionWindow = nullptr;
#endif //ENABLE_COG
};