diff --git a/sources/engine/Stride.Engine/Engine/ScriptComponent.cs b/sources/engine/Stride.Engine/Engine/ScriptComponent.cs index e7f90d8540..8c8aef8f21 100644 --- a/sources/engine/Stride.Engine/Engine/ScriptComponent.cs +++ b/sources/engine/Stride.Engine/Engine/ScriptComponent.cs @@ -56,16 +56,6 @@ internal void Initialize(IServiceRegistry registry) graphicsDeviceService = Services.GetSafeServiceAs(); 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,47 +81,167 @@ 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 GraphicsDevice GraphicsDevice => graphicsDeviceService?.GraphicsDevice; [DataMemberIgnore] - public IGame Game { get; private set; } + public ContentManager Content + { + get + { + contentManager ??= Services.GetSafeServiceAs() as ContentManager; + return contentManager; + } + private set + { + contentManager = value; + } + } + private ContentManager contentManager; [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. /// /// 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