From 887f7f5a853f8a03efe0e9c5deedc72b7cb7b2ca Mon Sep 17 00:00:00 2001 From: Alec Otto <140107635+AstaMimic@users.noreply.github.com> Date: Sat, 16 Aug 2025 03:42:03 -0500 Subject: [PATCH] Link UnrealMLAgents against UnrealEd in editor builds --- Config/DefaultEngine.ini | 11 ++-- Config/DefaultGame.ini | 2 +- .../Private/SimCadenceControllerModule.cpp | 36 ----------- .../Private/TrainingEditorEngine.cpp | 17 ------ .../Public/SimCadenceControllerModule.h | 9 --- .../Public/TrainingEditorEngine.h | 28 --------- .../SimCadenceController.Build.cs | 25 -------- .../Private/SimCadenceEditorModule.cpp | 36 +++++++++++ .../Private/TrainingEditorEngine.cpp | 23 ++++++++ .../Public/SimCadenceEditorModule.h | 9 +++ .../Public/TrainingEditorEngine.h | 20 +++++++ .../SimCadenceEditor.Build.cs | 20 +++++++ .../Private/SimCadenceEngineSubsystem.cpp | 0 .../Private/SimCadencePhysicsBridge.cpp | 0 .../Private/SimCadenceRuntimeModule.cpp | 4 ++ .../Private/SimCadenceSettings.cpp | 3 +- .../Private/SimFixedCustomTimeStep.cpp | 0 .../Private/TrainingGameEngine.cpp | 0 .../Public/SimCadenceEngineSubsystem.h | 2 +- .../Public/SimCadencePhysicsBridge.h | 2 +- .../Public/SimCadenceRuntimeModule.h | 9 +++ .../Public/SimCadenceSettings.h | 2 +- .../Public/SimFixedCustomTimeStep.h | 2 +- .../Public/TrainingGameEngine.h | 2 +- .../SimCadenceRuntime.Build.cs | 17 ++++++ Source/UnrealMLAgents/Private/Academy.cpp | 8 ++- Source/UnrealMLAgents/UnrealMLAgents.Build.cs | 19 ++++-- UnrealMLAgents.uplugin | 59 +++++++++---------- 28 files changed, 199 insertions(+), 166 deletions(-) delete mode 100644 Source/SimCadenceController/Private/SimCadenceControllerModule.cpp delete mode 100644 Source/SimCadenceController/Private/TrainingEditorEngine.cpp delete mode 100644 Source/SimCadenceController/Public/SimCadenceControllerModule.h delete mode 100644 Source/SimCadenceController/Public/TrainingEditorEngine.h delete mode 100644 Source/SimCadenceController/SimCadenceController.Build.cs create mode 100644 Source/SimCadenceEditor/Private/SimCadenceEditorModule.cpp create mode 100644 Source/SimCadenceEditor/Private/TrainingEditorEngine.cpp create mode 100644 Source/SimCadenceEditor/Public/SimCadenceEditorModule.h create mode 100644 Source/SimCadenceEditor/Public/TrainingEditorEngine.h create mode 100644 Source/SimCadenceEditor/SimCadenceEditor.Build.cs rename Source/{SimCadenceController => SimCadenceRuntime}/Private/SimCadenceEngineSubsystem.cpp (100%) rename Source/{SimCadenceController => SimCadenceRuntime}/Private/SimCadencePhysicsBridge.cpp (100%) create mode 100644 Source/SimCadenceRuntime/Private/SimCadenceRuntimeModule.cpp rename Source/{SimCadenceController => SimCadenceRuntime}/Private/SimCadenceSettings.cpp (98%) rename Source/{SimCadenceController => SimCadenceRuntime}/Private/SimFixedCustomTimeStep.cpp (100%) rename Source/{SimCadenceController => SimCadenceRuntime}/Private/TrainingGameEngine.cpp (100%) rename Source/{SimCadenceController => SimCadenceRuntime}/Public/SimCadenceEngineSubsystem.h (93%) rename Source/{SimCadenceController => SimCadenceRuntime}/Public/SimCadencePhysicsBridge.h (90%) create mode 100644 Source/SimCadenceRuntime/Public/SimCadenceRuntimeModule.h rename Source/{SimCadenceController => SimCadenceRuntime}/Public/SimCadenceSettings.h (96%) rename Source/{SimCadenceController => SimCadenceRuntime}/Public/SimFixedCustomTimeStep.h (83%) rename Source/{SimCadenceController => SimCadenceRuntime}/Public/TrainingGameEngine.h (76%) create mode 100644 Source/SimCadenceRuntime/SimCadenceRuntime.Build.cs diff --git a/Config/DefaultEngine.ini b/Config/DefaultEngine.ini index 9756d48..e1721f9 100644 --- a/Config/DefaultEngine.ini +++ b/Config/DefaultEngine.ini @@ -1,7 +1,10 @@ [/Script/Engine.Engine] -GameEngine=/Script/SimCadenceController.TrainingGameEngine - -[/Script/UnrealEd.EditorEngine] -EditorEngine=/Script/SimCadenceController.TrainingEditorEngine +GameEngine=/Script/SimCadenceRuntime.TrainingGameEngine +UnrealEdEngine=/Script/SimCadenceEditor.TrainingEditorEngine +CustomTimeStepClassName=/Script/SimCadenceRuntime.SimFixedCustomTimeStep r.VSyncEditor=0 +[/Script/Engine.PhysicsSettings] +bSubstepping=True +MaxSubstepDeltaTime=0.008333 +MaxSubsteps=1 diff --git a/Config/DefaultGame.ini b/Config/DefaultGame.ini index 816da3c..2607608 100644 --- a/Config/DefaultGame.ini +++ b/Config/DefaultGame.ini @@ -1,4 +1,4 @@ -[/Script/SimCadenceController.SimCadenceSettings] +[/Script/SimCadenceRuntime.SimCadenceSettings] Mode=Realtime FixedHz=60.0 bUncapRealtimeRendering=True diff --git a/Source/SimCadenceController/Private/SimCadenceControllerModule.cpp b/Source/SimCadenceController/Private/SimCadenceControllerModule.cpp deleted file mode 100644 index 768824e..0000000 --- a/Source/SimCadenceController/Private/SimCadenceControllerModule.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include "SimCadenceControllerModule.h" -#include "Modules/ModuleManager.h" -#if WITH_EDITOR - #include "ISettingsModule.h" - #include "SimCadenceSettings.h" - #define LOCTEXT_NAMESPACE "FSimCadenceControllerModule" -#endif - -IMPLEMENT_MODULE(FSimCadenceControllerModule, SimCadenceController) - -void FSimCadenceControllerModule::StartupModule() -{ -#if WITH_EDITOR - if (ISettingsModule* SettingsModule = FModuleManager::LoadModulePtr(TEXT("Settings"))) - { - SettingsModule->RegisterSettings(TEXT("Project"), TEXT("Plugins"), TEXT("SimCadence"), - LOCTEXT("SimCadenceName", "Sim Cadence"), - LOCTEXT("SimCadenceDesc", "Physics-authoritative cadence and training controls."), - GetMutableDefault()); - } -#endif -} - -void FSimCadenceControllerModule::ShutdownModule() -{ -#if WITH_EDITOR - if (ISettingsModule* SettingsModule = FModuleManager::LoadModulePtr(TEXT("Settings"))) - { - SettingsModule->UnregisterSettings(TEXT("Project"), TEXT("Plugins"), TEXT("SimCadence")); - } -#endif -} - -#if WITH_EDITOR - #undef LOCTEXT_NAMESPACE -#endif \ No newline at end of file diff --git a/Source/SimCadenceController/Private/TrainingEditorEngine.cpp b/Source/SimCadenceController/Private/TrainingEditorEngine.cpp deleted file mode 100644 index 49f43aa..0000000 --- a/Source/SimCadenceController/Private/TrainingEditorEngine.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "TrainingEditorEngine.h" - -#if WITH_SIMCADENCE_TRAINING_ENGINE -#include "SimCadenceEngineSubsystem.h" -#include "Engine/Engine.h" - -void UTrainingEditorEngine::RedrawViewports(bool bShouldPresent) -{ - bool bPresent = bShouldPresent; - if (USimCadenceEngineSubsystem* Sub = GEngine ? GEngine->GetEngineSubsystem() : nullptr) - { - bPresent = Sub->ShouldSubmitFrame(); - } - Super::RedrawViewports(bPresent); -} - -#endif // WITH_SIMCADENCE_TRAINING_ENGINE diff --git a/Source/SimCadenceController/Public/SimCadenceControllerModule.h b/Source/SimCadenceController/Public/SimCadenceControllerModule.h deleted file mode 100644 index 2d7b081..0000000 --- a/Source/SimCadenceController/Public/SimCadenceControllerModule.h +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once -#include "Modules/ModuleManager.h" - -class FSimCadenceControllerModule : public IModuleInterface -{ -public: - virtual void StartupModule() override; - virtual void ShutdownModule() override; -}; \ No newline at end of file diff --git a/Source/SimCadenceController/Public/TrainingEditorEngine.h b/Source/SimCadenceController/Public/TrainingEditorEngine.h deleted file mode 100644 index 4274fd3..0000000 --- a/Source/SimCadenceController/Public/TrainingEditorEngine.h +++ /dev/null @@ -1,28 +0,0 @@ -#pragma once - -#include "CoreMinimal.h" - -#if WITH_SIMCADENCE_TRAINING_ENGINE - #include "UnrealEd/UnrealEdEngine.h" - #if (ENGINE_MAJOR_VERSION >= 5) - #define TRAINING_EDITOR_ENGINE_SUPER UUnrealEdEngine - #else - #define TRAINING_EDITOR_ENGINE_SUPER UEditorEngine - #endif -#else - #include "Engine/Engine.h" - #define TRAINING_EDITOR_ENGINE_SUPER UEngine -#endif - -#include "TrainingEditorEngine.generated.h" - -UCLASS(config = Engine) -class SIMCADENCECONTROLLER_API UTrainingEditorEngine : public TRAINING_EDITOR_ENGINE_SUPER -{ - GENERATED_BODY() - -#if WITH_SIMCADENCE_TRAINING_ENGINE -protected: - virtual void RedrawViewports(bool bShouldPresent) override; -#endif -}; diff --git a/Source/SimCadenceController/SimCadenceController.Build.cs b/Source/SimCadenceController/SimCadenceController.Build.cs deleted file mode 100644 index cd28f82..0000000 --- a/Source/SimCadenceController/SimCadenceController.Build.cs +++ /dev/null @@ -1,25 +0,0 @@ -using UnrealBuildTool; - -public class SimCadenceController : ModuleRules -{ - public SimCadenceController(ReadOnlyTargetRules Target) : base(Target) - { - PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; - - PublicDependencyModuleNames.AddRange( - new string[] { "Core", "CoreUObject", "Engine", "Projects", "DeveloperSettings" }); - - PrivateDependencyModuleNames.AddRange( - new string[] { "Slate", "SlateCore", "InputCore", "RenderCore", "RHI", "PhysicsCore" }); - - if (Target.bBuildEditor) - { - PrivateDependencyModuleNames.AddRange(new string[] { "UnrealEd", "Settings", "EditorFramework" }); - PublicDefinitions.Add("WITH_SIMCADENCE_TRAINING_ENGINE=1"); - } - else - { - PublicDefinitions.Add("WITH_SIMCADENCE_TRAINING_ENGINE=0"); - } - } -} diff --git a/Source/SimCadenceEditor/Private/SimCadenceEditorModule.cpp b/Source/SimCadenceEditor/Private/SimCadenceEditorModule.cpp new file mode 100644 index 0000000..26bed5f --- /dev/null +++ b/Source/SimCadenceEditor/Private/SimCadenceEditorModule.cpp @@ -0,0 +1,36 @@ +#include "SimCadenceEditorModule.h" +#include "Modules/ModuleManager.h" +#if WITH_EDITOR +#include "ISettingsModule.h" +#include "SimCadenceSettings.h" +#define LOCTEXT_NAMESPACE "FSimCadenceEditorModule" +#endif + +IMPLEMENT_MODULE(FSimCadenceEditorModule, SimCadenceEditor) + +void FSimCadenceEditorModule::StartupModule() +{ +#if WITH_EDITOR + if (ISettingsModule* SettingsModule = FModuleManager::LoadModulePtr(TEXT("Settings"))) + { + SettingsModule->RegisterSettings(TEXT("Project"), TEXT("Plugins"), TEXT("SimCadence"), + LOCTEXT("SimCadenceName", "Sim Cadence"), + LOCTEXT("SimCadenceDesc", "Physics-authoritative cadence and training controls."), + GetMutableDefault()); + } +#endif +} + +void FSimCadenceEditorModule::ShutdownModule() +{ +#if WITH_EDITOR + if (ISettingsModule* SettingsModule = FModuleManager::LoadModulePtr(TEXT("Settings"))) + { + SettingsModule->UnregisterSettings(TEXT("Project"), TEXT("Plugins"), TEXT("SimCadence")); + } +#endif +} + +#if WITH_EDITOR +#undef LOCTEXT_NAMESPACE +#endif diff --git a/Source/SimCadenceEditor/Private/TrainingEditorEngine.cpp b/Source/SimCadenceEditor/Private/TrainingEditorEngine.cpp new file mode 100644 index 0000000..88bf330 --- /dev/null +++ b/Source/SimCadenceEditor/Private/TrainingEditorEngine.cpp @@ -0,0 +1,23 @@ +#include "TrainingEditorEngine.h" +#include "SimCadenceEngineSubsystem.h" +#include "Engine/Engine.h" + +void UTrainingEditorEngine::Init(IEngineLoop* InEngineLoop) +{ + Super::Init(InEngineLoop); +} + +void UTrainingEditorEngine::Tick(float DeltaSeconds, bool bIdleMode) +{ + Super::Tick(DeltaSeconds, bIdleMode); +} + +void UTrainingEditorEngine::RedrawViewports(bool bShouldPresent) +{ + bool bPresent = bShouldPresent; + if (USimCadenceEngineSubsystem* Sub = GEngine ? GEngine->GetEngineSubsystem() : nullptr) + { + bPresent = Sub->ShouldSubmitFrame(); + } + Super::RedrawViewports(bPresent); +} diff --git a/Source/SimCadenceEditor/Public/SimCadenceEditorModule.h b/Source/SimCadenceEditor/Public/SimCadenceEditorModule.h new file mode 100644 index 0000000..a74559b --- /dev/null +++ b/Source/SimCadenceEditor/Public/SimCadenceEditorModule.h @@ -0,0 +1,9 @@ +#pragma once +#include "Modules/ModuleManager.h" + +class FSimCadenceEditorModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void ShutdownModule() override; +}; diff --git a/Source/SimCadenceEditor/Public/TrainingEditorEngine.h b/Source/SimCadenceEditor/Public/TrainingEditorEngine.h new file mode 100644 index 0000000..08c0b00 --- /dev/null +++ b/Source/SimCadenceEditor/Public/TrainingEditorEngine.h @@ -0,0 +1,20 @@ +#pragma once + +#include "CoreMinimal.h" +#include "Editor/UnrealEdEngine.h" +#include "TrainingEditorEngine.generated.h" + +class IEngineLoop; + +UCLASS(Config = Engine, Transient) +class SIMCADENCEEDITOR_API UTrainingEditorEngine : public UUnrealEdEngine +{ + GENERATED_BODY() + +public: + virtual void Init(IEngineLoop* InEngineLoop) override; + virtual void Tick(float DeltaSeconds, bool bIdleMode) override; + +protected: + virtual void RedrawViewports(bool bShouldPresent) override; +}; diff --git a/Source/SimCadenceEditor/SimCadenceEditor.Build.cs b/Source/SimCadenceEditor/SimCadenceEditor.Build.cs new file mode 100644 index 0000000..b7bb4dd --- /dev/null +++ b/Source/SimCadenceEditor/SimCadenceEditor.Build.cs @@ -0,0 +1,20 @@ +using UnrealBuildTool; + +public class SimCadenceEditor : ModuleRules +{ + public SimCadenceEditor(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; + + PrivateDependencyModuleNames.AddRange(new string[] { + "Core", "CoreUObject", "Engine", + "UnrealEd", + "SimCadenceRuntime" + }); + + if (!Target.bBuildEditor) + { + throw new BuildException("SimCadenceEditor must be built with the editor."); + } + } +} diff --git a/Source/SimCadenceController/Private/SimCadenceEngineSubsystem.cpp b/Source/SimCadenceRuntime/Private/SimCadenceEngineSubsystem.cpp similarity index 100% rename from Source/SimCadenceController/Private/SimCadenceEngineSubsystem.cpp rename to Source/SimCadenceRuntime/Private/SimCadenceEngineSubsystem.cpp diff --git a/Source/SimCadenceController/Private/SimCadencePhysicsBridge.cpp b/Source/SimCadenceRuntime/Private/SimCadencePhysicsBridge.cpp similarity index 100% rename from Source/SimCadenceController/Private/SimCadencePhysicsBridge.cpp rename to Source/SimCadenceRuntime/Private/SimCadencePhysicsBridge.cpp diff --git a/Source/SimCadenceRuntime/Private/SimCadenceRuntimeModule.cpp b/Source/SimCadenceRuntime/Private/SimCadenceRuntimeModule.cpp new file mode 100644 index 0000000..d898a6a --- /dev/null +++ b/Source/SimCadenceRuntime/Private/SimCadenceRuntimeModule.cpp @@ -0,0 +1,4 @@ +#include "SimCadenceRuntimeModule.h" +#include "Modules/ModuleManager.h" + +IMPLEMENT_MODULE(FSimCadenceRuntimeModule, SimCadenceRuntime) diff --git a/Source/SimCadenceController/Private/SimCadenceSettings.cpp b/Source/SimCadenceRuntime/Private/SimCadenceSettings.cpp similarity index 98% rename from Source/SimCadenceController/Private/SimCadenceSettings.cpp rename to Source/SimCadenceRuntime/Private/SimCadenceSettings.cpp index 68a637c..f898a4e 100644 --- a/Source/SimCadenceController/Private/SimCadenceSettings.cpp +++ b/Source/SimCadenceRuntime/Private/SimCadenceSettings.cpp @@ -14,4 +14,5 @@ void USimCadenceSettings::PostEditChangeProperty(FPropertyChangedEvent& Property } } } -#endif \ No newline at end of file +#endif + diff --git a/Source/SimCadenceController/Private/SimFixedCustomTimeStep.cpp b/Source/SimCadenceRuntime/Private/SimFixedCustomTimeStep.cpp similarity index 100% rename from Source/SimCadenceController/Private/SimFixedCustomTimeStep.cpp rename to Source/SimCadenceRuntime/Private/SimFixedCustomTimeStep.cpp diff --git a/Source/SimCadenceController/Private/TrainingGameEngine.cpp b/Source/SimCadenceRuntime/Private/TrainingGameEngine.cpp similarity index 100% rename from Source/SimCadenceController/Private/TrainingGameEngine.cpp rename to Source/SimCadenceRuntime/Private/TrainingGameEngine.cpp diff --git a/Source/SimCadenceController/Public/SimCadenceEngineSubsystem.h b/Source/SimCadenceRuntime/Public/SimCadenceEngineSubsystem.h similarity index 93% rename from Source/SimCadenceController/Public/SimCadenceEngineSubsystem.h rename to Source/SimCadenceRuntime/Public/SimCadenceEngineSubsystem.h index d3e0fde..9ca908b 100644 --- a/Source/SimCadenceController/Public/SimCadenceEngineSubsystem.h +++ b/Source/SimCadenceRuntime/Public/SimCadenceEngineSubsystem.h @@ -7,7 +7,7 @@ class USimFixedCustomTimeStep; class ASimCadencePhysicsBridge; UCLASS() -class SIMCADENCECONTROLLER_API USimCadenceEngineSubsystem : public UEngineSubsystem +class SIMCADENCERUNTIME_API USimCadenceEngineSubsystem : public UEngineSubsystem { GENERATED_BODY() public: diff --git a/Source/SimCadenceController/Public/SimCadencePhysicsBridge.h b/Source/SimCadenceRuntime/Public/SimCadencePhysicsBridge.h similarity index 90% rename from Source/SimCadenceController/Public/SimCadencePhysicsBridge.h rename to Source/SimCadenceRuntime/Public/SimCadencePhysicsBridge.h index c79ecae..147074c 100644 --- a/Source/SimCadenceController/Public/SimCadencePhysicsBridge.h +++ b/Source/SimCadenceRuntime/Public/SimCadencePhysicsBridge.h @@ -6,7 +6,7 @@ DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FFixedStepEvent, float, FixedDeltaTime); UCLASS(NotBlueprintable, Transient) -class SIMCADENCECONTROLLER_API ASimCadencePhysicsBridge : public AActor +class SIMCADENCERUNTIME_API ASimCadencePhysicsBridge : public AActor { GENERATED_BODY() public: diff --git a/Source/SimCadenceRuntime/Public/SimCadenceRuntimeModule.h b/Source/SimCadenceRuntime/Public/SimCadenceRuntimeModule.h new file mode 100644 index 0000000..fce34e9 --- /dev/null +++ b/Source/SimCadenceRuntime/Public/SimCadenceRuntimeModule.h @@ -0,0 +1,9 @@ +#pragma once +#include "Modules/ModuleManager.h" + +class FSimCadenceRuntimeModule : public IModuleInterface +{ +public: + virtual void StartupModule() override {} + virtual void ShutdownModule() override {} +}; diff --git a/Source/SimCadenceController/Public/SimCadenceSettings.h b/Source/SimCadenceRuntime/Public/SimCadenceSettings.h similarity index 96% rename from Source/SimCadenceController/Public/SimCadenceSettings.h rename to Source/SimCadenceRuntime/Public/SimCadenceSettings.h index b396354..476137a 100644 --- a/Source/SimCadenceController/Public/SimCadenceSettings.h +++ b/Source/SimCadenceRuntime/Public/SimCadenceSettings.h @@ -13,7 +13,7 @@ enum class ESimCadenceMode : uint8 }; UCLASS(Config = Game, DefaultConfig, meta = (DisplayName = "Sim Cadence")) -class SIMCADENCECONTROLLER_API USimCadenceSettings : public UDeveloperSettings +class SIMCADENCERUNTIME_API USimCadenceSettings : public UDeveloperSettings { GENERATED_BODY() public: diff --git a/Source/SimCadenceController/Public/SimFixedCustomTimeStep.h b/Source/SimCadenceRuntime/Public/SimFixedCustomTimeStep.h similarity index 83% rename from Source/SimCadenceController/Public/SimFixedCustomTimeStep.h rename to Source/SimCadenceRuntime/Public/SimFixedCustomTimeStep.h index 74a7229..079d920 100644 --- a/Source/SimCadenceController/Public/SimFixedCustomTimeStep.h +++ b/Source/SimCadenceRuntime/Public/SimFixedCustomTimeStep.h @@ -4,7 +4,7 @@ #include "SimFixedCustomTimeStep.generated.h" UCLASS() -class SIMCADENCECONTROLLER_API USimFixedCustomTimeStep : public UEngineCustomTimeStep +class SIMCADENCERUNTIME_API USimFixedCustomTimeStep : public UEngineCustomTimeStep { GENERATED_BODY() public: diff --git a/Source/SimCadenceController/Public/TrainingGameEngine.h b/Source/SimCadenceRuntime/Public/TrainingGameEngine.h similarity index 76% rename from Source/SimCadenceController/Public/TrainingGameEngine.h rename to Source/SimCadenceRuntime/Public/TrainingGameEngine.h index 490400a..910de30 100644 --- a/Source/SimCadenceController/Public/TrainingGameEngine.h +++ b/Source/SimCadenceRuntime/Public/TrainingGameEngine.h @@ -4,7 +4,7 @@ #include "TrainingGameEngine.generated.h" UCLASS(config = Engine) -class SIMCADENCECONTROLLER_API UTrainingGameEngine : public UGameEngine +class SIMCADENCERUNTIME_API UTrainingGameEngine : public UGameEngine { GENERATED_BODY() protected: diff --git a/Source/SimCadenceRuntime/SimCadenceRuntime.Build.cs b/Source/SimCadenceRuntime/SimCadenceRuntime.Build.cs new file mode 100644 index 0000000..9e1f921 --- /dev/null +++ b/Source/SimCadenceRuntime/SimCadenceRuntime.Build.cs @@ -0,0 +1,17 @@ +using UnrealBuildTool; + +public class SimCadenceRuntime : ModuleRules +{ + public SimCadenceRuntime(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; + + PublicDependencyModuleNames.AddRange(new string[] { + "Core", "CoreUObject", "Engine", "DeveloperSettings" + }); + + PrivateDependencyModuleNames.AddRange(new string[] { + "Projects" + }); + } +} diff --git a/Source/UnrealMLAgents/Private/Academy.cpp b/Source/UnrealMLAgents/Private/Academy.cpp index f7504dd..88da02a 100644 --- a/Source/UnrealMLAgents/Private/Academy.cpp +++ b/Source/UnrealMLAgents/Private/Academy.cpp @@ -3,8 +3,7 @@ #include "UnrealMLAgents/Academy.h" #if WITH_EDITOR - #include "Editor/EditorEngine.h" - #include "Editor.h" +#include "Editor/EditorEngine.h" #endif #include "GenericPlatform/GenericPlatformMisc.h" @@ -222,7 +221,10 @@ void UAcademy::Dispose() void UAcademy::Dispose(bool bIsSimulating) { - + FCoreDelegates::OnExit.RemoveAll(this); +#if WITH_EDITOR + FEditorDelegates::EndPIE.RemoveAll(this); +#endif if (BoundBridge.IsValid()) { BoundBridge->OnFixedStep.RemoveDynamic(this, &UAcademy::HandleFixedStep); diff --git a/Source/UnrealMLAgents/UnrealMLAgents.Build.cs b/Source/UnrealMLAgents/UnrealMLAgents.Build.cs index c09db24..f70fe5d 100644 --- a/Source/UnrealMLAgents/UnrealMLAgents.Build.cs +++ b/Source/UnrealMLAgents/UnrealMLAgents.Build.cs @@ -16,13 +16,20 @@ public UnrealMLAgents(ReadOnlyTargetRules Target) : base(Target) MLAgentsPlatformInstance = GetMLAgentsPlatformInstance(Target); bEnableExceptions = true; - PrivateDependencyModuleNames.AddRange( - new string[] { "Slate", "SlateCore", "Core", "CoreUObject", "Engine", "SimCadenceController" }); + PublicDependencyModuleNames.AddRange( + new string[] { "Core", "CoreUObject", "Engine", "SimCadenceRuntime" }); - if (Target.bBuildEditor) - { - PrivateDependencyModuleNames.AddRange(new string[] { "UnrealEd" }); - } + PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore", "Projects" }); + + if (Target.bBuildEditor) + { + PrivateDependencyModuleNames.Add("UnrealEd"); + PublicDefinitions.Add("WITH_UNREALED=1"); + } + else + { + PublicDefinitions.Add("WITH_UNREALED=0"); + } AddEngineThirdPartyPrivateStaticDependencies(Target, "OpenSSL"); AddEngineThirdPartyPrivateStaticDependencies(Target, "zlib"); diff --git a/UnrealMLAgents.uplugin b/UnrealMLAgents.uplugin index 52c26d5..6ae4c84 100644 --- a/UnrealMLAgents.uplugin +++ b/UnrealMLAgents.uplugin @@ -1,33 +1,30 @@ { - "FileVersion": 3, - "Version": 100, - "VersionName": "1.0.0", - "FriendlyName": "UnrealMLAgents", - "Description": "A plugin for Unreal Engine enabling Deep Reinforcement Learning, inspired by Unity ML-Agents.", - "Category": "Machine Learning", - "CreatedBy": "AlanLaboratory, Stephane Capponi", - "CreatedByURL": "https://github.com/AlanLaboratory/UnrealMLAgents", - "DocsURL": "https://unrealmlagents.readthedocs.io/en/latest/", - "FabURL": "com.epicgames.launcher://ue/Fab/product/0207991a-a838-4b27-94f6-76ee166a0146/", - "MarketplaceURL": "", - "SupportURL": "discord.gg/XNNJFfgw6M", - "CanContainContent": true, - "IsBetaVersion": false, - "IsExperimentalVersion": false, - "Installed": false, - "Modules": [ - { - "name": "UnrealMLAgents", - "type": "Runtime", - "loadingphase": "Default", - "PlatformAllowList": [ - "Win64" - ] - }, - { - "Name": "SimCadenceController", - "Type": "Editor", - "LoadingPhase": "PostEngineInit" - } - ] + "FileVersion": 3, + "Version": 100, + "VersionName": "1.0.0", + "FriendlyName": "UnrealMLAgents", + "Description": "A plugin for Unreal Engine enabling Deep Reinforcement Learning, inspired by Unity ML-Agents.", + "Category": "Machine Learning", + "CreatedBy": "AlanLaboratory, Stephane Capponi", + "CreatedByURL": "https://github.com/AlanLaboratory/UnrealMLAgents", + "DocsURL": "https://unrealmlagents.readthedocs.io/en/latest/", + "FabURL": "com.epicgames.launcher://ue/Fab/product/0207991a-a838-4b27-94f6-76ee166a0146/", + "MarketplaceURL": "", + "SupportURL": "discord.gg/XNNJFfgw6M", + "CanContainContent": true, + "IsBetaVersion": false, + "IsExperimentalVersion": false, + "Installed": false, + "Modules": [ + { + "Name": "UnrealMLAgents", + "Type": "Runtime", + "LoadingPhase": "Default", + "PlatformAllowList": [ + "Win64" + ] + }, + { "Name": "SimCadenceRuntime", "Type": "Runtime", "LoadingPhase": "Default" }, + { "Name": "SimCadenceEditor", "Type": "Editor", "LoadingPhase": "PostEngineInit" } + ] }