From 812b12bdf23ff111737f9a945572e0be8f73c8fe Mon Sep 17 00:00:00 2001 From: Doprez <73259914+Doprez@users.noreply.github.com> Date: Sun, 1 Jun 2025 11:41:49 -0600 Subject: [PATCH 1/2] make services only load when called. --- .../Stride.Engine/Engine/ScriptComponent.cs | 128 +++++++++++++++--- 1 file changed, 108 insertions(+), 20 deletions(-) diff --git a/sources/engine/Stride.Engine/Engine/ScriptComponent.cs b/sources/engine/Stride.Engine/Engine/ScriptComponent.cs index e7f90d8540..8442f92666 100644 --- a/sources/engine/Stride.Engine/Engine/ScriptComponent.cs +++ b/sources/engine/Stride.Engine/Engine/ScriptComponent.cs @@ -57,14 +57,6 @@ internal void Initialize(IServiceRegistry registry) Game = Services.GetSafeServiceAs(); Content = (ContentManager)Services.GetSafeServiceAs(); - Input = Services.GetSafeServiceAs(); - Script = Services.GetSafeServiceAs(); - SceneSystem = Services.GetSafeServiceAs(); - EffectSystem = Services.GetSafeServiceAs(); - Audio = Services.GetSafeServiceAs(); - SpriteAnimation = Services.GetSafeServiceAs(); - GameProfiler = Services.GetSafeServiceAs(); - DebugText = Services.GetSafeServiceAs(); Streaming = Services.GetSafeServiceAs(); } @@ -91,40 +83,136 @@ public ProfilingKey ProfilingKey } [DataMemberIgnore] - public AudioSystem Audio { get; private set; } + public IServiceRegistry Services { get; private set; } [DataMemberIgnore] - public SpriteAnimationSystem SpriteAnimation { get; private set; } + public IGame Game { get; private set; } [DataMemberIgnore] - public IServiceRegistry Services { get; private set; } + public ContentManager Content { get; private set; } [DataMemberIgnore] - public IGame Game { get; private set; } + public GraphicsDevice GraphicsDevice => graphicsDeviceService?.GraphicsDevice; [DataMemberIgnore] - public ContentManager Content { get; private set; } + public GameProfilingSystem GameProfiler + { + get + { + gameProfilerSystem ??= Services.GetSafeServiceAs(); + return gameProfilerSystem; + } + private set + { + gameProfilerSystem = value; + } + } + private GameProfilingSystem gameProfilerSystem; [DataMemberIgnore] - public GameProfilingSystem GameProfiler { get; private set; } + public InputManager Input + { + get + { + inputManager ??= Services.GetSafeServiceAs(); + return inputManager; + } + private set + { + inputManager = value; + } + } + private InputManager inputManager; [DataMemberIgnore] - public GraphicsDevice GraphicsDevice => graphicsDeviceService?.GraphicsDevice; + public ScriptSystem Script + { + get + { + scriptSystem ??= Services.GetSafeServiceAs(); + return scriptSystem; + } + private set + { + scriptSystem = value; + } + } + private ScriptSystem scriptSystem; [DataMemberIgnore] - public InputManager Input { get; private set; } + public SceneSystem SceneSystem + { + get + { + sceneSystem ??= Services.GetSafeServiceAs(); + return sceneSystem; + } + private set + { + sceneSystem = value; + } + } + private SceneSystem sceneSystem; [DataMemberIgnore] - public ScriptSystem Script { get; private set; } + public EffectSystem EffectSystem + { + get + { + effectSystem ??= Services.GetSafeServiceAs(); + return effectSystem; + } + private set + { + effectSystem = value; + } + } + private EffectSystem effectSystem; [DataMemberIgnore] - public SceneSystem SceneSystem { get; private set; } + public DebugTextSystem DebugText + { + get + { + debugTextSystem ??= Services.GetSafeServiceAs(); + return debugTextSystem; + } + private set + { + debugTextSystem = value; + } + } + private DebugTextSystem debugTextSystem; [DataMemberIgnore] - public EffectSystem EffectSystem { get; private set; } + public AudioSystem Audio + { + get + { + audioSystem ??= Services.GetSafeServiceAs(); + return audioSystem; + } + private set + { + audioSystem = value; + } + } + private AudioSystem audioSystem; [DataMemberIgnore] - public DebugTextSystem DebugText { get; private set; } + public SpriteAnimationSystem SpriteAnimation + { + get + { + spriteAnimationSystem ??= Services.GetSafeServiceAs(); + return spriteAnimationSystem; + } + private set + { + spriteAnimationSystem = value; + } + } + private SpriteAnimationSystem spriteAnimationSystem; /// /// Gets the streaming system. From f54e1f449b9b4e695ff739da415d6bb00c87cfc2 Mon Sep 17 00:00:00 2001 From: Doprez <73259914+Doprez@users.noreply.github.com> Date: Wed, 27 Aug 2025 10:10:16 -0600 Subject: [PATCH 2/2] added missing proprties --- .../Stride.Engine/Engine/ScriptComponent.cs | 32 ++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/sources/engine/Stride.Engine/Engine/ScriptComponent.cs b/sources/engine/Stride.Engine/Engine/ScriptComponent.cs index 8442f92666..8c8aef8f21 100644 --- a/sources/engine/Stride.Engine/Engine/ScriptComponent.cs +++ b/sources/engine/Stride.Engine/Engine/ScriptComponent.cs @@ -56,8 +56,6 @@ internal void Initialize(IServiceRegistry registry) graphicsDeviceService = Services.GetSafeServiceAs(); Game = Services.GetSafeServiceAs(); - Content = (ContentManager)Services.GetSafeServiceAs(); - Streaming = Services.GetSafeServiceAs(); } /// @@ -89,10 +87,22 @@ public ProfilingKey ProfilingKey public IGame Game { get; private set; } [DataMemberIgnore] - public ContentManager Content { get; private set; } + public GraphicsDevice GraphicsDevice => graphicsDeviceService?.GraphicsDevice; [DataMemberIgnore] - public GraphicsDevice GraphicsDevice => graphicsDeviceService?.GraphicsDevice; + public ContentManager Content + { + get + { + contentManager ??= Services.GetSafeServiceAs() as ContentManager; + return contentManager; + } + private set + { + contentManager = value; + } + } + private ContentManager contentManager; [DataMemberIgnore] public GameProfilingSystem GameProfiler @@ -219,7 +229,19 @@ private set /// /// The streaming system. [DataMemberIgnore] - public StreamingManager Streaming { get; private set; } + public StreamingManager Streaming + { + get + { + streamingManager ??= Services.GetSafeServiceAs(); + return streamingManager; + } + private set + { + streamingManager = value; + } + } + private StreamingManager streamingManager; [DataMemberIgnore] protected Logger Log