From 3cc51c008c7a344bc0a98fb7e80ae319ddcc2a2e Mon Sep 17 00:00:00 2001 From: austin Date: Thu, 15 May 2025 16:08:33 -0400 Subject: [PATCH] move engine flags under engine state --- .../audio/movement/MovementAudioService.java | 5 +- .../client/sim/ClientSimulation.java | 7 +- .../client/ui/menu/WindowUtils.java | 3 +- .../mainmenu/MenuGeneratorsLevelEditor.java | 5 +- .../mainmenu/MenuGeneratorsMultiplayer.java | 25 +++--- .../mainmenu/worldgen/MenuWorldSelect.java | 5 +- .../controls/ControlHandler.java | 7 +- src/main/java/electrosphere/data/Config.java | 15 ++++ .../electrosphere/engine/EngineState.java | 81 +++++++++++++++++++ .../java/electrosphere/engine/Globals.java | 62 ++------------ src/main/java/electrosphere/engine/Main.java | 37 +++++---- .../electrosphere/engine/cli/CLIParser.java | 8 +- .../ChunkGenerationTestLoading.java | 7 +- .../engine/loadingthreads/ClientLoading.java | 5 +- .../loadingthreads/DebugSPWorldLoading.java | 3 +- .../loadingthreads/LevelEditorLoading.java | 7 +- .../engine/loadingthreads/LevelLoading.java | 3 +- .../engine/loadingthreads/LoadingUtils.java | 7 +- .../engine/loadingthreads/ServerLoading.java | 3 +- .../loadingthreads/ViewportLoading.java | 3 +- .../electrosphere/engine/time/Timekeeper.java | 6 +- .../net/client/protocol/EntityProtocol.java | 1 - .../electrosphere/net/config/NetConfig.java | 7 +- .../net/server/protocol/AuthProtocol.java | 3 +- .../renderer/RenderingEngine.java | 5 +- .../renderer/meshgen/MeshLoader.java | 8 +- .../electrosphere/renderer/model/Mesh.java | 15 ++-- .../renderer/texture/Texture.java | 7 +- .../electrosphere/server/datacell/Realm.java | 3 +- .../gridded/GriddedDataCellManager.java | 5 +- .../fluid/manager/ServerFluidManager.java | 3 +- .../entity/SpawnAllEntitiesTests.java | 3 +- .../renderer/ui/UIExtensionTests.java | 13 +-- .../test/integration/StartupTest.java | 8 +- .../test/template/extensions/UIExtension.java | 5 +- .../test/testutils/EngineInit.java | 19 ++--- 36 files changed, 243 insertions(+), 166 deletions(-) diff --git a/src/main/java/electrosphere/audio/movement/MovementAudioService.java b/src/main/java/electrosphere/audio/movement/MovementAudioService.java index 39d0d486..a89519a6 100644 --- a/src/main/java/electrosphere/audio/movement/MovementAudioService.java +++ b/src/main/java/electrosphere/audio/movement/MovementAudioService.java @@ -11,6 +11,7 @@ import electrosphere.audio.VirtualAudioSourceManager.VirtualAudioSourceType; import electrosphere.client.terrain.sampling.ClientVoxelSampler; import electrosphere.data.audio.SurfaceAudioCollection; import electrosphere.data.audio.SurfaceAudioType; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.logger.LoggerInterface; @@ -158,7 +159,7 @@ public class MovementAudioService { * @param type The interaction type */ public void playAudio(int voxelType, InteractionType type){ - if(Globals.RUN_AUDIO){ + if(EngineState.EngineFlags.RUN_AUDIO){ String audioPath = this.getAudioPath(voxelType, type); if(audioPath != null){ Globals.audioEngine.virtualAudioSourceManager.createVirtualAudioSource(audioPath, VirtualAudioSourceType.CREATURE, false); @@ -173,7 +174,7 @@ public class MovementAudioService { * @param position The position of the audio */ public void playAudioPositional(int voxelType, InteractionType type, Vector3d position){ - if(Globals.RUN_AUDIO){ + if(EngineState.EngineFlags.RUN_AUDIO){ String audioPath = this.getAudioPath(voxelType, type); if(audioPath != null){ Globals.audioEngine.virtualAudioSourceManager.createVirtualAudioSource(audioPath, VirtualAudioSourceType.CREATURE, false, position); diff --git a/src/main/java/electrosphere/client/sim/ClientSimulation.java b/src/main/java/electrosphere/client/sim/ClientSimulation.java index f4b691b6..5b34e963 100644 --- a/src/main/java/electrosphere/client/sim/ClientSimulation.java +++ b/src/main/java/electrosphere/client/sim/ClientSimulation.java @@ -9,6 +9,7 @@ import electrosphere.client.fluid.manager.ClientFluidManager; import electrosphere.client.interact.ClientInteractionEngine; import electrosphere.client.terrain.manager.ClientTerrainManager; import electrosphere.client.ui.menu.ingame.ToolbarPreviewWindow; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.entity.Entity; import electrosphere.entity.EntityTags; @@ -63,7 +64,7 @@ public class ClientSimulation { Globals.profiler.endCpuSample(); // //simulate bullet physics engine step - if(Globals.RUN_PHYSICS){ + if(EngineState.EngineFlags.RUN_PHYSICS){ Globals.clientState.clientSceneWrapper.getCollisionEngine().simulatePhysics((float)Globals.engineState.timekeeper.getSimFrameTime()); Globals.clientState.clientSceneWrapper.getCollisionEngine().updateDynamicObjectTransforms(); } @@ -184,7 +185,7 @@ public class ClientSimulation { Globals.clientState.clientTerrainManager.handleMessages(); this.updateTerrainCellManager(); } - if(Globals.clientState.clientFluidManager != null && Globals.RUN_FLUIDS){ + if(Globals.clientState.clientFluidManager != null && EngineState.EngineFlags.RUN_FLUIDS){ Globals.clientState.clientFluidManager.handleMessages(); this.updateFluidCellManager(); } @@ -213,7 +214,7 @@ public class ClientSimulation { */ private void updateFluidCellManager(){ //fluid work - if(Globals.clientState.fluidCellManager != null && Globals.clientState.clientWorldData != null && Globals.RUN_FLUIDS){ + if(Globals.clientState.fluidCellManager != null && Globals.clientState.clientWorldData != null && EngineState.EngineFlags.RUN_FLUIDS){ Globals.clientState.fluidCellManager.update(); } } diff --git a/src/main/java/electrosphere/client/ui/menu/WindowUtils.java b/src/main/java/electrosphere/client/ui/menu/WindowUtils.java index d35f520c..da648a24 100644 --- a/src/main/java/electrosphere/client/ui/menu/WindowUtils.java +++ b/src/main/java/electrosphere/client/ui/menu/WindowUtils.java @@ -7,6 +7,7 @@ import electrosphere.client.ui.menu.ingame.MenuGeneratorsInventory; import electrosphere.client.ui.menu.ingame.InventoryMainWindow; import electrosphere.client.ui.menu.mainmenu.MenuGeneratorsTitleMenu; import electrosphere.controls.ControlHandler.ControlsState; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.engine.assetmanager.AssetDataStrings; import electrosphere.engine.signal.Signal.SignalType; @@ -192,7 +193,7 @@ public class WindowUtils { */ public static void attemptRedrawInventoryWindows(){ //make sure we're client and the player entity exists - if(Globals.RUN_CLIENT){ + if(EngineState.EngineFlags.RUN_CLIENT){ if(Globals.clientState.playerEntity != null){ if(Globals.elementService.containsWindow(WindowStrings.WINDOW_CHARACTER)){ //redraw if necessary diff --git a/src/main/java/electrosphere/client/ui/menu/mainmenu/MenuGeneratorsLevelEditor.java b/src/main/java/electrosphere/client/ui/menu/mainmenu/MenuGeneratorsLevelEditor.java index d290aff6..663a07e3 100644 --- a/src/main/java/electrosphere/client/ui/menu/mainmenu/MenuGeneratorsLevelEditor.java +++ b/src/main/java/electrosphere/client/ui/menu/mainmenu/MenuGeneratorsLevelEditor.java @@ -8,6 +8,7 @@ import electrosphere.client.ui.components.VoxelSelectionPanel; import electrosphere.client.ui.menu.WindowStrings; import electrosphere.client.ui.menu.WindowUtils; import electrosphere.data.voxel.VoxelType; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.engine.assetmanager.AssetDataStrings; import electrosphere.engine.loadingthreads.LoadingThread; @@ -132,8 +133,8 @@ public class MenuGeneratorsLevelEditor { Button launchButton = Button.createButton(saveName, () -> { //launch level LoadingThread loadingThread = new LoadingThread(LoadingThreadType.LEVEL, saveName); - Globals.RUN_CLIENT = true; - Globals.RUN_SERVER = true; + EngineState.EngineFlags.RUN_CLIENT = true; + EngineState.EngineFlags.RUN_SERVER = true; Globals.engineState.threadManager.start(loadingThread); }).setOnClickAudio(AssetDataStrings.UI_TONE_BUTTON_TITLE); diff --git a/src/main/java/electrosphere/client/ui/menu/mainmenu/MenuGeneratorsMultiplayer.java b/src/main/java/electrosphere/client/ui/menu/mainmenu/MenuGeneratorsMultiplayer.java index baa5ff7b..00c8f355 100644 --- a/src/main/java/electrosphere/client/ui/menu/mainmenu/MenuGeneratorsMultiplayer.java +++ b/src/main/java/electrosphere/client/ui/menu/mainmenu/MenuGeneratorsMultiplayer.java @@ -5,6 +5,7 @@ import electrosphere.client.ui.components.CharacterCustomizer; import electrosphere.client.ui.components.InputMacros; import electrosphere.client.ui.menu.WindowUtils; import electrosphere.client.ui.menu.mainmenu.worldgen.MenuWorldSelect; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.engine.loadingthreads.LoadingThread; import electrosphere.engine.loadingthreads.LoadingThread.LoadingThreadType; @@ -89,8 +90,8 @@ public class MenuGeneratorsMultiplayer { rVal.addChild(Button.createButton("Host", () -> { LoadingThread clientThread = new LoadingThread(LoadingThreadType.CHARACTER_SERVER); LoadingThread serverThread = new LoadingThread(LoadingThreadType.MAIN_GAME); - Globals.RUN_CLIENT = true; - Globals.RUN_SERVER = true; + EngineState.EngineFlags.RUN_CLIENT = true; + EngineState.EngineFlags.RUN_SERVER = true; Globals.engineState.threadManager.start(serverThread); Globals.engineState.threadManager.start(clientThread); })); @@ -126,8 +127,8 @@ public class MenuGeneratorsMultiplayer { //Address input // String ipAddress = ""; - if(Globals.netConfig != null && Globals.netConfig.getAddress() != null){ - ipAddress = Globals.netConfig.getAddress(); + if(Globals.gameConfigCurrent.getNetConfig() != null && Globals.gameConfigCurrent.getNetConfig().getAddress() != null){ + ipAddress = Globals.gameConfigCurrent.getNetConfig().getAddress(); } else { ipAddress = NetUtils.getAddress(); } @@ -139,8 +140,8 @@ public class MenuGeneratorsMultiplayer { //Port input // String port = ""; - if(Globals.netConfig != null && Globals.netConfig.getPort() != null){ - port = Globals.netConfig.getPort(); + if(Globals.gameConfigCurrent.getNetConfig() != null && Globals.gameConfigCurrent.getNetConfig().getPort() != null){ + port = Globals.gameConfigCurrent.getNetConfig().getPort(); } else { port = NetUtils.getPort() + ""; } @@ -152,8 +153,8 @@ public class MenuGeneratorsMultiplayer { //Username input // String username = ""; - if(Globals.netConfig != null && Globals.netConfig.getPort() != null){ - username = Globals.netConfig.getUsername(); + if(Globals.gameConfigCurrent.getNetConfig() != null && Globals.gameConfigCurrent.getNetConfig().getPort() != null){ + username = Globals.gameConfigCurrent.getNetConfig().getUsername(); } else { username = ""; } @@ -166,8 +167,8 @@ public class MenuGeneratorsMultiplayer { //Password input // String password = ""; - if(Globals.netConfig != null && Globals.netConfig.getPort() != null){ - password = Globals.netConfig.getPassword(); + if(Globals.gameConfigCurrent.getNetConfig() != null && Globals.gameConfigCurrent.getNetConfig().getPort() != null){ + password = Globals.gameConfigCurrent.getNetConfig().getPassword(); } else { password = ""; } @@ -182,8 +183,8 @@ public class MenuGeneratorsMultiplayer { Globals.clientState.clientUsername = usernameInput.getText(); Globals.clientState.clientPassword = AuthenticationManager.getHashedString(passwordInput.getText()); LoadingThread clientThread = new LoadingThread(LoadingThreadType.CHARACTER_SERVER); - Globals.RUN_CLIENT = true; - Globals.RUN_SERVER = false; + EngineState.EngineFlags.RUN_CLIENT = true; + EngineState.EngineFlags.RUN_SERVER = false; Globals.engineState.threadManager.start(clientThread); })); diff --git a/src/main/java/electrosphere/client/ui/menu/mainmenu/worldgen/MenuWorldSelect.java b/src/main/java/electrosphere/client/ui/menu/mainmenu/worldgen/MenuWorldSelect.java index ccfb549d..b12b0a60 100644 --- a/src/main/java/electrosphere/client/ui/menu/mainmenu/worldgen/MenuWorldSelect.java +++ b/src/main/java/electrosphere/client/ui/menu/mainmenu/worldgen/MenuWorldSelect.java @@ -7,6 +7,7 @@ import java.util.stream.Collectors; import electrosphere.auth.AuthenticationManager; import electrosphere.client.ui.menu.WindowUtils; import electrosphere.client.ui.menu.mainmenu.MenuGeneratorsTitleMenu; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.engine.loadingthreads.LoadingThread; import electrosphere.engine.loadingthreads.LoadingThread.LoadingThreadType; @@ -58,8 +59,8 @@ public class MenuWorldSelect { Globals.clientState.clientUsername = "username"; Globals.clientState.clientPassword = AuthenticationManager.getHashedString("password"); LoadingThread serverThread = new LoadingThread(LoadingThreadType.MAIN_GAME, saveName, Globals.clientState.clientUsername, Globals.clientState.clientPassword); - Globals.RUN_CLIENT = true; - Globals.RUN_SERVER = true; + EngineState.EngineFlags.RUN_CLIENT = true; + EngineState.EngineFlags.RUN_SERVER = true; Globals.engineState.threadManager.start(serverThread); } else { SaveUtils.loadSave(saveName.toLowerCase(), false); diff --git a/src/main/java/electrosphere/controls/ControlHandler.java b/src/main/java/electrosphere/controls/ControlHandler.java index e7764f19..c31b8426 100644 --- a/src/main/java/electrosphere/controls/ControlHandler.java +++ b/src/main/java/electrosphere/controls/ControlHandler.java @@ -26,6 +26,7 @@ import electrosphere.controls.categories.ControlCategoryInventory; import electrosphere.controls.categories.ControlCategoryMainGame; import electrosphere.controls.categories.ControlCategoryMenuNav; import electrosphere.controls.categories.ControlCategoryTyping; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.entity.state.equip.ClientEquipState; import electrosphere.renderer.ui.elements.Window; @@ -396,7 +397,7 @@ public class ControlHandler { */ private void getMousePositionInBuffer(){ //only if not headless, gather position - if(!Globals.HEADLESS){ + if(!EngineState.EngineFlags.HEADLESS){ glfwGetCursorPos(Globals.renderingEngine.getWindowPtr(), this.mouseState.getMouseBufferX(), this.mouseState.getMouseBufferY()); } } @@ -406,7 +407,7 @@ public class ControlHandler { * @return true if pressed, false otherwise */ private boolean getButton1Raw(){ - if(Globals.HEADLESS){ + if(EngineState.EngineFlags.HEADLESS){ return false; } else { return Globals.mouseCallback.getButton(GLFW_MOUSE_BUTTON_1); @@ -418,7 +419,7 @@ public class ControlHandler { * @return true if pressed, false otherwise */ private boolean getButton2Raw(){ - if(Globals.HEADLESS){ + if(EngineState.EngineFlags.HEADLESS){ return false; } else { return Globals.mouseCallback.getButton(GLFW_MOUSE_BUTTON_2); diff --git a/src/main/java/electrosphere/data/Config.java b/src/main/java/electrosphere/data/Config.java index 66b85c0f..052fe5e8 100644 --- a/src/main/java/electrosphere/data/Config.java +++ b/src/main/java/electrosphere/data/Config.java @@ -27,6 +27,7 @@ import electrosphere.data.units.UnitDefinitionFile; import electrosphere.data.units.UnitLoader; import electrosphere.data.voxel.VoxelData; import electrosphere.data.voxel.sampler.SamplerFile; +import electrosphere.net.config.NetConfig; import electrosphere.server.macro.race.RaceMap; import electrosphere.server.macro.symbolism.SymbolMap; import electrosphere.util.FileUtils; @@ -40,6 +41,11 @@ public class Config { * Top level user settings object */ UserSettings userSettings; + + /** + * Optional config that can be included alongside engine to inject a default network to populate on the multiplayer screens + */ + NetConfig netConfig; /** * The container for all creature definitions @@ -115,6 +121,7 @@ public class Config { public static Config loadDefaultConfig(){ Config config = new Config(); config.userSettings = UserSettings.loadUserSettings(); + config.netConfig = NetConfig.readNetConfig(); config.creatureTypeLoader = Config.loadCreatureTypes("Data/entity/creatures.json"); config.itemMap = ItemDataMap.loadItemFiles("Data/entity/items.json"); config.foliageMap = Config.loadFoliageTypes("Data/entity/foliage.json"); @@ -408,5 +415,13 @@ public class Config { public ItemSourcingMap getItemSourcingMap(){ return this.itemSourcingMap; } + + /** + * Gets the network config file if it exists + * @return The config if it exists, null otherwise + */ + public NetConfig getNetConfig(){ + return netConfig; + } } diff --git a/src/main/java/electrosphere/engine/EngineState.java b/src/main/java/electrosphere/engine/EngineState.java index 18cf3b5b..7312134d 100644 --- a/src/main/java/electrosphere/engine/EngineState.java +++ b/src/main/java/electrosphere/engine/EngineState.java @@ -38,6 +38,11 @@ public class EngineState { */ public SignalSystem signalSystem; + /** + * Engine-wide flags + */ + public EngineFlags flags = new EngineFlags(); + /** * Constructor */ @@ -61,4 +66,80 @@ public class EngineState { this.serviceManager.destroy(); } + /** + * Engine-wide flags + */ + public static class EngineFlags { + + /** + * Run engine in demo mode + */ + public static boolean RUN_DEMO = false; + + /** + * Run client + */ + public static boolean RUN_CLIENT = true; + + /** + * Run server + */ + public static boolean RUN_SERVER = true; + + /** + * glfw session will be created with hidden window + */ + public static boolean RUN_HIDDEN = false; + + /** + * Run the audio engine + */ + public static boolean RUN_AUDIO = true; + + /** + * Run the script engine + */ + public static boolean RUN_SCRIPTS = true; + + /** + * toggles whether physics is run or not + */ + public static boolean RUN_PHYSICS = true; + + /** + * toggles whether fluid physics is run or not + */ + public static boolean RUN_FLUIDS = false; + + /** + * Garbage Collection + * + * set to true to trigger full GC every frame + * a full GC includes collecting old generations as well -- likely very laggy!! + */ + public static boolean EXPLICIT_GC = false; + + /** + * Engine timing + */ + public static boolean EXPLICIT_SLEEP = true; + + /** + * Triggers the engine to shut down + */ + public static boolean ENGINE_SHUTDOWN_FLAG = false; + + /** + * main debug flag + * current enables imgui debug menu or not + */ + public static boolean ENGINE_DEBUG = true; + + /** + * Controls whether the engine is headless or not + */ + public static boolean HEADLESS = false; + + } + } diff --git a/src/main/java/electrosphere/engine/Globals.java b/src/main/java/electrosphere/engine/Globals.java index f81f6e6e..4afa8d29 100644 --- a/src/main/java/electrosphere/engine/Globals.java +++ b/src/main/java/electrosphere/engine/Globals.java @@ -66,24 +66,15 @@ public class Globals { */ public static ServerState serverState; - // - //Rendering Engine - // + /** + * The rendering engine + */ public static RenderingEngine renderingEngine; - // - //Audio Engine - // + /** + * The audio engine + */ public static AudioEngine audioEngine; - - - // - //Core Engine signals - // - public static boolean ENGINE_SHUTDOWN_FLAG = false; - //main debug flag - //current enables imgui debug menu or not - public static boolean ENGINE_DEBUG = true; // @@ -91,40 +82,6 @@ public class Globals { // public static Profiler profiler; - // - //Garbage Collection - // - //set to true to trigger full GC every frame - //a full GC includes collecting old generations as well -- likely very laggy!! - public static boolean EXPLICIT_GC = false; - /** - * Number of frames to wait before triggering gc again - */ - public static final int GC_FRAME_FREQUENCY = 15; - - // - //Engine timing - // - public static boolean EXPLICIT_SLEEP = true; - - // - //Signals for running various parts of the engine - // - public static boolean RUN_DEMO = false; - public static boolean RUN_CLIENT = true; - public static boolean RUN_HIDDEN = false; //glfw session will be created with hidden window - public static boolean RUN_AUDIO = true; - public static boolean RUN_SCRIPTS = true; - public static boolean RUN_PHYSICS = true; //toggles whether physics is run or not - public static boolean RUN_FLUIDS = false; //toggles whether fluid physics is run or not - public static int clientCharacterID; - public static NetConfig netConfig = null; - - // - //Server manager thing - // - public static boolean RUN_SERVER = true; - // //Authentication manager // @@ -216,13 +173,6 @@ public class Globals { public static StructureScanningService structureScanningService; - - // - //Base engine creation flags - // - public static boolean HEADLESS = false; - - // // // Renderer flags diff --git a/src/main/java/electrosphere/engine/Main.java b/src/main/java/electrosphere/engine/Main.java index ea2a6dc5..639e52e3 100644 --- a/src/main/java/electrosphere/engine/Main.java +++ b/src/main/java/electrosphere/engine/Main.java @@ -43,6 +43,11 @@ public class Main { * Toggles automatic simulation */ public static final int FRAMESTEP_AUTO = 2; + + /** + * Number of frames to wait before triggering gc again + */ + public static final int GC_FRAME_FREQUENCY = 15; @@ -110,12 +115,12 @@ public class Main { Globals.initGlobals(); //init scripting engine - if(Globals.RUN_SCRIPTS){ + if(EngineState.EngineFlags.RUN_SCRIPTS){ Globals.engineState.threadManager.start(new LoadingThread(LoadingThreadType.SCRIPT_ENGINE)); } //controls - if(Globals.RUN_CLIENT){ + if(EngineState.EngineFlags.RUN_CLIENT){ Main.initControlHandler(); } @@ -126,7 +131,7 @@ public class Main { } //create the drawing context - if(Globals.RUN_CLIENT && !Globals.HEADLESS){ + if(EngineState.EngineFlags.RUN_CLIENT && !EngineState.EngineFlags.HEADLESS){ //create opengl context Globals.renderingEngine = new RenderingEngine(); Globals.renderingEngine.createOpenglContext(); @@ -149,7 +154,7 @@ public class Main { //create the audio context Globals.audioEngine = new AudioEngine(); - if(Globals.RUN_CLIENT && !Globals.HEADLESS && Globals.RUN_AUDIO){ + if(EngineState.EngineFlags.RUN_CLIENT && !EngineState.EngineFlags.HEADLESS && EngineState.EngineFlags.RUN_AUDIO){ Globals.audioEngine.init(); Globals.audioEngine.listAllDevices(); Globals.initDefaultAudioResources(); @@ -161,10 +166,10 @@ public class Main { //fire off a loading thread for the title menus/screen LoggerInterface.loggerStartup.INFO("Fire off loading thread"); - if(Globals.RUN_DEMO){ + if(EngineState.EngineFlags.RUN_DEMO){ LoadingThread serverThread = new LoadingThread(LoadingThreadType.DEMO_MENU); Globals.engineState.threadManager.start(serverThread); - } else if(Globals.RUN_CLIENT){ + } else if(EngineState.EngineFlags.RUN_CLIENT){ LoadingThread serverThread = new LoadingThread(LoadingThreadType.TITLE_MENU); Globals.engineState.threadManager.start(serverThread); } else { @@ -172,7 +177,7 @@ public class Main { } //recapture the screen for rendering - if(Globals.RUN_CLIENT && !Globals.HEADLESS){ + if(EngineState.EngineFlags.RUN_CLIENT && !EngineState.EngineFlags.HEADLESS){ LoggerInterface.loggerStartup.INFO("Recapture screen"); Globals.controlHandler.setRecapture(true); } @@ -213,7 +218,7 @@ public class Main { /// /// A S S E T M A N A G E R S T U F F /// - if(Globals.RUN_CLIENT){ + if(EngineState.EngineFlags.RUN_CLIENT){ Globals.profiler.beginCpuSample("Load Assets"); LoggerInterface.loggerEngine.DEBUG_LOOP("Begin load assets"); Globals.assetManager.loadAssetsInQueue(); @@ -242,7 +247,7 @@ public class Main { /// I N P U T C O N T R O L S /// //Poll controls - if(Globals.RUN_CLIENT){ + if(EngineState.EngineFlags.RUN_CLIENT){ Globals.profiler.beginCpuSample("Poll Controls"); LoggerInterface.loggerEngine.DEBUG_LOOP("Begin recapture screen"); Globals.controlHandler.pollControls(); @@ -262,7 +267,7 @@ public class Main { if(Globals.fileWatcherService != null){ Globals.fileWatcherService.poll(); } - if(Globals.RUN_SCRIPTS && Globals.scriptEngine != null){ + if(EngineState.EngineFlags.RUN_SCRIPTS && Globals.scriptEngine != null){ Globals.scriptEngine.scanScriptDir(); } @@ -335,7 +340,7 @@ public class Main { /// M A I N R E N D E R F U N C T I O N /// LoggerInterface.loggerEngine.DEBUG_LOOP("Begin rendering call"); - if(Globals.RUN_CLIENT && !Globals.HEADLESS){ + if(EngineState.EngineFlags.RUN_CLIENT && !EngineState.EngineFlags.HEADLESS){ Globals.profiler.beginCpuSample("render"); Globals.renderingEngine.drawScreen(); Globals.profiler.endCpuSample(); @@ -348,7 +353,7 @@ public class Main { /// G A R B A G E C H E C K /// Globals.profiler.beginCpuSample("gc"); - if(Globals.EXPLICIT_GC && Globals.engineState.timekeeper.getNumberOfRenderFramesElapsed() % Globals.GC_FRAME_FREQUENCY == 0){ + if(EngineState.EngineFlags.EXPLICIT_GC && Globals.engineState.timekeeper.getNumberOfRenderFramesElapsed() % Main.GC_FRAME_FREQUENCY == 0){ System.gc(); } Globals.profiler.endCpuSample(); @@ -360,12 +365,12 @@ public class Main { /// /// S H U T D O W N C H E C K /// - if(Globals.HEADLESS){ - if(Globals.ENGINE_SHUTDOWN_FLAG){ + if(EngineState.EngineFlags.HEADLESS){ + if(EngineState.EngineFlags.ENGINE_SHUTDOWN_FLAG){ running = false; } } else { - if(Globals.ENGINE_SHUTDOWN_FLAG || (Globals.RUN_CLIENT && GLFW.glfwWindowShouldClose(Globals.renderingEngine.getWindowPtr()))){ + if(EngineState.EngineFlags.ENGINE_SHUTDOWN_FLAG || (EngineState.EngineFlags.RUN_CLIENT && GLFW.glfwWindowShouldClose(Globals.renderingEngine.getWindowPtr()))){ running = false; } } @@ -378,7 +383,7 @@ public class Main { /// /// C L E A N U P T I M E V A R I A B L E S /// - if(Globals.EXPLICIT_SLEEP && Globals.engineState.timekeeper.getMostRecentRawFrametime() < 0.01f){ + if(EngineState.EngineFlags.EXPLICIT_SLEEP && Globals.engineState.timekeeper.getMostRecentRawFrametime() < 0.01f){ Globals.profiler.beginCpuSample("sleep"); if(Globals.engineState.timekeeper.getMostRecentRawFrametime() < targetFramePeriod){ Main.sleep((int)(1000.0 * (targetFramePeriod - Globals.engineState.timekeeper.getMostRecentRawFrametime()))); diff --git a/src/main/java/electrosphere/engine/cli/CLIParser.java b/src/main/java/electrosphere/engine/cli/CLIParser.java index de704831..d46c8cb7 100644 --- a/src/main/java/electrosphere/engine/cli/CLIParser.java +++ b/src/main/java/electrosphere/engine/cli/CLIParser.java @@ -3,7 +3,7 @@ package electrosphere.engine.cli; import java.util.Arrays; import java.util.List; -import electrosphere.engine.Globals; +import electrosphere.engine.EngineState; import electrosphere.logger.LoggerInterface; import electrosphere.logger.Logger.LogLevel; @@ -15,9 +15,9 @@ public class CLIParser { String argCurrent = argList.get(i); switch(argCurrent){ case "--headless": { - Globals.RUN_CLIENT = false; - Globals.RUN_SERVER = true; - Globals.HEADLESS = true; + EngineState.EngineFlags.RUN_CLIENT = false; + EngineState.EngineFlags.RUN_SERVER = true; + EngineState.EngineFlags.HEADLESS = true; } break; case "--maxLogs": { LoggerInterface.setInitLogLevel(LogLevel.LOOP_DEBUG); diff --git a/src/main/java/electrosphere/engine/loadingthreads/ChunkGenerationTestLoading.java b/src/main/java/electrosphere/engine/loadingthreads/ChunkGenerationTestLoading.java index dd51b2e5..208d2ba5 100644 --- a/src/main/java/electrosphere/engine/loadingthreads/ChunkGenerationTestLoading.java +++ b/src/main/java/electrosphere/engine/loadingthreads/ChunkGenerationTestLoading.java @@ -6,6 +6,7 @@ import electrosphere.auth.AuthenticationManager; import electrosphere.client.ui.menu.MenuGenerators; import electrosphere.client.ui.menu.WindowStrings; import electrosphere.client.ui.menu.WindowUtils; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.engine.signal.Signal.SignalType; import electrosphere.entity.scene.SceneGenerator; @@ -29,8 +30,8 @@ public class ChunkGenerationTestLoading { // //Set params we would expect to run with this thread // - Globals.RUN_CLIENT = true; - Globals.RUN_SERVER = true; + EngineState.EngineFlags.RUN_CLIENT = true; + EngineState.EngineFlags.RUN_SERVER = true; Globals.serverState.aiManager.setActive(false); @@ -73,7 +74,7 @@ public class ChunkGenerationTestLoading { //initialize the "virtual" objects simulation LoadingUtils.initMacroSimulation(); - LoggerInterface.loggerEngine.INFO("run server: " + Globals.RUN_SERVER + " run client: " + Globals.RUN_CLIENT); + LoggerInterface.loggerEngine.INFO("run server: " + EngineState.EngineFlags.RUN_SERVER + " run client: " + EngineState.EngineFlags.RUN_CLIENT); //init authentication LoadingUtils.initAuthenticationManager(false); //initialize the local connection diff --git a/src/main/java/electrosphere/engine/loadingthreads/ClientLoading.java b/src/main/java/electrosphere/engine/loadingthreads/ClientLoading.java index b95fb2c2..4f82d622 100644 --- a/src/main/java/electrosphere/engine/loadingthreads/ClientLoading.java +++ b/src/main/java/electrosphere/engine/loadingthreads/ClientLoading.java @@ -18,6 +18,7 @@ import electrosphere.client.ui.menu.WindowUtils; import electrosphere.client.ui.menu.mainmenu.MenuCharacterCreation; import electrosphere.controls.ControlHandler; import electrosphere.controls.cursor.CursorState; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.engine.signal.Signal.SignalType; import electrosphere.engine.threads.LabeledThread.ThreadLabel; @@ -203,7 +204,7 @@ public class ClientLoading { */ private static void initClientThread(){ //start client networking - if(Globals.RUN_CLIENT){ + if(EngineState.EngineFlags.RUN_CLIENT){ Globals.clientState.clientConnection = new ClientNetworking(NetUtils.getAddress(),NetUtils.getPort()); Globals.engineState.threadManager.start(ThreadLabel.NETWORKING_CLIENT, new Thread(Globals.clientState.clientConnection)); } @@ -380,7 +381,7 @@ public class ClientLoading { //wait for all the terrain data to arrive WindowUtils.updateLoadingWindow("REQUESTING FLUID CHUNKS FROM SERVER (" + Globals.clientState.fluidCellManager.getUnrequestedSize() + ")"); - while(blockForInit && Globals.clientState.fluidCellManager.containsUnrequestedCell() && Globals.engineState.threadManager.shouldKeepRunning() && Globals.RUN_FLUIDS){ + while(blockForInit && Globals.clientState.fluidCellManager.containsUnrequestedCell() && Globals.engineState.threadManager.shouldKeepRunning() && EngineState.EngineFlags.RUN_FLUIDS){ try { TimeUnit.MILLISECONDS.sleep(10); } catch (InterruptedException ex) { diff --git a/src/main/java/electrosphere/engine/loadingthreads/DebugSPWorldLoading.java b/src/main/java/electrosphere/engine/loadingthreads/DebugSPWorldLoading.java index b7a58358..26e2e7d3 100644 --- a/src/main/java/electrosphere/engine/loadingthreads/DebugSPWorldLoading.java +++ b/src/main/java/electrosphere/engine/loadingthreads/DebugSPWorldLoading.java @@ -6,6 +6,7 @@ import electrosphere.auth.AuthenticationManager; import electrosphere.client.ui.menu.MenuGenerators; import electrosphere.client.ui.menu.WindowStrings; import electrosphere.client.ui.menu.WindowUtils; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.engine.signal.Signal.SignalType; import electrosphere.entity.scene.SceneGenerator; @@ -41,7 +42,7 @@ public class DebugSPWorldLoading { LoadingUtils.initMacroSimulation(); - LoggerInterface.loggerEngine.INFO("run server: " + Globals.RUN_SERVER + " run client: " + Globals.RUN_CLIENT); + LoggerInterface.loggerEngine.INFO("run server: " + EngineState.EngineFlags.RUN_SERVER + " run client: " + EngineState.EngineFlags.RUN_CLIENT); //init authentication LoadingUtils.initAuthenticationManager(false); //initialize the local connection diff --git a/src/main/java/electrosphere/engine/loadingthreads/LevelEditorLoading.java b/src/main/java/electrosphere/engine/loadingthreads/LevelEditorLoading.java index 0d9ad235..b44997a4 100644 --- a/src/main/java/electrosphere/engine/loadingthreads/LevelEditorLoading.java +++ b/src/main/java/electrosphere/engine/loadingthreads/LevelEditorLoading.java @@ -7,6 +7,7 @@ import electrosphere.client.ui.menu.MenuGenerators; import electrosphere.client.ui.menu.WindowStrings; import electrosphere.client.ui.menu.WindowUtils; import electrosphere.client.ui.menu.mainmenu.MenuGeneratorsLevelEditor.LevelDescription; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.engine.signal.Signal.SignalType; import electrosphere.entity.scene.SceneFile; @@ -49,8 +50,8 @@ public class LevelEditorLoading { // //Set params we would expect to run with this thread // - Globals.RUN_CLIENT = true; - Globals.RUN_SERVER = true; + EngineState.EngineFlags.RUN_CLIENT = true; + EngineState.EngineFlags.RUN_SERVER = true; Globals.serverState.aiManager.setActive(false); @@ -69,7 +70,7 @@ public class LevelEditorLoading { //load just-created save SaveUtils.loadSave(saveName, true); - LoggerInterface.loggerEngine.INFO("run server: " + Globals.RUN_SERVER + " run client: " + Globals.RUN_CLIENT); + LoggerInterface.loggerEngine.INFO("run server: " + EngineState.EngineFlags.RUN_SERVER + " run client: " + EngineState.EngineFlags.RUN_CLIENT); //init authentication LoadingUtils.initAuthenticationManager(false); //initialize the local connection diff --git a/src/main/java/electrosphere/engine/loadingthreads/LevelLoading.java b/src/main/java/electrosphere/engine/loadingthreads/LevelLoading.java index 24cda9fa..7e5d0140 100644 --- a/src/main/java/electrosphere/engine/loadingthreads/LevelLoading.java +++ b/src/main/java/electrosphere/engine/loadingthreads/LevelLoading.java @@ -6,6 +6,7 @@ import electrosphere.auth.AuthenticationManager; import electrosphere.client.ui.menu.MenuGenerators; import electrosphere.client.ui.menu.WindowStrings; import electrosphere.client.ui.menu.WindowUtils; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.engine.signal.Signal.SignalType; import electrosphere.logger.LoggerInterface; @@ -39,7 +40,7 @@ public class LevelLoading { //load save SaveUtils.loadSave(saveName, false); - LoggerInterface.loggerEngine.INFO("run server: " + Globals.RUN_SERVER + " run client: " + Globals.RUN_CLIENT); + LoggerInterface.loggerEngine.INFO("run server: " + EngineState.EngineFlags.RUN_SERVER + " run client: " + EngineState.EngineFlags.RUN_CLIENT); //init authentication LoadingUtils.initAuthenticationManager(false); //initialize the local connection diff --git a/src/main/java/electrosphere/engine/loadingthreads/LoadingUtils.java b/src/main/java/electrosphere/engine/loadingthreads/LoadingUtils.java index 1b99207e..3c090feb 100644 --- a/src/main/java/electrosphere/engine/loadingthreads/LoadingUtils.java +++ b/src/main/java/electrosphere/engine/loadingthreads/LoadingUtils.java @@ -13,6 +13,7 @@ import org.joml.Vector3i; import electrosphere.auth.AuthenticationManager; import electrosphere.data.creature.CreatureData; import electrosphere.data.creature.visualattribute.VisualAttribute; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.engine.threads.LabeledThread.ThreadLabel; import electrosphere.entity.types.EntityTypes.EntityType; @@ -48,7 +49,7 @@ public class LoadingUtils { static void initServerThread(){ //start server networking - if(Globals.RUN_SERVER){ + if(EngineState.EngineFlags.RUN_SERVER){ Globals.serverState.server = new Server(NetUtils.getPort()); Thread serverThread = new Thread(Globals.serverState.server); Globals.engineState.threadManager.start(ThreadLabel.NETWORKING_SERVER, serverThread); @@ -60,7 +61,7 @@ public class LoadingUtils { * @param mock true if it should make a mock authentication manager, false for a real auth manager */ static void initAuthenticationManager(boolean mock){ - if(Globals.RUN_SERVER){ + if(EngineState.EngineFlags.RUN_SERVER){ Globals.authenticationManager = AuthenticationManager.create(mock); } } @@ -69,7 +70,7 @@ public class LoadingUtils { static void initClientThread(){ //start client networking - if(Globals.RUN_CLIENT){ + if(EngineState.EngineFlags.RUN_CLIENT){ Globals.clientState.clientConnection = new ClientNetworking(NetUtils.getAddress(),NetUtils.getPort()); Globals.engineState.threadManager.start(ThreadLabel.NETWORKING_CLIENT, new Thread(Globals.clientState.clientConnection)); } diff --git a/src/main/java/electrosphere/engine/loadingthreads/ServerLoading.java b/src/main/java/electrosphere/engine/loadingthreads/ServerLoading.java index 39d0689c..b4a839d3 100644 --- a/src/main/java/electrosphere/engine/loadingthreads/ServerLoading.java +++ b/src/main/java/electrosphere/engine/loadingthreads/ServerLoading.java @@ -3,6 +3,7 @@ package electrosphere.engine.loadingthreads; import electrosphere.client.ui.menu.MenuGenerators; import electrosphere.client.ui.menu.WindowStrings; import electrosphere.client.ui.menu.WindowUtils; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.engine.signal.Signal.SignalType; import electrosphere.entity.scene.SceneGenerator; @@ -45,7 +46,7 @@ public class ServerLoading { LoadingUtils.initMacroSimulation(); - LoggerInterface.loggerEngine.INFO("run server: " + Globals.RUN_SERVER + " run client: " + Globals.RUN_CLIENT); + LoggerInterface.loggerEngine.INFO("run server: " + EngineState.EngineFlags.RUN_SERVER + " run client: " + EngineState.EngineFlags.RUN_CLIENT); //init authentication LoadingUtils.initAuthenticationManager(false); //initialize the local connection diff --git a/src/main/java/electrosphere/engine/loadingthreads/ViewportLoading.java b/src/main/java/electrosphere/engine/loadingthreads/ViewportLoading.java index 81f4f887..7f884e5b 100644 --- a/src/main/java/electrosphere/engine/loadingthreads/ViewportLoading.java +++ b/src/main/java/electrosphere/engine/loadingthreads/ViewportLoading.java @@ -8,6 +8,7 @@ import electrosphere.auth.AuthenticationManager; import electrosphere.client.ui.menu.MenuGenerators; import electrosphere.client.ui.menu.WindowStrings; import electrosphere.client.ui.menu.WindowUtils; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.engine.signal.Signal.SignalType; import electrosphere.logger.LoggerInterface; @@ -41,7 +42,7 @@ public class ViewportLoading { // //connect client to server - LoggerInterface.loggerEngine.INFO("run server: " + Globals.RUN_SERVER + " run client: " + Globals.RUN_CLIENT); + LoggerInterface.loggerEngine.INFO("run server: " + EngineState.EngineFlags.RUN_SERVER + " run client: " + EngineState.EngineFlags.RUN_CLIENT); ViewportLoading.initInMemoryDB(); LoadingUtils.initAuthenticationManager(true); Globals.clientState.clientUsername = "leveleditor"; diff --git a/src/main/java/electrosphere/engine/time/Timekeeper.java b/src/main/java/electrosphere/engine/time/Timekeeper.java index 46029d03..b7c5ad6e 100644 --- a/src/main/java/electrosphere/engine/time/Timekeeper.java +++ b/src/main/java/electrosphere/engine/time/Timekeeper.java @@ -2,7 +2,7 @@ package electrosphere.engine.time; import org.lwjgl.glfw.GLFW; -import electrosphere.engine.Globals; +import electrosphere.engine.EngineState; /** * Service that keeps track of time for main thread activities. @@ -47,7 +47,7 @@ public class Timekeeper { * @return The time (in seconds) */ private double getTime(){ - if(Globals.HEADLESS){ + if(EngineState.EngineFlags.HEADLESS){ return System.currentTimeMillis() - engineStartTime; } else { return GLFW.glfwGetTime(); @@ -60,7 +60,7 @@ public class Timekeeper { */ public void init(double simFrameTime){ this.simFrameTime = simFrameTime; - if(Globals.HEADLESS){ + if(EngineState.EngineFlags.HEADLESS){ engineStartTime = System.currentTimeMillis(); } currentTime = getTime(); diff --git a/src/main/java/electrosphere/net/client/protocol/EntityProtocol.java b/src/main/java/electrosphere/net/client/protocol/EntityProtocol.java index 0cdae73b..0feb1a2c 100644 --- a/src/main/java/electrosphere/net/client/protocol/EntityProtocol.java +++ b/src/main/java/electrosphere/net/client/protocol/EntityProtocol.java @@ -189,7 +189,6 @@ public class EntityProtocol implements ClientProtocolTemplate { ViewModelData viewModelData = creatureType.getViewModelData(); if(Globals.clientState.clientPlayer != null && message.getpropertyValue() == Globals.clientState.clientPlayer.getId()){ LoggerInterface.loggerNetworking.DEBUG("Set this player's entity id!"); - Globals.clientCharacterID = message.getentityID(); Globals.clientState.playerEntity = target; if(viewModelData != null && viewModelData.getFirstPersonModelPath() != null){ Globals.clientState.firstPersonEntity = CreatureUtils.clientCreateViewModel( diff --git a/src/main/java/electrosphere/net/config/NetConfig.java b/src/main/java/electrosphere/net/config/NetConfig.java index d9c452ac..82f19339 100644 --- a/src/main/java/electrosphere/net/config/NetConfig.java +++ b/src/main/java/electrosphere/net/config/NetConfig.java @@ -4,7 +4,6 @@ import java.io.File; import java.io.IOException; import java.nio.file.Files; -import electrosphere.engine.Globals; import electrosphere.logger.LoggerInterface; import electrosphere.util.Utilities; @@ -70,15 +69,17 @@ public class NetConfig { /** * Reads the net config file */ - public static void readNetConfig(){ + public static NetConfig readNetConfig(){ + NetConfig rVal = null; File file = new File("./netconfig.json"); if(file.exists()){ try { - Globals.netConfig = Utilities.deserialize(Files.readString(file.toPath()), NetConfig.class); + rVal = Utilities.deserialize(Files.readString(file.toPath()), NetConfig.class); } catch (IOException e) { LoggerInterface.loggerFileIO.ERROR(e); } } + return rVal; } } diff --git a/src/main/java/electrosphere/net/server/protocol/AuthProtocol.java b/src/main/java/electrosphere/net/server/protocol/AuthProtocol.java index d7fda56e..6d546a5a 100644 --- a/src/main/java/electrosphere/net/server/protocol/AuthProtocol.java +++ b/src/main/java/electrosphere/net/server/protocol/AuthProtocol.java @@ -1,6 +1,7 @@ package electrosphere.net.server.protocol; import electrosphere.auth.AuthenticationManager; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.net.parser.net.message.AuthMessage; import electrosphere.net.parser.net.message.PlayerMessage; @@ -25,7 +26,7 @@ public class AuthProtocol implements ServerProtocolTemplate { Player newPlayer = new Player(connectionHandler, loginId); Globals.serverState.playerManager.registerPlayer(newPlayer); //there is a race condition here where if a local non-server client connects first then it breaks - if(connectionHandler.getIPAddress().contains("127.0.0.1") && Globals.RUN_CLIENT == true && Globals.clientState.clientPlayer == null){ + if(connectionHandler.getIPAddress().contains("127.0.0.1") && EngineState.EngineFlags.RUN_CLIENT == true && Globals.clientState.clientPlayer == null){ Globals.clientState.clientPlayer = newPlayer; } connectionHandler.addMessagetoOutgoingQueue(PlayerMessage.constructSet_IDMessage(connectionHandler.getPlayerId())); diff --git a/src/main/java/electrosphere/renderer/RenderingEngine.java b/src/main/java/electrosphere/renderer/RenderingEngine.java index f62e929e..1c523661 100644 --- a/src/main/java/electrosphere/renderer/RenderingEngine.java +++ b/src/main/java/electrosphere/renderer/RenderingEngine.java @@ -26,6 +26,7 @@ import org.lwjgl.opengl.GLDebugMessageCallback; import org.lwjgl.system.MemoryStack; import org.lwjgl.system.MemoryUtil; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.engine.assetmanager.AssetDataStrings; import electrosphere.engine.os.OSDragAndDrop; @@ -221,13 +222,13 @@ public class RenderingEngine { glslVersion = "#version 450"; GLFW.glfwWindowHint(GLFW.GLFW_OPENGL_PROFILE, GLFW.GLFW_OPENGL_CORE_PROFILE); //headless option - if(Globals.RUN_HIDDEN){ + if(EngineState.EngineFlags.RUN_HIDDEN){ GLFW.glfwWindowHint(GLFW.GLFW_VISIBLE, GLFW.GLFW_FALSE); } if(!Globals.WINDOW_DECORATED){ GLFW.glfwWindowHint(GLFW.GLFW_DECORATED, GLFW.GLFW_FALSE); } - if(Globals.ENGINE_DEBUG){ + if(EngineState.EngineFlags.ENGINE_DEBUG){ GLFW.glfwWindowHint(GLFW.GLFW_OPENGL_DEBUG_CONTEXT, GLFW.GLFW_TRUE); } diff --git a/src/main/java/electrosphere/renderer/meshgen/MeshLoader.java b/src/main/java/electrosphere/renderer/meshgen/MeshLoader.java index 230ecd92..cc7fd2fa 100644 --- a/src/main/java/electrosphere/renderer/meshgen/MeshLoader.java +++ b/src/main/java/electrosphere/renderer/meshgen/MeshLoader.java @@ -16,7 +16,7 @@ import org.lwjgl.assimp.AIMesh; import org.lwjgl.assimp.AIVector3D; import org.lwjgl.assimp.AIVertexWeight; -import electrosphere.engine.Globals; +import electrosphere.engine.EngineState; import electrosphere.logger.LoggerInterface; import electrosphere.renderer.loading.ModelPretransforms; import electrosphere.renderer.model.Bone; @@ -38,7 +38,7 @@ public class MeshLoader { // VAO // //Check for headless to not call gl functions when not running with gpu - if(!Globals.HEADLESS){ + if(!EngineState.EngineFlags.HEADLESS){ rVal.generateVAO(); } @@ -310,7 +310,7 @@ public class MeshLoader { boneWeightDataBuffer.flip(); } - if(!Globals.HEADLESS){ + if(!EngineState.EngineFlags.HEADLESS){ rVal.bufferBoneIndices(boneIndexDataBuffer); rVal.bufferBoneWeights(boneWeightDataBuffer); @@ -334,7 +334,7 @@ public class MeshLoader { - if(!Globals.HEADLESS){ + if(!EngineState.EngineFlags.HEADLESS){ rVal.setShader(VisualShader.smartAssembleShader(has_bones, apply_lighting)); rVal.setShader(VisualShader.smartAssembleShader(has_bones, apply_lighting)); rVal.setOITShader(VisualShader.smartAssembleOITProgram(has_bones, apply_lighting)); diff --git a/src/main/java/electrosphere/renderer/model/Mesh.java b/src/main/java/electrosphere/renderer/model/Mesh.java index 13f366fa..f5999275 100644 --- a/src/main/java/electrosphere/renderer/model/Mesh.java +++ b/src/main/java/electrosphere/renderer/model/Mesh.java @@ -1,6 +1,7 @@ package electrosphere.renderer.model; import electrosphere.client.entity.camera.CameraEntityUtils; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.renderer.OpenGLState; import electrosphere.renderer.RenderPipelineState; @@ -131,7 +132,7 @@ public class Mesh { * @param vertexDimension the dimensionality of the data (2d vectors, 3d vectors, 4d vectors, etc) */ public void bufferVertices(FloatBuffer verticies, int vertexDimension){ - if(!Globals.HEADLESS){ + if(!EngineState.EngineFlags.HEADLESS){ vertexBuffer = bufferCustomFloatAttribArray(verticies,vertexDimension,0); } } @@ -142,7 +143,7 @@ public class Mesh { * @param normalDimension the dimensionality of the data (2d vector, 3d vector, 4d vector) */ public void bufferNormals(FloatBuffer normals, int normalDimension){ - if(!Globals.HEADLESS){ + if(!EngineState.EngineFlags.HEADLESS){ normalBuffer = bufferCustomFloatAttribArray(normals,normalDimension,1); } } @@ -153,7 +154,7 @@ public class Mesh { * @param elementCount The number of faces */ public void bufferFaces(IntBuffer faces, int elementCount){ - if(!Globals.HEADLESS){ + if(!EngineState.EngineFlags.HEADLESS){ elementArrayBuffer = glGenBuffers(); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, elementArrayBuffer); GL15.glBufferData(GL_ELEMENT_ARRAY_BUFFER, faces, GL_STATIC_DRAW); @@ -175,7 +176,7 @@ public class Mesh { * @param textureDimension The dimensionality of the texture coordinate data (3d vec, 4d vec, etc) */ public void bufferTextureCoords(FloatBuffer coords, int textureDimension){ - if(!Globals.HEADLESS){ + if(!EngineState.EngineFlags.HEADLESS){ textureCoordBuffer = bufferCustomFloatAttribArray(coords, textureDimension, 4); } } @@ -213,7 +214,7 @@ public class Mesh { */ public int bufferCustomFloatAttribArray(FloatBuffer buffer, int bufferDimension, int attribIndex){ int bufferPointer = 0; - if(!Globals.HEADLESS){ + if(!EngineState.EngineFlags.HEADLESS){ bufferPointer = glGenBuffers(); glBindBuffer(GL_ARRAY_BUFFER, bufferPointer); GL15.glBufferData(GL_ARRAY_BUFFER, buffer, GL_STATIC_DRAW); @@ -232,7 +233,7 @@ public class Mesh { */ public int bufferCustomIntAttribArray(IntBuffer buffer, int bufferDimension, int attribIndex){ int bufferPointer = 0; - if(!Globals.HEADLESS){ + if(!EngineState.EngineFlags.HEADLESS){ bufferPointer = glGenBuffers(); glBindBuffer(GL_ARRAY_BUFFER, bufferPointer); GL15.glBufferData(GL_ARRAY_BUFFER, buffer, GL_STATIC_DRAW); @@ -252,7 +253,7 @@ public class Mesh { */ public int bufferCustomUIntAttribArray(IntBuffer buffer, int bufferDimension, int attribIndex){ int bufferPointer = 0; - if(!Globals.HEADLESS){ + if(!EngineState.EngineFlags.HEADLESS){ bufferPointer = glGenBuffers(); glBindBuffer(GL_ARRAY_BUFFER, bufferPointer); GL15.glBufferData(GL_ARRAY_BUFFER, buffer, GL_STATIC_DRAW); diff --git a/src/main/java/electrosphere/renderer/texture/Texture.java b/src/main/java/electrosphere/renderer/texture/Texture.java index a6a7e518..19177e55 100644 --- a/src/main/java/electrosphere/renderer/texture/Texture.java +++ b/src/main/java/electrosphere/renderer/texture/Texture.java @@ -1,5 +1,6 @@ package electrosphere.renderer.texture; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.logger.LoggerInterface; import electrosphere.renderer.OpenGLState; @@ -146,7 +147,7 @@ public class Texture { throw new Error("Path is empty"); } this.path = path; - if(!Globals.HEADLESS){ + if(!EngineState.EngineFlags.HEADLESS){ LoggerInterface.loggerRenderer.DEBUG("Setup texture object"); //generate the texture object on gpu this.texturePointer = GL40.glGenTextures(); @@ -233,7 +234,7 @@ public class Texture { * @param height the 'height' of the 'texture' */ public Texture(OpenGLState openGlState, ByteBuffer buffer, int width, int height){ - if(!Globals.HEADLESS){ + if(!EngineState.EngineFlags.HEADLESS){ //generate the texture object on gpu this.texturePointer = GL40.glGenTextures(); Globals.renderingEngine.checkError(); @@ -268,7 +269,7 @@ public class Texture { */ public static Texture createBitmap(OpenGLState openGlState, ByteBuffer buffer, int width, int height){ Texture rVal = null; - if(!Globals.HEADLESS){ + if(!EngineState.EngineFlags.HEADLESS){ rVal = new Texture(); //generate the texture object on gpu rVal.texturePointer = GL40.glGenTextures(); diff --git a/src/main/java/electrosphere/server/datacell/Realm.java b/src/main/java/electrosphere/server/datacell/Realm.java index 93bf4b5e..d00a4d80 100644 --- a/src/main/java/electrosphere/server/datacell/Realm.java +++ b/src/main/java/electrosphere/server/datacell/Realm.java @@ -3,6 +3,7 @@ package electrosphere.server.datacell; import electrosphere.collision.CollisionEngine; import electrosphere.collision.PhysicsEntityUtils; import electrosphere.collision.hitbox.HitboxManager; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.entity.Entity; import electrosphere.entity.scene.Scene; @@ -240,7 +241,7 @@ public class Realm { // //simulate bullet physics engine step - if(Globals.RUN_PHYSICS){ + if(EngineState.EngineFlags.RUN_PHYSICS){ collisionEngine.simulatePhysics((float)Globals.engineState.timekeeper.getSimFrameTime()); collisionEngine.updateDynamicObjectTransforms(); PhysicsEntityUtils.serverRepositionEntities(this,collisionEngine); diff --git a/src/main/java/electrosphere/server/datacell/gridded/GriddedDataCellManager.java b/src/main/java/electrosphere/server/datacell/gridded/GriddedDataCellManager.java index fc1d86d5..3e70f48d 100644 --- a/src/main/java/electrosphere/server/datacell/gridded/GriddedDataCellManager.java +++ b/src/main/java/electrosphere/server/datacell/gridded/GriddedDataCellManager.java @@ -16,6 +16,7 @@ import org.joml.Vector3d; import org.joml.Vector3i; import electrosphere.client.block.BlockChunkData; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.engine.threads.ThreadCounts; import electrosphere.entity.Entity; @@ -711,7 +712,7 @@ public class GriddedDataCellManager implements DataCellManager, VoxelCellManager } //queue fluid simulation - if(Globals.RUN_FLUIDS){ + if(EngineState.EngineFlags.RUN_FLUIDS){ Vector3i cellPos = this.getCellWorldPosition(cell); if(cellPos != null){ this.serverFluidManager.queue(cellPos.x, cellPos.y, cellPos.z); @@ -720,7 +721,7 @@ public class GriddedDataCellManager implements DataCellManager, VoxelCellManager } //simulate fluids - if(Globals.RUN_FLUIDS){ + if(EngineState.EngineFlags.RUN_FLUIDS){ this.serverFluidManager.simulate((ServerFluidChunk fluidChunk) -> { ServerDataCell cell = getCellAtWorldPosition(fluidChunk.getWorldPosition()); ServerFluidChunk chunk = getFluidChunkAtPosition(fluidChunk.getWorldPosition()); diff --git a/src/main/java/electrosphere/server/physics/fluid/manager/ServerFluidManager.java b/src/main/java/electrosphere/server/physics/fluid/manager/ServerFluidManager.java index 88699ebe..68c7ea37 100644 --- a/src/main/java/electrosphere/server/physics/fluid/manager/ServerFluidManager.java +++ b/src/main/java/electrosphere/server/physics/fluid/manager/ServerFluidManager.java @@ -1,6 +1,7 @@ package electrosphere.server.physics.fluid.manager; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.server.datacell.ServerWorldData; import electrosphere.server.physics.fluid.diskmap.FluidDiskMap; @@ -74,7 +75,7 @@ public class ServerFluidManager { ServerTerrainManager serverTerrainManager; //controls whether fluid simulation should actually happen or not - boolean simulate = Globals.RUN_FLUIDS; + boolean simulate = EngineState.EngineFlags.RUN_FLUIDS; @Exclude /** diff --git a/src/test/java/electrosphere/entity/SpawnAllEntitiesTests.java b/src/test/java/electrosphere/entity/SpawnAllEntitiesTests.java index ec67ebeb..0c14b7f2 100644 --- a/src/test/java/electrosphere/entity/SpawnAllEntitiesTests.java +++ b/src/test/java/electrosphere/entity/SpawnAllEntitiesTests.java @@ -13,6 +13,7 @@ import electrosphere.data.foliage.FoliageType; import electrosphere.data.foliage.FoliageTypeLoader; import electrosphere.data.item.Item; import electrosphere.data.item.ItemDataMap; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.entity.types.EntityTypes.EntityType; import electrosphere.entity.types.common.CommonEntityUtils; @@ -32,7 +33,7 @@ public class SpawnAllEntitiesTests extends EntityTestTemplate { @Disabled @IntegrationTest public void spawnAllEntities(){ - Globals.ENGINE_DEBUG = false; + EngineState.EngineFlags.ENGINE_DEBUG = false; assertDoesNotThrow(() -> { CreatureTypeLoader creatureLoader = Globals.gameConfigCurrent.getCreatureTypeLoader(); diff --git a/src/test/java/electrosphere/renderer/ui/UIExtensionTests.java b/src/test/java/electrosphere/renderer/ui/UIExtensionTests.java index 14f3a6de..b08adbce 100644 --- a/src/test/java/electrosphere/renderer/ui/UIExtensionTests.java +++ b/src/test/java/electrosphere/renderer/ui/UIExtensionTests.java @@ -10,6 +10,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import static electrosphere.test.testutils.Assertions.*; import electrosphere.client.ui.menu.WindowUtils; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.engine.Main; import electrosphere.renderer.ui.elements.Div; @@ -30,8 +31,8 @@ public class UIExtensionTests { assertDoesNotThrow(() -> { Globals.WINDOW_DECORATED = false; Globals.WINDOW_FULLSCREEN = true; - Globals.RUN_AUDIO = false; - Globals.RUN_SCRIPTS = false; + EngineState.EngineFlags.RUN_AUDIO = false; + EngineState.EngineFlags.RUN_SCRIPTS = false; Globals.WINDOW_WIDTH = 1920; Globals.WINDOW_HEIGHT = 1080; EngineInit.initGraphicalEngine(); @@ -46,8 +47,8 @@ public class UIExtensionTests { public void test_Screencapture_Match(){ Globals.WINDOW_DECORATED = false; Globals.WINDOW_FULLSCREEN = true; - Globals.RUN_AUDIO = false; - Globals.RUN_SCRIPTS = false; + EngineState.EngineFlags.RUN_AUDIO = false; + EngineState.EngineFlags.RUN_SCRIPTS = false; Globals.WINDOW_WIDTH = 1920; Globals.WINDOW_HEIGHT = 1080; EngineInit.initGraphicalEngine(); @@ -72,8 +73,8 @@ public class UIExtensionTests { public void test_Screencapture_Blank_Match(){ Globals.WINDOW_DECORATED = false; Globals.WINDOW_FULLSCREEN = true; - Globals.RUN_AUDIO = false; - Globals.RUN_SCRIPTS = false; + EngineState.EngineFlags.RUN_AUDIO = false; + EngineState.EngineFlags.RUN_SCRIPTS = false; Globals.WINDOW_WIDTH = 1920; Globals.WINDOW_HEIGHT = 1080; EngineInit.initGraphicalEngine(); diff --git a/src/test/java/electrosphere/test/integration/StartupTest.java b/src/test/java/electrosphere/test/integration/StartupTest.java index ae02b859..f4408d12 100644 --- a/src/test/java/electrosphere/test/integration/StartupTest.java +++ b/src/test/java/electrosphere/test/integration/StartupTest.java @@ -2,7 +2,7 @@ package electrosphere.test.integration; import electrosphere.test.annotations.IntegrationSetup; import electrosphere.test.annotations.IntegrationTest; -import electrosphere.engine.Globals; +import electrosphere.engine.EngineState; import electrosphere.engine.profiler.Profiler; import electrosphere.net.NetUtils; @@ -10,9 +10,9 @@ public class StartupTest { @IntegrationSetup public void testStartupHeadless(){ - Globals.RUN_CLIENT = false; - Globals.RUN_SERVER = true; - Globals.HEADLESS = true; + EngineState.EngineFlags.RUN_CLIENT = false; + EngineState.EngineFlags.RUN_SERVER = true; + EngineState.EngineFlags.HEADLESS = true; Profiler.PROFILE = false; NetUtils.setPort(0); // Main.startUp(); diff --git a/src/test/java/electrosphere/test/template/extensions/UIExtension.java b/src/test/java/electrosphere/test/template/extensions/UIExtension.java index bce2cfff..22bf025d 100644 --- a/src/test/java/electrosphere/test/template/extensions/UIExtension.java +++ b/src/test/java/electrosphere/test/template/extensions/UIExtension.java @@ -4,6 +4,7 @@ import org.junit.jupiter.api.extension.AfterEachCallback; import org.junit.jupiter.api.extension.BeforeEachCallback; import org.junit.jupiter.api.extension.ExtensionContext; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.engine.Main; import electrosphere.test.testutils.EngineInit; @@ -18,8 +19,8 @@ public class UIExtension implements BeforeEachCallback, AfterEachCallback { public void beforeEach(ExtensionContext context) throws Exception { Globals.WINDOW_DECORATED = false; Globals.WINDOW_FULLSCREEN = true; - Globals.RUN_AUDIO = false; - Globals.RUN_SCRIPTS = false; + EngineState.EngineFlags.RUN_AUDIO = false; + EngineState.EngineFlags.RUN_SCRIPTS = false; Globals.WINDOW_WIDTH = 1920; Globals.WINDOW_HEIGHT = 1080; EngineInit.initGraphicalEngine(); diff --git a/src/test/java/electrosphere/test/testutils/EngineInit.java b/src/test/java/electrosphere/test/testutils/EngineInit.java index 67b5a196..1bb0f54b 100644 --- a/src/test/java/electrosphere/test/testutils/EngineInit.java +++ b/src/test/java/electrosphere/test/testutils/EngineInit.java @@ -4,6 +4,7 @@ import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.Assertions; +import electrosphere.engine.EngineState; import electrosphere.engine.Globals; import electrosphere.engine.Main; import electrosphere.engine.loadingthreads.LoadingThread; @@ -30,10 +31,10 @@ public class EngineInit { * Initializes the engine */ public static void initHeadlessEngine(){ - Globals.RUN_CLIENT = true; - Globals.RUN_SERVER = true; - Globals.RUN_AUDIO = false; - Globals.HEADLESS = true; + EngineState.EngineFlags.RUN_CLIENT = true; + EngineState.EngineFlags.RUN_SERVER = true; + EngineState.EngineFlags.RUN_AUDIO = false; + EngineState.EngineFlags.HEADLESS = true; Profiler.PROFILE = false; NetUtils.setPort(0); Main.startUp(); @@ -43,11 +44,11 @@ public class EngineInit { * Initializes the engine */ public static void initGraphicalEngine(){ - Globals.RUN_CLIENT = true; - Globals.RUN_SERVER = true; - Globals.RUN_AUDIO = false; - Globals.RUN_SCRIPTS = false; - Globals.HEADLESS = false; + EngineState.EngineFlags.RUN_CLIENT = true; + EngineState.EngineFlags.RUN_SERVER = true; + EngineState.EngineFlags.RUN_AUDIO = false; + EngineState.EngineFlags.RUN_SCRIPTS = false; + EngineState.EngineFlags.HEADLESS = false; Profiler.PROFILE = false; NetUtils.setPort(0); Main.startUp();