From e70e1ca4e6072d5a3fbe7bc786459a8b16aef44e Mon Sep 17 00:00:00 2001 From: pas2704 Date: Sun, 18 Jun 2023 01:06:22 -0400 Subject: [PATCH] Fix NRE in MyGameService static constructor --- Torch.Server/TorchServer.cs | 8 +++++--- Torch/TorchBase.cs | 15 +++++++++------ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/Torch.Server/TorchServer.cs b/Torch.Server/TorchServer.cs index df708eb..eeb84cb 100644 --- a/Torch.Server/TorchServer.cs +++ b/Torch.Server/TorchServer.cs @@ -56,9 +56,7 @@ namespace Torch.Server AddManager(new EntityControlManager(this)); AddManager(new RemoteAPIManager(this)); - var sessionManager = Managers.GetManager(); - sessionManager.AddFactory(x => new MultiplayerManagerDedicated(this)); - sessionManager.SessionStateChanged += OnSessionStateChanged; + // Needs to be done at some point after MyVRageWindows.Init // where the debug listeners are registered @@ -128,6 +126,10 @@ namespace Torch.Server { Log.Info("Initializing server"); base.Init(); + var sessionManager = Managers.GetManager(); + sessionManager.AddFactory(x => new MultiplayerManagerDedicated(this)); + sessionManager.SessionStateChanged += OnSessionStateChanged; + GetManager().LoadInstance(InstancePath); CanRun = true; Initialized?.Invoke(this); diff --git a/Torch/TorchBase.cs b/Torch/TorchBase.cs index ec1f0b4..f1ad7bf 100644 --- a/Torch/TorchBase.cs +++ b/Torch/TorchBase.cs @@ -113,12 +113,6 @@ namespace Torch Plugins = new PluginManager(this); #pragma warning restore CS0618 - var sessionManager = new TorchSessionManager(this); - sessionManager.AddFactory((x) => Sync.IsServer ? new ChatManagerServer(this) : new ChatManagerClient(this)); - sessionManager.AddFactory((x) => Sync.IsServer ? new CommandManager(this) : null); - sessionManager.AddFactory((x) => new EntityManager(this)); - - Managers.AddManager(sessionManager); Managers.AddManager(new PatchManager(this)); Managers.AddManager(new FilesystemManager(this)); Managers.AddManager(new UpdateManager(this)); @@ -286,6 +280,15 @@ namespace Torch Game = new VRageGame(this, TweakGameSettings, SteamAppName, SteamAppId, InstancePath, RunArgs); if (!Game.WaitFor(VRageGame.GameState.Stopped)) Log.Warn("Failed to wait for game to be initialized"); + + var sessionManager = new TorchSessionManager(this); + sessionManager.AddFactory((x) => Sync.IsServer ? new ChatManagerServer(this) : new ChatManagerClient(this)); + sessionManager.AddFactory((x) => Sync.IsServer ? new CommandManager(this) : null); + sessionManager.AddFactory((x) => new EntityManager(this)); + + Managers.AddManager(sessionManager); + + Managers.Attach(); _init = true;