diff --git a/README.md b/README.md index 8721102..1083d95 100644 --- a/README.md +++ b/README.md @@ -192,10 +192,10 @@ The Cog repository has the following structure: - `Plugins/CogWindow` - ImGui window management (Base Window, Layout) - `Plugins/CogDebug` - Debug functionalities (Log, Debug Draw, Plot, Metric, ...) - `Plugins/CogImGui` - Integration of Imgui for Unreal, inspired by [UnrealImGui](https://github.com/segross/UnrealImGui) -- `Plugins/CogInterface` - Interfaces implemented by actors to inspect them +- `Plugins/CogCommon` - Common headers -The reason for having multiple plugins is to ease the integration for projects that do not use the `Ability System Component` or `Enhanced Input`. -For the next step of the setup, it is assumed all the plugins are used. +Cog has multiple plugins to ease the integration for projects that do not use the `Ability System Component` or `Enhanced Input`. +For the setup next steps, it is assumed all the plugins are used. 1. Setup up module dependencies: @@ -238,7 +238,70 @@ public class CogSample : ModuleRules } } ``` - +2. In the class of your choice (in the sample we use the GameState class) add a reference to the CogWindowManager. +#pragma once +```cpp +//ACogSampleGameState.h + +#include "CoreMinimal.h" +#include "CogCommon.h" +#include "GameFramework/GameStateBase.h" +#include "CogSampleGameState.generated.h" + +class UCogWindowManager; + +UCLASS() +class ACogSampleGameState : public AGameStateBase +{ + GENERATED_BODY() + + [...] + + // To make sure it doesn't get garbage collected. + UPROPERTY() + TObjectPtr CogWindowManagerRef = nullptr; + +#if ENABLE_COG + TObjectPtr CogWindowManager = nullptr; +#endif //ENABLE_COG +}; +``` +3. Instantiate the CogWindowManager and add some windows: + +```cpp +void ACogSampleGameState::BeginPlay() +{ + Super::BeginPlay(); + +#if ENABLE_COG + CogWindowManager = NewObject(this); + CogWindowManagerRef = CogWindowManager; + CogWindowManager->CreateWindow("Engine.Debug Settings"); + CogWindowManager->CreateWindow("Engine.ImGui"); + [...] +#endif //ENABLE_COG +} + +``` + +3. Define which key will toggle the input from the game to Imgui: + +```cpp +FCogImguiModule::Get().SetToggleInputKey(FCogImGuiKeyInfo(EKeys::Insert)); +``` + +4. Tick the CogWindowManager: + +```cpp +void ACogSampleGameState::Tick(float DeltaSeconds) +{ + Super::Tick(DeltaSeconds); + +#if ENABLE_COG + CogWindowManager->Tick(DeltaSeconds); +#endif //ENABLE_COG +} +```