diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index 39a95f18..5fa11c28 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1806,6 +1806,8 @@ Properly reset ClientState Move clientWorldData to clientState Move clientScene to clientState Move clientSceneWrapper to clientState +Move clientSimulation to clientState +Move clientSynchronizationMAnager to clientState diff --git a/src/main/java/electrosphere/client/ClientState.java b/src/main/java/electrosphere/client/ClientState.java index 6d8a1ea1..fc096a2c 100644 --- a/src/main/java/electrosphere/client/ClientState.java +++ b/src/main/java/electrosphere/client/ClientState.java @@ -2,7 +2,9 @@ package electrosphere.client; import electrosphere.client.scene.ClientSceneWrapper; import electrosphere.client.scene.ClientWorldData; +import electrosphere.client.sim.ClientSimulation; import electrosphere.entity.scene.Scene; +import electrosphere.net.synchronization.client.ClientSynchronizationManager; /** * State on the client @@ -24,4 +26,14 @@ public class ClientState { */ public ClientSceneWrapper clientSceneWrapper; + /** + * The client simulation + */ + public ClientSimulation clientSimulation; + + /** + * The synchronization manager on the client + */ + public ClientSynchronizationManager clientSynchronizationManager; + } diff --git a/src/main/java/electrosphere/client/scene/ClientSceneWrapper.java b/src/main/java/electrosphere/client/scene/ClientSceneWrapper.java index 93193e5b..ffd2f9bf 100644 --- a/src/main/java/electrosphere/client/scene/ClientSceneWrapper.java +++ b/src/main/java/electrosphere/client/scene/ClientSceneWrapper.java @@ -94,7 +94,7 @@ public class ClientSceneWrapper { lock.lock(); clientToServerIdMap.put(clientId, serverId); serverToClientIdMap.put(serverId, clientId); - Globals.clientSynchronizationManager.ejectDeletedKey(serverId); + Globals.clientState.clientSynchronizationManager.ejectDeletedKey(serverId); lock.unlock(); } diff --git a/src/main/java/electrosphere/client/sim/ClientSimulation.java b/src/main/java/electrosphere/client/sim/ClientSimulation.java index 02ff9923..eff8fec0 100644 --- a/src/main/java/electrosphere/client/sim/ClientSimulation.java +++ b/src/main/java/electrosphere/client/sim/ClientSimulation.java @@ -52,7 +52,7 @@ public class ClientSimulation { //process all server synchronization messages Globals.profiler.beginCpuSample("clientSynchronizationManager.processMessages"); - Globals.clientSynchronizationManager.processMessages(); + Globals.clientState.clientSynchronizationManager.processMessages(); Globals.profiler.endCpuSample(); // //simulate bullet physics engine step diff --git a/src/main/java/electrosphere/engine/Globals.java b/src/main/java/electrosphere/engine/Globals.java index a0aab775..166727ed 100644 --- a/src/main/java/electrosphere/engine/Globals.java +++ b/src/main/java/electrosphere/engine/Globals.java @@ -24,7 +24,6 @@ import electrosphere.client.fluid.manager.ClientFluidManager; import electrosphere.client.player.ClientPlayerData; import electrosphere.client.scene.ClientLevelEditorData; import electrosphere.client.scene.ClientSceneWrapper; -import electrosphere.client.sim.ClientSimulation; import electrosphere.client.terrain.cells.ClientDrawCellManager; import electrosphere.client.terrain.cells.VoxelTextureAtlas; import electrosphere.client.terrain.foliage.FoliageCellManager; @@ -336,10 +335,6 @@ public class Globals { //services public static MainThreadSignalService mainThreadSignalService; - - //client scene management - public static ClientSimulation clientSimulation; - public static ClientSynchronizationManager clientSynchronizationManager; //instanced actor manager public static InstanceManager clientInstanceManager = new InstanceManager(); @@ -536,7 +531,7 @@ public class Globals { netMonitor = new NetMonitor(); } //client synchronization manager - clientSynchronizationManager = new ClientSynchronizationManager(); + Globals.clientState.clientSynchronizationManager = new ClientSynchronizationManager(); //profiler profiler = new Profiler(); Globals.serverSynchronizationManager = new ServerSynchronizationManager(); @@ -725,7 +720,7 @@ public class Globals { Globals.clientState.clientScene = new Scene(); Globals.clientState.clientSceneWrapper = new ClientSceneWrapper(Globals.clientState.clientScene, new CollisionEngine(), CollisionEngine.create(new ClientChemistryCollisionCallback()), new CollisionEngine()); Globals.clientState = new ClientState(); - Globals.clientSynchronizationManager = new ClientSynchronizationManager(); + Globals.clientState.clientSynchronizationManager = new ClientSynchronizationManager(); Globals.server = null; Globals.serverSynchronizationManager = new ServerSynchronizationManager(); if(Globals.aiManager != null){ @@ -759,7 +754,6 @@ public class Globals { Globals.serviceManager = null; Globals.fileWatcherService = null; Globals.clientConnection = null; - Globals.clientSynchronizationManager = null; Globals.server = null; Globals.serverSynchronizationManager = null; Globals.aiManager = null; diff --git a/src/main/java/electrosphere/engine/Main.java b/src/main/java/electrosphere/engine/Main.java index 09a48a79..87fe1a17 100644 --- a/src/main/java/electrosphere/engine/Main.java +++ b/src/main/java/electrosphere/engine/Main.java @@ -295,9 +295,9 @@ public class Main { /// C L I E N T S I M U L A T I O N S T U F F /// LoggerInterface.loggerEngine.DEBUG_LOOP("Begin client simulation"); - if(Globals.clientSimulation != null){ + if(Globals.clientState != null && Globals.clientState.clientSimulation != null){ Globals.profiler.beginCpuSample("Client simulation"); - Globals.clientSimulation.simulate(); + Globals.clientState.clientSimulation.simulate(); Globals.profiler.endCpuSample(); } diff --git a/src/main/java/electrosphere/engine/loadingthreads/ClientLoading.java b/src/main/java/electrosphere/engine/loadingthreads/ClientLoading.java index bd364b7d..61ae0617 100644 --- a/src/main/java/electrosphere/engine/loadingthreads/ClientLoading.java +++ b/src/main/java/electrosphere/engine/loadingthreads/ClientLoading.java @@ -213,8 +213,8 @@ public class ClientLoading { * Creates client simulation object */ private static void initClientSimulation(){ - if(Globals.clientSimulation == null){ - Globals.clientSimulation = new ClientSimulation(); + if(Globals.clientState.clientSimulation == null){ + Globals.clientState.clientSimulation = new ClientSimulation(); } } @@ -222,7 +222,7 @@ public class ClientLoading { * Sets client simulation object state to ready */ private static void setSimulationsToReady(){ - Globals.clientSimulation.setReady(true); + Globals.clientState.clientSimulation.setReady(true); } @@ -338,7 +338,7 @@ public class ClientLoading { // Globals.drawCellManager = new DrawCellManager(Globals.clientTerrainManager, 0, 0, 0); Globals.clientDrawCellManager = new ClientDrawCellManager(Globals.voxelTextureAtlas, Globals.clientState.clientWorldData.getWorldDiscreteSize()); //Alerts the client simulation that it should start loading terrain - Globals.clientSimulation.setLoadingTerrain(true); + Globals.clientState.clientSimulation.setLoadingTerrain(true); //wait for all the terrain data to arrive int i = 0; while( @@ -376,7 +376,7 @@ public class ClientLoading { //initialize draw cell manager Globals.fluidCellManager = new FluidCellManager(Globals.clientTerrainManager, 0, 0, 0); Globals.fluidCellManager.setGenerateDrawables(true); - Globals.clientSimulation.setLoadingTerrain(true); + Globals.clientState.clientSimulation.setLoadingTerrain(true); //wait for all the terrain data to arrive WindowUtils.updateLoadingWindow("REQUESTING FLUID CHUNKS FROM SERVER (" + Globals.fluidCellManager.getUnrequestedSize() + ")"); @@ -422,7 +422,7 @@ public class ClientLoading { } Globals.clientBlockCellManager = new ClientBlockCellManager(Globals.blockTextureAtlas, Globals.clientState.clientWorldData.getWorldDiscreteSize()); //Alerts the client simulation that it should start loading blocks - Globals.clientSimulation.setLoadingTerrain(true); + Globals.clientState.clientSimulation.setLoadingTerrain(true); //wait for all the block data to arrive int i = 0; while( diff --git a/src/main/java/electrosphere/engine/loadingthreads/MainMenuLoading.java b/src/main/java/electrosphere/engine/loadingthreads/MainMenuLoading.java index 45635c16..53cb92d1 100644 --- a/src/main/java/electrosphere/engine/loadingthreads/MainMenuLoading.java +++ b/src/main/java/electrosphere/engine/loadingthreads/MainMenuLoading.java @@ -51,7 +51,7 @@ public class MainMenuLoading { */ private static void resetClientState(){ Globals.playerEntity = null; - Globals.clientSimulation = null; + Globals.clientState.clientSimulation = null; Globals.clientConnection.setShouldDisconnect(true); Globals.renderingEngine.getPostProcessingPipeline().setApplyBlur(false); } diff --git a/src/main/java/electrosphere/net/client/protocol/EntityProtocol.java b/src/main/java/electrosphere/net/client/protocol/EntityProtocol.java index c9c8bad9..d101a9e3 100644 --- a/src/main/java/electrosphere/net/client/protocol/EntityProtocol.java +++ b/src/main/java/electrosphere/net/client/protocol/EntityProtocol.java @@ -49,7 +49,7 @@ public class EntityProtocol implements ClientProtocolTemplate { Globals.profiler.beginAggregateCpuSample("EntityProtocol.handleEntityMessage"); LoggerInterface.loggerNetworking.DEBUG_LOOP("Parse entity message of type " + message.getMessageSubtype()); - if(Globals.clientState.clientScene != null && Globals.clientSynchronizationManager.isDeleted(message.getentityID())){ + if(Globals.clientState.clientScene != null && Globals.clientState.clientSynchronizationManager.isDeleted(message.getentityID())){ return; } @@ -157,7 +157,7 @@ public class EntityProtocol implements ClientProtocolTemplate { if(entity != null){ ClientEntityUtils.destroyEntity(entity); } - Globals.clientSynchronizationManager.addDeletedId(message.getentityID()); + Globals.clientState.clientSynchronizationManager.addDeletedId(message.getentityID()); Globals.clientConnection.release(message); } break; diff --git a/src/main/java/electrosphere/net/client/protocol/SynchronizationProtocol.java b/src/main/java/electrosphere/net/client/protocol/SynchronizationProtocol.java index b97efd57..22e2bba6 100644 --- a/src/main/java/electrosphere/net/client/protocol/SynchronizationProtocol.java +++ b/src/main/java/electrosphere/net/client/protocol/SynchronizationProtocol.java @@ -28,7 +28,7 @@ public class SynchronizationProtocol implements ClientProtocolTemplate