From a3650ebc2b6e6b9235275f2603c3b473ae3f6cfa Mon Sep 17 00:00:00 2001 From: austin Date: Thu, 15 May 2025 14:16:25 -0400 Subject: [PATCH] move serviceManager into engineState --- docs/src/progress/renderertodo.md | 1 + .../electrosphere/engine/EngineState.java | 14 ++++++++ .../java/electrosphere/engine/Globals.java | 35 ++++++------------- src/main/java/electrosphere/engine/Main.java | 10 ++---- .../loadingthreads/MainMenuLoading.java | 2 +- .../entity/ServerEntityUtilsUnitTests.java | 2 +- 6 files changed, 31 insertions(+), 33 deletions(-) diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index b24302ea..9672174d 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1818,6 +1818,7 @@ Move entityValueTrackingService to serverState Move playerManager to serverState Create EngineState global Move threadManager into engineState +Move serviceManager into engineState diff --git a/src/main/java/electrosphere/engine/EngineState.java b/src/main/java/electrosphere/engine/EngineState.java index 0067d1e5..2cb4db28 100644 --- a/src/main/java/electrosphere/engine/EngineState.java +++ b/src/main/java/electrosphere/engine/EngineState.java @@ -1,5 +1,6 @@ package electrosphere.engine; +import electrosphere.engine.service.ServiceManager; import electrosphere.engine.threads.ThreadManager; /** @@ -12,4 +13,17 @@ public class EngineState { */ public final ThreadManager threadManager = new ThreadManager(); + /** + * The service manager + */ + public final ServiceManager serviceManager = ServiceManager.create(); + + /** + * Destroys the engine state + */ + public void destroy(){ + this.threadManager.close(); + this.serviceManager.destroy(); + } + } diff --git a/src/main/java/electrosphere/engine/Globals.java b/src/main/java/electrosphere/engine/Globals.java index 5ff14733..0a521399 100644 --- a/src/main/java/electrosphere/engine/Globals.java +++ b/src/main/java/electrosphere/engine/Globals.java @@ -33,7 +33,6 @@ import electrosphere.engine.assetmanager.AssetManager; import electrosphere.engine.loadingthreads.InitialAssetLoading; import electrosphere.engine.os.fs.FileWatcherService; import electrosphere.engine.profiler.Profiler; -import electrosphere.engine.service.ServiceManager; import electrosphere.engine.signal.SignalSystem; import electrosphere.engine.signal.sync.MainThreadSignalService; import electrosphere.engine.time.Timekeeper; @@ -73,11 +72,6 @@ public class Globals { // public static String javaPID; - // - //Service manager - // - public static ServiceManager serviceManager; - // //Signal system // @@ -379,16 +373,12 @@ public class Globals { RENDER_FLAG_RENDER_UI = true; RENDER_FLAG_RENDER_UI_BOUNDS = false; - // - //Service manager - serviceManager = ServiceManager.create(); - //client state Globals.clientState = new ClientState(); //server state Globals.serverState = new ServerState(); - Globals.serverState.characterService = (CharacterService)serviceManager.registerService(new CharacterService()); + Globals.serverState.characterService = (CharacterService)Globals.engineState.serviceManager.registerService(new CharacterService()); //load in default texture map textureMapDefault = TextureMap.construct("Textures/default_texture_map.json"); @@ -421,14 +411,14 @@ public class Globals { //add services here - Globals.signalSystem = (SignalSystem)serviceManager.registerService(new SignalSystem()); - Globals.elementService = (ElementService)serviceManager.registerService(new ElementService()); - Globals.particleService = (ParticleService)serviceManager.registerService(new ParticleService()); - Globals.scriptEngine = (ScriptEngine)serviceManager.registerService(new ScriptEngine()); - Globals.mainThreadSignalService = (MainThreadSignalService)serviceManager.registerService(new MainThreadSignalService()); - Globals.fileWatcherService = (FileWatcherService)serviceManager.registerService(new FileWatcherService()); - Globals.structureScanningService = (StructureScanningService)serviceManager.registerService(new StructureScanningService()); - serviceManager.instantiate(); + Globals.signalSystem = (SignalSystem)Globals.engineState.serviceManager.registerService(new SignalSystem()); + Globals.elementService = (ElementService)Globals.engineState.serviceManager.registerService(new ElementService()); + Globals.particleService = (ParticleService)Globals.engineState.serviceManager.registerService(new ParticleService()); + Globals.scriptEngine = (ScriptEngine)Globals.engineState.serviceManager.registerService(new ScriptEngine()); + Globals.mainThreadSignalService = (MainThreadSignalService)Globals.engineState.serviceManager.registerService(new MainThreadSignalService()); + Globals.fileWatcherService = (FileWatcherService)Globals.engineState.serviceManager.registerService(new FileWatcherService()); + Globals.structureScanningService = (StructureScanningService)Globals.engineState.serviceManager.registerService(new StructureScanningService()); + Globals.engineState.serviceManager.instantiate(); // //End service manager @@ -594,13 +584,11 @@ public class Globals { Globals.serverState.realmManager.reset(); } Globals.dbController.disconnect(); - Globals.serviceManager.unloadScene(); + Globals.engineState.serviceManager.unloadScene(); Globals.clientState = new ClientState(); Globals.serverState = new ServerState(); - if(Globals.serviceManager != null){ - Globals.serverState.characterService = (CharacterService)Globals.serviceManager.registerService(new CharacterService()); - } + Globals.serverState.characterService = (CharacterService)Globals.engineState.serviceManager.registerService(new CharacterService()); } /** @@ -622,7 +610,6 @@ public class Globals { Globals.engineState = null; Globals.renderingEngine = null; Globals.signalSystem = null; - Globals.serviceManager = null; Globals.fileWatcherService = null; Globals.javaPID = null; Globals.RENDER_FLAG_RENDER_SHADOW_MAP = true; diff --git a/src/main/java/electrosphere/engine/Main.java b/src/main/java/electrosphere/engine/Main.java index 4c899406..1297b355 100644 --- a/src/main/java/electrosphere/engine/Main.java +++ b/src/main/java/electrosphere/engine/Main.java @@ -430,10 +430,6 @@ public class Main { if(Globals.renderingEngine != null){ Globals.renderingEngine.destroy(); } - //used to signal threads to stop - if(Globals.engineState != null && Globals.engineState.threadManager != null){ - Globals.engineState.threadManager.close(); - } //shut down audio engine if(Globals.audioEngine != null && Globals.audioEngine.initialized()){ Globals.audioEngine.shutdown(); @@ -452,9 +448,9 @@ public class Main { initOde = false; } // - //Destroy services - if(Globals.serviceManager != null){ - Globals.serviceManager.destroy(); + //Destroy engine state + if(Globals.engineState != null){ + Globals.engineState.destroy(); } //reset globals for good measure (making sure no long-running threads can re-inject entities into scenes) Globals.resetGlobals(); diff --git a/src/main/java/electrosphere/engine/loadingthreads/MainMenuLoading.java b/src/main/java/electrosphere/engine/loadingthreads/MainMenuLoading.java index 29d14de2..d358c04f 100644 --- a/src/main/java/electrosphere/engine/loadingthreads/MainMenuLoading.java +++ b/src/main/java/electrosphere/engine/loadingthreads/MainMenuLoading.java @@ -63,7 +63,7 @@ public class MainMenuLoading { private static void resetServerState(){ Globals.serverState.server.close(); Globals.serverState = new ServerState(); - Globals.serverState.characterService = (CharacterService)Globals.serviceManager.registerService(new CharacterService()); + Globals.serverState.characterService = (CharacterService)Globals.engineState.serviceManager.registerService(new CharacterService()); } /** diff --git a/src/test/java/electrosphere/entity/ServerEntityUtilsUnitTests.java b/src/test/java/electrosphere/entity/ServerEntityUtilsUnitTests.java index 81aa6de2..14607a60 100644 --- a/src/test/java/electrosphere/entity/ServerEntityUtilsUnitTests.java +++ b/src/test/java/electrosphere/entity/ServerEntityUtilsUnitTests.java @@ -18,7 +18,7 @@ public class ServerEntityUtilsUnitTests { public void destroyEntity_ValidEntity_NoRealm(){ //setup Globals.initGlobals(); - Globals.serverState.characterService = (CharacterService)Globals.serviceManager.registerService(new CharacterService()); + Globals.serverState.characterService = (CharacterService)Globals.engineState.serviceManager.registerService(new CharacterService()); Realm realm = Globals.serverState.realmManager.createViewportRealm(new Vector3d(0,0,0), new Vector3d(1,1,1)); Entity entity = EntityCreationUtils.createServerEntity(realm, new Vector3d());