Update README.md

This commit is contained in:
Arnaud Jamin
2023-10-11 00:13:07 -04:00
committed by GitHub
parent f2d320ceca
commit d82effdd5f
+67 -4
View File
@@ -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<UObject> CogWindowManagerRef = nullptr;
#if ENABLE_COG
TObjectPtr<UCogWindowManager> CogWindowManager = nullptr;
#endif //ENABLE_COG
};
```
3. Instantiate the CogWindowManager and add some windows:
```cpp
void ACogSampleGameState::BeginPlay()
{
Super::BeginPlay();
#if ENABLE_COG
CogWindowManager = NewObject<UCogWindowManager>(this);
CogWindowManagerRef = CogWindowManager;
CogWindowManager->CreateWindow<UCogEngineWindow_DebugSettings>("Engine.Debug Settings");
CogWindowManager->CreateWindow<UCogEngineWindow_ImGui>("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
}
```