diff --git a/Config/DefaultGame.ini b/Config/DefaultGame.ini index d7d116c..3b6b285 100644 --- a/Config/DefaultGame.ini +++ b/Config/DefaultGame.ini @@ -12,3 +12,16 @@ GlobalGameplayCueManagerClass=/Script/CogSample.CogSampleGameplayCueManager bInitializeAllLoadedRegistries=False bIgnoreMissingCookedAssetRegistryData=False +[/Script/Engine.AssetManagerSettings] +-PrimaryAssetTypesToScan=(PrimaryAssetType="Map",AssetBaseClass=/Script/Engine.World,bHasBlueprintClasses=False,bIsEditorOnly=True,Directories=((Path="/Game/Maps")),SpecificAssets=,Rules=(Priority=-1,ChunkId=-1,bApplyRecursively=True,CookRule=Unknown)) +-PrimaryAssetTypesToScan=(PrimaryAssetType="PrimaryAssetLabel",AssetBaseClass=/Script/Engine.PrimaryAssetLabel,bHasBlueprintClasses=False,bIsEditorOnly=True,Directories=((Path="/Game")),SpecificAssets=,Rules=(Priority=-1,ChunkId=-1,bApplyRecursively=True,CookRule=Unknown)) ++PrimaryAssetTypesToScan=(PrimaryAssetType="Map",AssetBaseClass="/Script/Engine.World",bHasBlueprintClasses=False,bIsEditorOnly=True,Directories=((Path="/Game/Maps")),SpecificAssets=,Rules=(Priority=-1,ChunkId=-1,bApplyRecursively=True,CookRule=Unknown)) ++PrimaryAssetTypesToScan=(PrimaryAssetType="PrimaryAssetLabel",AssetBaseClass="/Script/Engine.PrimaryAssetLabel",bHasBlueprintClasses=False,bIsEditorOnly=True,Directories=((Path="/Game")),SpecificAssets=,Rules=(Priority=-1,ChunkId=-1,bApplyRecursively=True,CookRule=Unknown)) ++PrimaryAssetTypesToScan=(PrimaryAssetType="Cog",AssetBaseClass="/Script/Engine.PrimaryDataAsset",bHasBlueprintClasses=False,bIsEditorOnly=False,Directories=((Path="/Game/Core/Debug/")),SpecificAssets=,Rules=(Priority=-1,ChunkId=-1,bApplyRecursively=True,CookRule=DevelopmentAlwaysCook)) +bOnlyCookProductionAssets=False +bShouldManagerDetermineTypeAndName=False +bShouldGuessTypeAndNameInEditor=True +bShouldAcquireMissingChunksOnLoad=False +bShouldWarnAboutInvalidAssets=True +MetaDataTagsForAssetRegistry=() + diff --git a/Plugins/CogAI/CogAI.uplugin b/Plugins/CogAI/CogAI.uplugin new file mode 100644 index 0000000..ee2ca84 --- /dev/null +++ b/Plugins/CogAI/CogAI.uplugin @@ -0,0 +1,30 @@ +{ + "FileVersion": 3, + "Version": 1, + "VersionName": "1.0", + "FriendlyName": "CogAI", + "Description": "", + "Category": "Other", + "CreatedBy": "Arnaud Jamin", + "CreatedByURL": "", + "DocsURL": "", + "MarketplaceURL": "", + "SupportURL": "", + "CanContainContent": true, + "IsBetaVersion": false, + "IsExperimentalVersion": false, + "Installed": false, + "Modules": [ + { + "Name": "CogAI", + "Type": "Runtime", + "LoadingPhase": "Default" + } + ], + "Plugins": [ + { + "Name": "Cog", + "Enabled": true + } + ] +} \ No newline at end of file diff --git a/Plugins/CogAI/Source/CogAI/CogAI.Build.cs b/Plugins/CogAI/Source/CogAI/CogAI.Build.cs new file mode 100644 index 0000000..ba8d7b6 --- /dev/null +++ b/Plugins/CogAI/Source/CogAI/CogAI.Build.cs @@ -0,0 +1,47 @@ +using UnrealBuildTool; + +public class CogAI : ModuleRules +{ + public CogAI(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PublicIncludePaths.AddRange( + new string[] { + } + ); + + + PrivateIncludePaths.AddRange( + new string[] { + } + ); + + + PublicDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CogImgui", + "CogDebug", + "CogWindow", + } + ); + + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "CoreUObject", + "Engine", + } + ); + + + DynamicallyLoadedModuleNames.AddRange( + new string[] + { + } + ); + } +} diff --git a/Plugins/CogAI/Source/CogAI/Private/CogAIModule.cpp b/Plugins/CogAI/Source/CogAI/Private/CogAIModule.cpp new file mode 100644 index 0000000..adbb216 --- /dev/null +++ b/Plugins/CogAI/Source/CogAI/Private/CogAIModule.cpp @@ -0,0 +1,17 @@ +#include "CogAIModule.h" + +#define LOCTEXT_NAMESPACE "FCogAIModule" + +//-------------------------------------------------------------------------------------------------------------------------- +void FCogAIModule::StartupModule() +{ +} + +//-------------------------------------------------------------------------------------------------------------------------- +void FCogAIModule::ShutdownModule() +{ +} + +#undef LOCTEXT_NAMESPACE + +IMPLEMENT_MODULE(FCogAIModule, CogAI) \ No newline at end of file diff --git a/Plugins/CogAI/Source/CogAI/Private/CogAIWindow_Blackboard.cpp b/Plugins/CogAI/Source/CogAI/Private/CogAIWindow_Blackboard.cpp new file mode 100644 index 0000000..a5d946a --- /dev/null +++ b/Plugins/CogAI/Source/CogAI/Private/CogAIWindow_Blackboard.cpp @@ -0,0 +1,37 @@ +#include "CogAIWindow_Blackboard.h" + +#include "CogWindowWidgets.h" + +//-------------------------------------------------------------------------------------------------------------------------- +void UCogAIWindow_Blackboard::RenderHelp() +{ + ImGui::Text( + "This window displays the blackboard of the selected actor. " + ); +} + +//-------------------------------------------------------------------------------------------------------------------------- +UCogAIWindow_Blackboard::UCogAIWindow_Blackboard() +{ + bHasMenu = true; +} + +//-------------------------------------------------------------------------------------------------------------------------- +void UCogAIWindow_Blackboard::RenderContent() +{ + Super::RenderContent(); + + if (ImGui::BeginTable("Actions", 3, ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_Resizable | ImGuiTableFlags_NoBordersInBodyUntilResize)) + { + ImGui::TableSetupColumn("Action", ImGuiTableColumnFlags_WidthFixed); + ImGui::TableSetupColumn("Value", ImGuiTableColumnFlags_WidthStretch); + ImGui::TableSetupColumn("Inject", ImGuiTableColumnFlags_WidthStretch); + ImGui::TableHeadersRow(); + + + ImGui::TableNextColumn(); + ImGui::TableNextColumn(); + + ImGui::EndTable(); + } +} diff --git a/Plugins/CogAI/Source/CogAI/Public/CogAIDataAsset.h b/Plugins/CogAI/Source/CogAI/Public/CogAIDataAsset.h new file mode 100644 index 0000000..7c8ee07 --- /dev/null +++ b/Plugins/CogAI/Source/CogAI/Public/CogAIDataAsset.h @@ -0,0 +1,14 @@ +#pragma once + +#include "CoreMinimal.h" +#include "CogAIDataAsset.generated.h" + +UCLASS(Blueprintable) +class COGAI_API UCogAIDataAsset : public UPrimaryDataAsset +{ + GENERATED_BODY() + +public: + UCogAIDataAsset() {} + +}; diff --git a/Plugins/CogAI/Source/CogAI/Public/CogAIModule.h b/Plugins/CogAI/Source/CogAI/Public/CogAIModule.h new file mode 100644 index 0000000..3347eb1 --- /dev/null +++ b/Plugins/CogAI/Source/CogAI/Public/CogAIModule.h @@ -0,0 +1,20 @@ +#pragma once + +#include "CoreMinimal.h" +#include "Modules/ModuleManager.h" + +class COGAI_API FCogAIModule : public IModuleInterface +{ +public: + + static inline FCogAIModule& Get() + { + return FModuleManager::LoadModuleChecked("CogAI"); + } + + /** IModuleInterface implementation */ + virtual void StartupModule() override; + virtual void ShutdownModule() override; + +private: +}; diff --git a/Plugins/CogAI/Source/CogAI/Public/CogAIWindow_Blackboard.h b/Plugins/CogAI/Source/CogAI/Public/CogAIWindow_Blackboard.h new file mode 100644 index 0000000..4fa8560 --- /dev/null +++ b/Plugins/CogAI/Source/CogAI/Public/CogAIWindow_Blackboard.h @@ -0,0 +1,33 @@ +#pragma once + +#include "CoreMinimal.h" +#include "CogWindow.h" +#include "CogAIWindow_Blackboard.generated.h" + +class UCogAIDataAsset; + +UCLASS(Config = Cog) +class COGAI_API UCogAIWindow_Blackboard : public UCogWindow +{ + GENERATED_BODY() + +public: + + UCogAIWindow_Blackboard(); + + //const UCogAIDataAsset* GetAsset() const { return Asset.Get(); } + + //void SetAsset(const UCogAIDataAsset* Value) { Asset = Value; } + +protected: + + void RenderHelp(); + + virtual void RenderContent() override; + +private: + + + //UPROPERTY() + //TWeakObjectPtr Asset = nullptr; +}; diff --git a/Source/CogSample/CogSample.Build.cs b/Source/CogSample/CogSample.Build.cs index 64f3500..0d9e4e8 100644 --- a/Source/CogSample/CogSample.Build.cs +++ b/Source/CogSample/CogSample.Build.cs @@ -28,8 +28,9 @@ public class CogSample : ModuleRules "CogImgui", "CogWindow", "CogEngine", - "CogInput", "CogAbility", + "CogAI", + "CogInput", }); } } diff --git a/Source/CogSample/CogSampleGameState.cpp b/Source/CogSample/CogSampleGameState.cpp index e1e113e..6cc6ff9 100644 --- a/Source/CogSample/CogSampleGameState.cpp +++ b/Source/CogSample/CogSampleGameState.cpp @@ -18,6 +18,7 @@ #include "CogAbilityWindow_Pools.h" #include "CogAbilityWindow_Tags.h" #include "CogAbilityWindow_Tweaks.h" +#include "CogAIWindow_Blackboard.h" #include "CogDebugDrawImGui.h" #include "CogDebugPlot.h" #include "CogEngineDataAsset.h" @@ -202,6 +203,14 @@ void ACogSampleGameState::InitializeCog() UCogAbilityWindow_Tweaks* TweaksWindow = CogWindowManager->CreateWindow("Gameplay.Tweaks"); TweaksWindow->SetAsset(AbilityAsset); + //--------------------------------------- + // AI + //--------------------------------------- + //const UCogAIDataAsset* InputAsset = GetFirstAssetByClass(); + + UCogAIWindow_Blackboard* BlackboardWindow = CogWindowManager->CreateWindow("AI.Blackboard"); + //BlackboardWindow->SetAsset(InputAsset); + //--------------------------------------- // Input //---------------------------------------