unify data assets

This commit is contained in:
Arnaud Jamin
2023-10-11 10:33:13 -04:00
parent 3116bbc87f
commit 18d82287aa
22 changed files with 76 additions and 73 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -2,6 +2,7 @@
#include "CogDebugDrawHelper.h" #include "CogDebugDrawHelper.h"
#include "CogDebugSettings.h" #include "CogDebugSettings.h"
#include "CogEngineDataAsset.h"
#include "CogImGuiHelper.h" #include "CogImGuiHelper.h"
#include "Components/BoxComponent.h" #include "Components/BoxComponent.h"
#include "Components/CapsuleComponent.h" #include "Components/CapsuleComponent.h"
@@ -368,7 +369,7 @@ void UCogEngineWindow_Collisions::RenderContent()
} }
//-------------------------------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------------------------------
void UCogEngineWindow_Collisions::SetCollisionsAsset(const UCogEngineDataAsset_Collisions* Asset) void UCogEngineWindow_Collisions::SetAsset(const UCogEngineDataAsset* Asset)
{ {
if (Asset == nullptr) if (Asset == nullptr)
{ {
@@ -1,5 +1,7 @@
#include "CogEngineWindow_Spawns.h" #include "CogEngineWindow_Spawns.h"
#include "CogEngineDataAsset.h"
//-------------------------------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------------------------------
void UCogEngineWindow_Spawns::RenderHelp() void UCogEngineWindow_Spawns::RenderHelp()
{ {
@@ -2,7 +2,20 @@
#include "CoreMinimal.h" #include "CoreMinimal.h"
#include "Engine/DataAsset.h" #include "Engine/DataAsset.h"
#include "CogEngineDataAsset_Spawns.generated.h" #include "CogEngineDataAsset.generated.h"
//--------------------------------------------------------------------------------------------------------------------------
USTRUCT()
struct COGENGINE_API FCogCollisionChannel
{
GENERATED_BODY()
UPROPERTY(EditAnywhere)
TEnumAsByte<ECollisionChannel> Channel = ECollisionChannel::ECC_WorldStatic;
UPROPERTY(EditAnywhere)
FLinearColor Color = FLinearColor(0.5f, 0.5f, 0.5f, 1.0f);
};
//-------------------------------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------------------------------
USTRUCT() USTRUCT()
@@ -35,12 +48,17 @@ struct COGENGINE_API FCogEngineSpawnGroup
//-------------------------------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------------------------------
UCLASS(Blueprintable) UCLASS(Blueprintable)
class COGENGINE_API UCogEngineDataAsset_Spawns : public UPrimaryDataAsset class COGENGINE_API UCogEngineDataAsset : public UPrimaryDataAsset
{ {
GENERATED_BODY() GENERATED_BODY()
public: public:
UPROPERTY(EditAnywhere, meta = (TitleProperty = "Name")) UCogEngineDataAsset() {}
UPROPERTY(Category = "Spawns", EditAnywhere, meta = (TitleProperty = "Name"))
TArray<FCogEngineSpawnGroup> SpawnGroups; TArray<FCogEngineSpawnGroup> SpawnGroups;
UPROPERTY(Category = "Collisions", EditAnywhere, meta = (TitleProperty = "Channel"))
TArray<FCogCollisionChannel> Channels;
}; };
@@ -1,32 +0,0 @@
#pragma once
#include "CoreMinimal.h"
#include "Engine/DataAsset.h"
#include "CogEngineDataAsset_Collisions.generated.h"
//--------------------------------------------------------------------------------------------------------------------------
USTRUCT()
struct COGENGINE_API FCogCollisionChannel
{
GENERATED_BODY()
UPROPERTY(EditAnywhere)
TEnumAsByte<ECollisionChannel> Channel = ECollisionChannel::ECC_WorldStatic;
UPROPERTY(EditAnywhere)
FLinearColor Color = FLinearColor(0.5f, 0.5f, 0.5f, 1.0f);
};
//--------------------------------------------------------------------------------------------------------------------------
UCLASS(Blueprintable)
class COGENGINE_API UCogEngineDataAsset_Collisions : public UPrimaryDataAsset
{
GENERATED_BODY()
public:
UCogEngineDataAsset_Collisions() {}
UPROPERTY(EditAnywhere, meta = (TitleProperty = "Channel"))
TArray<FCogCollisionChannel> Channels;
};
@@ -15,7 +15,7 @@ public:
UCogEngineWindow_Collisions(); UCogEngineWindow_Collisions();
void SetCollisionsAsset(const UCogEngineDataAsset_Collisions* Asset); void SetAsset(const UCogEngineDataAsset* Asset);
private: private:
@@ -29,7 +29,7 @@ private:
FColor Color; FColor Color;
}; };
TWeakObjectPtr<UCogEngineDataAsset_Collisions> CollisionsAsset; TWeakObjectPtr<UCogEngineDataAsset> CollisionsAsset;
FChannel Channels[ECC_MAX]; FChannel Channels[ECC_MAX];
@@ -4,7 +4,7 @@
#include "CogWindow.h" #include "CogWindow.h"
#include "CogEngineWindow_Spawns.generated.h" #include "CogEngineWindow_Spawns.generated.h"
class UCogEngineDataAsset_Spawns; class UCogEngineDataAsset;
struct FCogEngineSpawnGroup; struct FCogEngineSpawnGroup;
UCLASS() UCLASS()
@@ -14,9 +14,9 @@ class COGENGINE_API UCogEngineWindow_Spawns : public UCogWindow
public: public:
const UCogEngineDataAsset_Spawns* GetSpawnsAsset() const { return SpawnAsset; } const UCogEngineDataAsset* GetSpawnsAsset() const { return SpawnAsset; }
void SetSpawnsAsset(const UCogEngineDataAsset_Spawns* Value) { SpawnAsset = Value; } void SetAsset(const UCogEngineDataAsset* Value) { SpawnAsset = Value; }
protected: protected:
@@ -30,5 +30,5 @@ protected:
private: private:
const UCogEngineDataAsset_Spawns* SpawnAsset = nullptr; const UCogEngineDataAsset* SpawnAsset = nullptr;
}; };
@@ -1,6 +1,6 @@
#include "CogInputWindow_Actions.h" #include "CogInputWindow_Actions.h"
#include "CogInputDataAsset_Actions.h" #include "CogInputDataAsset.h"
#include "CogWindowWidgets.h" #include "CogWindowWidgets.h"
#include "Engine/LocalPlayer.h" #include "Engine/LocalPlayer.h"
#include "EnhancedInputSubsystems.h" #include "EnhancedInputSubsystems.h"
@@ -15,7 +15,7 @@ void UCogInputWindow_Actions::RenderHelp()
"This window displays the current state of each Input Action. " "This window displays the current state of each Input Action. "
"It can also be used to inject inputs to help debugging. " "It can also be used to inject inputs to help debugging. "
"The input action are read from a Input Mapping Context defined in '%s' data asset. " "The input action are read from a Input Mapping Context defined in '%s' data asset. "
, TCHAR_TO_ANSI(*GetNameSafe(ActionsAsset.Get())) , TCHAR_TO_ANSI(*GetNameSafe(Asset.Get()))
); );
} }
@@ -30,13 +30,13 @@ void UCogInputWindow_Actions::RenderContent()
{ {
Super::RenderContent(); Super::RenderContent();
if (ActionsAsset == nullptr) if (Asset == nullptr)
{ {
ImGui::Text("No Actions Asset"); ImGui::Text("No Actions Asset");
return; return;
} }
if (ActionsAsset->MappingContext == nullptr) if (Asset->MappingContext == nullptr)
{ {
ImGui::Text("No MappingContext"); ImGui::Text("No MappingContext");
return; return;
@@ -77,7 +77,7 @@ void UCogInputWindow_Actions::RenderContent()
if (Actions.Num() == 0) if (Actions.Num() == 0)
{ {
for (const FEnhancedActionKeyMapping& Mapping : ActionsAsset->MappingContext->GetMappings()) for (const FEnhancedActionKeyMapping& Mapping : Asset->MappingContext->GetMappings())
{ {
if (Mapping.Action != nullptr && Actions.ContainsByPredicate([&Mapping](const FCogInjectActionInfo& ActionInfo) { return Mapping.Action == ActionInfo.Action; }) == false) if (Mapping.Action != nullptr && Actions.ContainsByPredicate([&Mapping](const FCogInjectActionInfo& ActionInfo) { return Mapping.Action == ActionInfo.Action; }) == false)
{ {
@@ -1,6 +1,7 @@
#include "CogInputWindow_Gamepad.h" #include "CogInputWindow_Gamepad.h"
#include "CogImguiHelper.h" #include "CogImguiHelper.h"
#include "CogInputDataAsset.h"
#include "Engine/LocalPlayer.h" #include "Engine/LocalPlayer.h"
#include "EnhancedInputSubsystems.h" #include "EnhancedInputSubsystems.h"
#include "imgui_internal.h" #include "imgui_internal.h"
@@ -16,10 +17,10 @@ void UCogInputWindow_Gamepad::PreRender(ImGuiWindowFlags& WindowFlags)
if (bShowAsOverlay) if (bShowAsOverlay)
{ {
WindowFlags = ImGuiWindowFlags_NoTitleBar WindowFlags = ImGuiWindowFlags_NoTitleBar
| ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoScrollbar
| ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoCollapse
| ImGuiWindowFlags_NoBackground | ImGuiWindowFlags_NoBackground
| ImGuiWindowFlags_NoResize; | ImGuiWindowFlags_NoResize;
} }
} }
@@ -197,7 +198,7 @@ void UCogInputWindow_Gamepad::RenderContent()
return; return;
} }
if (ActionsAsset != nullptr && ActionsAsset->MappingContext != nullptr) if (Asset != nullptr && Asset->MappingContext != nullptr)
{ {
if (Actions.Num() == 0) if (Actions.Num() == 0)
{ {
@@ -228,7 +229,7 @@ void UCogInputWindow_Gamepad::RenderContent()
Actions.FindOrAdd(EKeys:: Gamepad_DPad_Right); Actions.FindOrAdd(EKeys:: Gamepad_DPad_Right);
Actions.FindOrAdd(EKeys:: Gamepad_DPad_Left); Actions.FindOrAdd(EKeys:: Gamepad_DPad_Left);
for (const FEnhancedActionKeyMapping& Mapping : ActionsAsset->MappingContext->GetMappings()) for (const FEnhancedActionKeyMapping& Mapping : Asset->MappingContext->GetMappings())
{ {
if (Mapping.Action != nullptr) if (Mapping.Action != nullptr)
{ {
@@ -1,18 +1,18 @@
#pragma once #pragma once
#include "CoreMinimal.h" #include "CoreMinimal.h"
#include "CogInputDataAsset_Actions.generated.h" #include "CogInputDataAsset.generated.h"
class UInputAction; class UInputAction;
class UInputMappingContext; class UInputMappingContext;
UCLASS(Blueprintable) UCLASS(Blueprintable)
class COGINPUT_API UCogInputDataAsset_Actions : public UPrimaryDataAsset class COGINPUT_API UCogInputDataAsset : public UPrimaryDataAsset
{ {
GENERATED_BODY() GENERATED_BODY()
public: public:
UCogInputDataAsset_Actions() {} UCogInputDataAsset() {}
UPROPERTY(EditAnywhere) UPROPERTY(EditAnywhere)
TObjectPtr<const UInputMappingContext> MappingContext; TObjectPtr<const UInputMappingContext> MappingContext;
@@ -6,7 +6,7 @@
#include "CogInputWindow_Actions.generated.h" #include "CogInputWindow_Actions.generated.h"
class UInputAction; class UInputAction;
class UCogInputDataAsset_Actions; class UCogInputDataAsset;
UCLASS(Config = Cog) UCLASS(Config = Cog)
class COGINPUT_API UCogInputWindow_Actions : public UCogWindow class COGINPUT_API UCogInputWindow_Actions : public UCogWindow
@@ -17,7 +17,7 @@ public:
UCogInputWindow_Actions(); UCogInputWindow_Actions();
TWeakObjectPtr<UCogInputDataAsset_Actions> ActionsAsset; TWeakObjectPtr<const UCogInputDataAsset> Asset;
protected: protected:
@@ -5,6 +5,7 @@
#include "CogInputWindow_Gamepad.generated.h" #include "CogInputWindow_Gamepad.generated.h"
class UEnhancedPlayerInput; class UEnhancedPlayerInput;
class UCogInputDataAsset;
struct ImDrawList; struct ImDrawList;
UCLASS(Config = Cog) UCLASS(Config = Cog)
@@ -22,13 +23,16 @@ public:
virtual void RenderTick(float DeltaSeconds) override; virtual void RenderTick(float DeltaSeconds) override;
TWeakObjectPtr<UCogInputDataAsset_Actions> ActionsAsset; TWeakObjectPtr<const UCogInputDataAsset> Asset;
private: private:
void AddButton(const FKey& Key, const ImVec2& Position, const ImVec2& Size, const ImVec2& Alignment, float Rounding, ImDrawFlags Flags = 0); void AddButton(const FKey& Key, const ImVec2& Position, const ImVec2& Size, const ImVec2& Alignment, float Rounding, ImDrawFlags Flags = 0);
void AddStick(const FKey& Key2D, const FKey& KeyBool, bool InvertY, float Amplitude, const ImVec2& Position, float Radius); void AddStick(const FKey& Key2D, const FKey& KeyBool, bool InvertY, float Amplitude, const ImVec2& Position, float Radius);
void InputContextMenu(const FKey& Key, FCogInjectActionInfo* ActionInfoBool, FCogInjectActionInfo* ActionInfo2D); void InputContextMenu(const FKey& Key, FCogInjectActionInfo* ActionInfoBool, FCogInjectActionInfo* ActionInfo2D);
void OnButtonClicked(FCogInjectActionInfo* ActionInfo); void OnButtonClicked(FCogInjectActionInfo* ActionInfo);
UPROPERTY(Config) UPROPERTY(Config)
@@ -61,10 +65,16 @@ private:
TMap<FKey, FCogInjectActionInfo> Actions; TMap<FKey, FCogInjectActionInfo> Actions;
UEnhancedPlayerInput* Input = nullptr; UEnhancedPlayerInput* Input = nullptr;
ImDrawList* DrawList = nullptr; ImDrawList* DrawList = nullptr;
float RepeatPeriod = 0.5f; float RepeatPeriod = 0.5f;
float RepeatTime = 0.0f; float RepeatTime = 0.0f;
ImVec2 CanvasMin; ImVec2 CanvasMin;
ImVec2 CanvasSize; ImVec2 CanvasSize;
ImVec2 CanvasMax; ImVec2 CanvasMax;
}; };
+17 -14
View File
@@ -20,8 +20,7 @@
#include "CogAbilityWindow_Tweaks.h" #include "CogAbilityWindow_Tweaks.h"
#include "CogDebugDrawImGui.h" #include "CogDebugDrawImGui.h"
#include "CogDebugPlot.h" #include "CogDebugPlot.h"
#include "CogEngineDataAsset_Collisions.h" #include "CogEngineDataAsset.h"
#include "CogEngineDataAsset_Spawns.h"
#include "CogEngineModule.h" #include "CogEngineModule.h"
#include "CogEngineWindow_Collisions.h" #include "CogEngineWindow_Collisions.h"
#include "CogEngineWindow_DebugSettings.h" #include "CogEngineWindow_DebugSettings.h"
@@ -38,7 +37,7 @@
#include "CogEngineWindow_Stats.h" #include "CogEngineWindow_Stats.h"
#include "CogEngineWindow_TimeScale.h" #include "CogEngineWindow_TimeScale.h"
#include "CogImguiModule.h" #include "CogImguiModule.h"
#include "CogInputDataAsset_Actions.h" #include "CogInputDataAsset.h"
#include "CogInputWindow_Actions.h" #include "CogInputWindow_Actions.h"
#include "CogInputWindow_Gamepad.h" #include "CogInputWindow_Gamepad.h"
#include "CogWindowManager.h" #include "CogWindowManager.h"
@@ -127,8 +126,10 @@ void ACogSampleGameState::InitializeCog()
//--------------------------------------- //---------------------------------------
// Engine // Engine
//--------------------------------------- //---------------------------------------
const UCogEngineDataAsset* EngineAsset = GetFirstAssetByClass<UCogEngineDataAsset>();
UCogEngineWindow_Collisions* CollisionsWindow = CogWindowManager->CreateWindow<UCogEngineWindow_Collisions>("Engine.Collision"); UCogEngineWindow_Collisions* CollisionsWindow = CogWindowManager->CreateWindow<UCogEngineWindow_Collisions>("Engine.Collision");
CollisionsWindow->SetCollisionsAsset(GetFirstAssetByClass<UCogEngineDataAsset_Collisions>()); CollisionsWindow->SetAsset(EngineAsset);
CogWindowManager->CreateWindow<UCogEngineWindow_DebugSettings>("Engine.Debug Settings"); CogWindowManager->CreateWindow<UCogEngineWindow_DebugSettings>("Engine.Debug Settings");
@@ -154,7 +155,7 @@ void ACogSampleGameState::InitializeCog()
CogWindowManager->CreateWindow<UCogEngineWindow_Skeleton>("Engine.Skeleton"); CogWindowManager->CreateWindow<UCogEngineWindow_Skeleton>("Engine.Skeleton");
UCogEngineWindow_Spawns* SpawnWindow = CogWindowManager->CreateWindow<UCogEngineWindow_Spawns>("Engine.Spawns"); UCogEngineWindow_Spawns* SpawnWindow = CogWindowManager->CreateWindow<UCogEngineWindow_Spawns>("Engine.Spawns");
SpawnWindow->SetSpawnsAsset(GetFirstAssetByClass<UCogEngineDataAsset_Spawns>()); SpawnWindow->SetAsset(EngineAsset);
UCogEngineWindow_Stats* StatsWindow = CogWindowManager->CreateWindow<UCogEngineWindow_Stats>("Engine.Stats"); UCogEngineWindow_Stats* StatsWindow = CogWindowManager->CreateWindow<UCogEngineWindow_Stats>("Engine.Stats");
@@ -163,36 +164,38 @@ void ACogSampleGameState::InitializeCog()
//--------------------------------------- //---------------------------------------
// Abilities // Abilities
//--------------------------------------- //---------------------------------------
const UCogAbilityDataAsset* AbilitiesAsset = GetFirstAssetByClass<UCogAbilityDataAsset>(); const UCogAbilityDataAsset* AbilityAsset = GetFirstAssetByClass<UCogAbilityDataAsset>();
UCogAbilityWindow_Abilities* AbilitiesWindow = CogWindowManager->CreateWindow<UCogAbilityWindow_Abilities>("Gameplay.Abilities"); UCogAbilityWindow_Abilities* AbilitiesWindow = CogWindowManager->CreateWindow<UCogAbilityWindow_Abilities>("Gameplay.Abilities");
AbilitiesWindow->Asset = AbilitiesAsset; AbilitiesWindow->Asset = AbilityAsset;
UCogAbilityWindow_Attributes* AttributesWindow = CogWindowManager->CreateWindow<UCogAbilityWindow_Attributes>("Gameplay.Attributes"); UCogAbilityWindow_Attributes* AttributesWindow = CogWindowManager->CreateWindow<UCogAbilityWindow_Attributes>("Gameplay.Attributes");
AttributesWindow->Asset = AbilitiesAsset; AttributesWindow->Asset = AbilityAsset;
UCogAbilityWindow_Cheats* CheatsWindow = CogWindowManager->CreateWindow<UCogAbilityWindow_Cheats>("Gameplay.Cheats"); UCogAbilityWindow_Cheats* CheatsWindow = CogWindowManager->CreateWindow<UCogAbilityWindow_Cheats>("Gameplay.Cheats");
CheatsWindow->SetAsset(AbilitiesAsset); CheatsWindow->SetAsset(AbilityAsset);
UCogAbilityWindow_Effects* EffectsWindow = CogWindowManager->CreateWindow<UCogAbilityWindow_Effects>("Gameplay.Effects"); UCogAbilityWindow_Effects* EffectsWindow = CogWindowManager->CreateWindow<UCogAbilityWindow_Effects>("Gameplay.Effects");
EffectsWindow->Asset = AbilitiesAsset; EffectsWindow->Asset = AbilityAsset;
UCogAbilityWindow_Pools* PoolsWindow = CogWindowManager->CreateWindow<UCogAbilityWindow_Pools>("Gameplay.Pools"); UCogAbilityWindow_Pools* PoolsWindow = CogWindowManager->CreateWindow<UCogAbilityWindow_Pools>("Gameplay.Pools");
PoolsWindow->Asset = AbilitiesAsset; PoolsWindow->Asset = AbilityAsset;
CogWindowManager->CreateWindow<UCogAbilityWindow_Tags>("Gameplay.Tags"); CogWindowManager->CreateWindow<UCogAbilityWindow_Tags>("Gameplay.Tags");
UCogAbilityWindow_Tweaks* TweaksWindow = CogWindowManager->CreateWindow<UCogAbilityWindow_Tweaks>("Gameplay.Tweaks"); UCogAbilityWindow_Tweaks* TweaksWindow = CogWindowManager->CreateWindow<UCogAbilityWindow_Tweaks>("Gameplay.Tweaks");
TweaksWindow->Asset = AbilitiesAsset; TweaksWindow->Asset = AbilityAsset;
//--------------------------------------- //---------------------------------------
// Input // Input
//--------------------------------------- //---------------------------------------
const UCogInputDataAsset* InputAsset = GetFirstAssetByClass<UCogInputDataAsset>();
UCogInputWindow_Actions* ActionsWindow = CogWindowManager->CreateWindow<UCogInputWindow_Actions>("Input.Actions"); UCogInputWindow_Actions* ActionsWindow = CogWindowManager->CreateWindow<UCogInputWindow_Actions>("Input.Actions");
ActionsWindow->ActionsAsset = GetFirstAssetByClass<UCogInputDataAsset_Actions>(); ActionsWindow->Asset = InputAsset;
UCogInputWindow_Gamepad* GamepadWindow = CogWindowManager->CreateWindow<UCogInputWindow_Gamepad>("Input.Gamepad"); UCogInputWindow_Gamepad* GamepadWindow = CogWindowManager->CreateWindow<UCogInputWindow_Gamepad>("Input.Gamepad");
GamepadWindow->ActionsAsset = GetFirstAssetByClass<UCogInputDataAsset_Actions>(); GamepadWindow->Asset = InputAsset;
//--------------------------------------- //---------------------------------------
// Main Menu Widget // Main Menu Widget