Compare commits
	
		
			No commits in common. "512998eb244e4f92a3958fcd9d666becce7d24cc" and "077cffa2e27c16e42724644a301f5b0b2b52988c" have entirely different histories.
		
	
	
		
			512998eb24
			...
			077cffa2e2
		
	
		
| @ -170,30 +170,17 @@ Cellular Automata Fluid Dynamics System | |||||||
|  - Advect force |  - Advect force | ||||||
|  - Advect density |  - Advect density | ||||||
|  - Diffuse density |  - Diffuse density | ||||||
|  - Do not bound to single chunks |  | ||||||
| 
 |  | ||||||
| Fluid Chunk System |  | ||||||
|  - Basic model creation |  | ||||||
|  - Streaming chunks over network |  | ||||||
|  - Only add compression when it starts to become an issue |  | ||||||
| 
 | 
 | ||||||
| Fix character movement | Fix character movement | ||||||
|  - Walking left or right while turning camera is very jittery |  - Walking left or right while turning camera is very jittery | ||||||
| 
 | 
 | ||||||
| Fix Frustum Culling for skybox | Fix Frustum Culling for skybox | ||||||
| 
 | 
 | ||||||
| Free camera system that can detatch from player entity |  | ||||||
| 
 |  | ||||||
| Fix Character creation preview not working | Fix Character creation preview not working | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| Clean up main method/class | Clean up main method/class | ||||||
| 
 | 
 | ||||||
| Bring LWJGL version up to latest |  | ||||||
| 
 |  | ||||||
| Include Remotery library |  | ||||||
| 
 |  | ||||||
| Physics-controlled objects system |  | ||||||
| 
 |  | ||||||
| Shader library system | Shader library system | ||||||
|  - Abiltiy to include the shader library in individual files (ie implement #include) |  - Abiltiy to include the shader library in individual files (ie implement #include) | ||||||
| 
 | 
 | ||||||
| @ -355,12 +342,3 @@ dynamic camp/house system - npcs will gradually join your camp the longer you st | |||||||
| dynamic warfare system | dynamic warfare system | ||||||
|   - Guard towers that need to be captured by factions before enabling assault on real settlements |   - Guard towers that need to be captured by factions before enabling assault on real settlements | ||||||
|   - Raids against villages |   - Raids against villages | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| # Known bugs |  | ||||||
|  - Draw cell manager iso values dont make sense and should scale empty cells based on neighbor cells |  | ||||||
|  - Draw cell manager logic doesn't fill in border cells properly (the logic to check if a border cell exists always succeeds as long as the potential location is within world bounds, not if it actually exists in cache) |  | ||||||
|  - Control handler re-polls for mouse coordiantes for each control handler group it processes, so only the first group gets the mouse movement event properly |  | ||||||
| @ -113,7 +113,9 @@ public class FluidCell { | |||||||
|      * Fills in the internal arrays of data for generate terrain models |      * Fills in the internal arrays of data for generate terrain models | ||||||
|      */ |      */ | ||||||
|     private void fillInData(){ |     private void fillInData(){ | ||||||
| 
 |         if(worldPos.x == 1 && worldPos.y == 0 && worldPos.z == 0){ | ||||||
|  |             System.out.println("aaaa"); | ||||||
|  |         } | ||||||
|         // |         // | ||||||
|         //fill in data |         //fill in data | ||||||
|         // |         // | ||||||
| @ -291,10 +293,8 @@ public class FluidCell { | |||||||
|                             currZ >= 0 && currZ < ServerTerrainChunk.CHUNK_DATA_GENERATOR_SIZE && |                             currZ >= 0 && currZ < ServerTerrainChunk.CHUNK_DATA_GENERATOR_SIZE && | ||||||
|                             (1 + weights[x][y][z]) < weights[currX][currY][currZ] |                             (1 + weights[x][y][z]) < weights[currX][currY][currZ] | ||||||
|                         ){ |                         ){ | ||||||
|  |                             System.out.println("set neighbor weight"); | ||||||
|                             weights[x][y][z] = -(1 - weights[currX][currY][currZ]); |                             weights[x][y][z] = -(1 - weights[currX][currY][currZ]); | ||||||
|                             if(weights[x][y][z] >= 0){ |  | ||||||
|                                 weights[x][y][z] = -0.01f; |  | ||||||
|                             } |  | ||||||
|                         } |                         } | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
|  | |||||||
| @ -32,7 +32,6 @@ public class ClientFunctions { | |||||||
|         updateSkyboxPos(); |         updateSkyboxPos(); | ||||||
|         Globals.clientSceneWrapper.destroyEntitiesOutsideSimRange(); |         Globals.clientSceneWrapper.destroyEntitiesOutsideSimRange(); | ||||||
|         InstanceUpdater.updateInstancedActorPriority(); |         InstanceUpdater.updateInstancedActorPriority(); | ||||||
|         Globals.cameraHandler.updateGlobalCamera(); |  | ||||||
|         // updateCellManager(); |         // updateCellManager(); | ||||||
|     } |     } | ||||||
|      |      | ||||||
|  | |||||||
| @ -20,7 +20,6 @@ public class CameraHandler { | |||||||
|     float pitch = 50; |     float pitch = 50; | ||||||
|     Vector3f cameraRotationVector = new Vector3f(); |     Vector3f cameraRotationVector = new Vector3f(); | ||||||
|     Vector3f radialOffset = new Vector3f(0,1,0); |     Vector3f radialOffset = new Vector3f(0,1,0); | ||||||
|     boolean trackPlayerEntity = true; |  | ||||||
| 
 | 
 | ||||||
|     public void handleMouseEvent(MouseEvent event){ |     public void handleMouseEvent(MouseEvent event){ | ||||||
| 
 | 
 | ||||||
| @ -90,10 +89,6 @@ public class CameraHandler { | |||||||
|             // cameraRotationVector.normalize(); |             // cameraRotationVector.normalize(); | ||||||
|             // System.out.println(yaw + " " + pitch); |             // System.out.println(yaw + " " + pitch); | ||||||
|         } |         } | ||||||
|         if(trackPlayerEntity && Globals.playerEntity != null){ |  | ||||||
|             Vector3d entityPos = EntityUtils.getPosition(Globals.playerEntity); |  | ||||||
|             CameraEntityUtils.setCameraCenter(Globals.playerCamera, new Vector3f((float)entityPos.x,(float)entityPos.y,(float)entityPos.z).add(CameraEntityUtils.getOrbitalCameraRadialOffset(Globals.playerCamera))); |  | ||||||
|         } |  | ||||||
|         //update view matrix offset |         //update view matrix offset | ||||||
|         float xFactor = (float)Math.cos(yaw / 180.0f * Math.PI); |         float xFactor = (float)Math.cos(yaw / 180.0f * Math.PI); | ||||||
|         float yFactor = (float)Math.sin(yaw / 180.0f * Math.PI); |         float yFactor = (float)Math.sin(yaw / 180.0f * Math.PI); | ||||||
| @ -115,17 +110,4 @@ public class CameraHandler { | |||||||
|         return pitch; |         return pitch; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     //set player tracking |  | ||||||
|     public void setTrackPlayerEntity(boolean track){ |  | ||||||
|         trackPlayerEntity = track; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     //get trackPlayerEntity |  | ||||||
|     public boolean getTrackPlayerEntity(){ |  | ||||||
|         return trackPlayerEntity; |  | ||||||
|     } |  | ||||||
|      |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -195,21 +195,11 @@ public class ControlHandler { | |||||||
|     public static final String DEBUG_OPEN_DEBUG_MENU = "openDebugMenu"; |     public static final String DEBUG_OPEN_DEBUG_MENU = "openDebugMenu"; | ||||||
|      |      | ||||||
|      |      | ||||||
|     public static final String FREECAM_UP = "freecamUp"; |  | ||||||
|     public static final String FREECAM_DOWN = "freecamDown"; |  | ||||||
|     public static final String FREECAM_FORWARD = "freecamForward"; |  | ||||||
|     public static final String FREECAM_BACKWARD = "freecamBackward"; |  | ||||||
|     public static final String FREECAM_LEFT = "freecamLeft"; |  | ||||||
|     public static final String FREECAM_RIGHT = "freecamRight"; |  | ||||||
|     public static final String FREECAM_MOUSE = "freecamMouse"; |  | ||||||
|      |  | ||||||
|      |  | ||||||
|     public static enum ControlsState { |     public static enum ControlsState { | ||||||
|         TITLE_PAGE, |         TITLE_PAGE, | ||||||
|         TITLE_MENU, |         TITLE_MENU, | ||||||
|         MAIN_GAME, |         MAIN_GAME, | ||||||
|         IN_GAME_MAIN_MENU, |         IN_GAME_MAIN_MENU, | ||||||
|         IN_GAME_FREE_CAMERA, |  | ||||||
|         INVENTORY, |         INVENTORY, | ||||||
|         NO_INPUT, |         NO_INPUT, | ||||||
|     } |     } | ||||||
| @ -242,7 +232,6 @@ public class ControlHandler { | |||||||
|     List<Control> typingControlList = new LinkedList<Control>(); |     List<Control> typingControlList = new LinkedList<Control>(); | ||||||
|     List<Control> inventoryControlList = new LinkedList<Control>(); |     List<Control> inventoryControlList = new LinkedList<Control>(); | ||||||
|     List<Control> alwaysOnDebugControlList = new LinkedList<Control>(); |     List<Control> alwaysOnDebugControlList = new LinkedList<Control>(); | ||||||
|     List<Control> freeCameraControlList = new LinkedList<Control>(); |  | ||||||
|      |      | ||||||
|     ControlHandler(){ |     ControlHandler(){ | ||||||
|         controls = new HashMap<String, Control>(); |         controls = new HashMap<String, Control>(); | ||||||
| @ -353,18 +342,6 @@ public class ControlHandler { | |||||||
|         */ |         */ | ||||||
|         handler.setHandlerState(ControlsState.TITLE_MENU); |         handler.setHandlerState(ControlsState.TITLE_MENU); | ||||||
|          |          | ||||||
|         /* |  | ||||||
|          * Free camera |  | ||||||
|          */ |  | ||||||
|         handler.addControl(FREECAM_UP,       new Control(ControlType.KEY,GLFW_KEY_SPACE)); |  | ||||||
|         handler.addControl(FREECAM_DOWN,     new Control(ControlType.KEY,GLFW_KEY_LEFT_CONTROL)); |  | ||||||
|         handler.addControl(FREECAM_FORWARD,  new Control(ControlType.KEY,GLFW_KEY_W)); |  | ||||||
|         handler.addControl(FREECAM_BACKWARD, new Control(ControlType.KEY,GLFW_KEY_S)); |  | ||||||
|         handler.addControl(FREECAM_LEFT,     new Control(ControlType.KEY,GLFW_KEY_A)); |  | ||||||
|         handler.addControl(FREECAM_RIGHT,    new Control(ControlType.KEY,GLFW_KEY_D)); |  | ||||||
|         handler.addControl(FREECAM_MOUSE,    new Control(ControlType.MOUSE_MOVEMENT,0)); |  | ||||||
| 
 |  | ||||||
|          |  | ||||||
|         /* |         /* | ||||||
|         Save to file |         Save to file | ||||||
|         */ |         */ | ||||||
| @ -418,12 +395,6 @@ public class ControlHandler { | |||||||
|             // pollMenuNavigationControls(); |             // pollMenuNavigationControls(); | ||||||
|             break; |             break; | ||||||
| 
 | 
 | ||||||
|             case IN_GAME_FREE_CAMERA: |  | ||||||
|             runHandlers(freeCameraControlList); |  | ||||||
|             runHandlers(mainGameDebugControlList); |  | ||||||
|             runHandlers(alwaysOnDebugControlList); |  | ||||||
|             break; |  | ||||||
| 
 |  | ||||||
|             case INVENTORY: |             case INVENTORY: | ||||||
|             runHandlers(inventoryControlList); |             runHandlers(inventoryControlList); | ||||||
|             runHandlers(menuNavigationControlList); |             runHandlers(menuNavigationControlList); | ||||||
| @ -445,7 +416,6 @@ public class ControlHandler { | |||||||
|         setTypingControls(); |         setTypingControls(); | ||||||
|         setInventoryControls(); |         setInventoryControls(); | ||||||
|         setAlwaysOnDebugControls(); |         setAlwaysOnDebugControls(); | ||||||
|         setFreecamControls(); |  | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     void setMainGameControls(){ |     void setMainGameControls(){ | ||||||
| @ -1152,48 +1122,6 @@ public class ControlHandler { | |||||||
|          |          | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     void setFreecamControls(){ |  | ||||||
|         freeCameraControlList.add(controls.get(FREECAM_UP)); |  | ||||||
|         controls.get(FREECAM_UP).setOnRepeat(new ControlMethod(){public void execute(){ |  | ||||||
|             Vector3f playerCameraCenterPos = CameraEntityUtils.getCameraCenter(Globals.playerCamera); |  | ||||||
|             playerCameraCenterPos.add(0,0.1f,0); |  | ||||||
|             CameraEntityUtils.setCameraCenter(Globals.playerCamera,playerCameraCenterPos); |  | ||||||
|         }}); |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|         freeCameraControlList.add(controls.get(FREECAM_DOWN)); |  | ||||||
|         controls.get(FREECAM_DOWN).setOnRepeat(new ControlMethod(){public void execute(){ |  | ||||||
|             Vector3f playerCameraCenterPos = CameraEntityUtils.getCameraCenter(Globals.playerCamera); |  | ||||||
|             playerCameraCenterPos.add(0,-0.1f,0); |  | ||||||
|             CameraEntityUtils.setCameraCenter(Globals.playerCamera,playerCameraCenterPos); |  | ||||||
|         }}); |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|         freeCameraControlList.add(controls.get(FREECAM_FORWARD)); |  | ||||||
|         controls.get(FREECAM_FORWARD).setOnRepeat(new ControlMethod(){public void execute(){ |  | ||||||
|             Vector3f playerCameraCenterPos = CameraEntityUtils.getCameraCenter(Globals.playerCamera); |  | ||||||
|             Vector3f playerCameraEyePos = CameraEntityUtils.getCameraEye(Globals.playerCamera); |  | ||||||
|             playerCameraCenterPos.add(new Vector3f(playerCameraEyePos).mul(-0.1f)); |  | ||||||
|             CameraEntityUtils.setCameraCenter(Globals.playerCamera,playerCameraCenterPos); |  | ||||||
|         }}); |  | ||||||
| 
 |  | ||||||
|         freeCameraControlList.add(controls.get(FREECAM_BACKWARD)); |  | ||||||
|         controls.get(FREECAM_BACKWARD).setOnRepeat(new ControlMethod(){public void execute(){ |  | ||||||
|             Vector3f playerCameraCenterPos = CameraEntityUtils.getCameraCenter(Globals.playerCamera); |  | ||||||
|             Vector3f playerCameraEyePos = CameraEntityUtils.getCameraEye(Globals.playerCamera); |  | ||||||
|             playerCameraCenterPos.add(new Vector3f(playerCameraEyePos).mul(0.1f)); |  | ||||||
|             CameraEntityUtils.setCameraCenter(Globals.playerCamera,playerCameraCenterPos); |  | ||||||
|         }}); |  | ||||||
| 
 |  | ||||||
|         freeCameraControlList.add(controls.get(FREECAM_MOUSE)); |  | ||||||
|         controls.get(FREECAM_MOUSE).setOnMove(new Control.MouseCallback(){public void execute(MouseEvent event){ |  | ||||||
|             Globals.cameraHandler.handleMouseEvent(event); |  | ||||||
|         }}); |  | ||||||
| 
 |  | ||||||
|         freeCameraControlList.add(controls.get(DATA_STRING_INPUT_CODE_IN_GAME_MAIN_MENU)); |  | ||||||
|          |  | ||||||
|     } |  | ||||||
|      |  | ||||||
|     void setTypingControls(){ |     void setTypingControls(){ | ||||||
|          |          | ||||||
|         String[] typeKeybinds = { |         String[] typeKeybinds = { | ||||||
| @ -1425,10 +1353,6 @@ public class ControlHandler { | |||||||
|         this.state = state; |         this.state = state; | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     public ControlsState getHandlerState(){ |  | ||||||
|         return state; |  | ||||||
|     } |  | ||||||
|      |  | ||||||
|     public ControlsState getState(){ |     public ControlsState getState(){ | ||||||
|         return state; |         return state; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -18,8 +18,8 @@ import electrosphere.engine.loadingthreads.LoadingThread; | |||||||
| import electrosphere.game.config.UserSettings; | import electrosphere.game.config.UserSettings; | ||||||
| import electrosphere.game.server.world.MacroData; | import electrosphere.game.server.world.MacroData; | ||||||
| import electrosphere.logger.LoggerInterface; | import electrosphere.logger.LoggerInterface; | ||||||
| import electrosphere.menu.ImGuiWindowMacros; |  | ||||||
| import electrosphere.renderer.RenderingEngine; | import electrosphere.renderer.RenderingEngine; | ||||||
|  | import electrosphere.renderer.ui.imgui.ImGuiWindowMacros; | ||||||
| import electrosphere.server.simulation.MacroSimulation; | import electrosphere.server.simulation.MacroSimulation; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -177,6 +177,7 @@ public class ClientLoading { | |||||||
|          |          | ||||||
|         */ |         */ | ||||||
|         Globals.playerCamera = CameraEntityUtils.spawnPlayerEntityTrackingCameraEntity(new Vector3f(1,0,1), new Vector3f(0,0,1)); |         Globals.playerCamera = CameraEntityUtils.spawnPlayerEntityTrackingCameraEntity(new Vector3f(1,0,1), new Vector3f(0,0,1)); | ||||||
|  |         // Globals.playerCamera = CameraEntityUtils.spawnPlayerEntityAirplaneTrackingCameraEntity(new Vector3f(1,0,1), new Vector3f(0,0,1)); | ||||||
|          |          | ||||||
|          |          | ||||||
|          |          | ||||||
|  | |||||||
| @ -62,7 +62,16 @@ public class CameraEntityUtils { | |||||||
|         rVal.putData(EntityDataStrings.CAMERA_ORBIT_RADIAL_OFFSET, new Vector3f(0,1,0)); |         rVal.putData(EntityDataStrings.CAMERA_ORBIT_RADIAL_OFFSET, new Vector3f(0,1,0)); | ||||||
|         rVal.putData(EntityDataStrings.CAMERA_PITCH, 0.0f); |         rVal.putData(EntityDataStrings.CAMERA_PITCH, 0.0f); | ||||||
|         rVal.putData(EntityDataStrings.CAMERA_YAW, 0.0f); |         rVal.putData(EntityDataStrings.CAMERA_YAW, 0.0f); | ||||||
|         Globals.cameraHandler.setTrackPlayerEntity(true); |         BehaviorTree entityTrackingTree = new BehaviorTree() { | ||||||
|  |             @Override | ||||||
|  |             public void simulate(float deltaTime) { | ||||||
|  |                 if(Globals.playerEntity != null){ | ||||||
|  |                     Vector3d entityPos = EntityUtils.getPosition(Globals.playerEntity); | ||||||
|  |                     CameraEntityUtils.setCameraCenter(rVal, new Vector3f((float)entityPos.x,(float)entityPos.y,(float)entityPos.z).add(getOrbitalCameraRadialOffset(rVal))); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         }; | ||||||
|  |         Globals.clientScene.registerBehaviorTree(entityTrackingTree); | ||||||
|         return rVal; |         return rVal; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -47,11 +47,7 @@ public class MenuGeneratorsInGame { | |||||||
|         div.setOnNavigationCallback(new NavigationEventCallback() {public boolean execute(NavigationEvent event){ |         div.setOnNavigationCallback(new NavigationEventCallback() {public boolean execute(NavigationEvent event){ | ||||||
|             WindowUtils.recursiveSetVisible(Globals.elementManager.getWindow(WindowStrings.WINDOW_MENU_INGAME_MAIN), false); |             WindowUtils.recursiveSetVisible(Globals.elementManager.getWindow(WindowStrings.WINDOW_MENU_INGAME_MAIN), false); | ||||||
|             Globals.elementManager.unregisterWindow(WindowStrings.WINDOW_MENU_INGAME_MAIN); |             Globals.elementManager.unregisterWindow(WindowStrings.WINDOW_MENU_INGAME_MAIN); | ||||||
|             if(Globals.cameraHandler.getTrackPlayerEntity()){ |  | ||||||
|             Globals.controlHandler.setHandlerState(ControlsState.MAIN_GAME); |             Globals.controlHandler.setHandlerState(ControlsState.MAIN_GAME); | ||||||
|             } else { |  | ||||||
|                 Globals.controlHandler.setHandlerState(ControlsState.IN_GAME_FREE_CAMERA); |  | ||||||
|             } |  | ||||||
|             Globals.controlHandler.hideMouse(); |             Globals.controlHandler.hideMouse(); | ||||||
|             return false; |             return false; | ||||||
|         }}); |         }}); | ||||||
| @ -72,11 +68,7 @@ public class MenuGeneratorsInGame { | |||||||
|         backButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){ |         backButton.setOnClick(new ClickableElement.ClickEventCallback(){public boolean execute(ClickEvent event){ | ||||||
|             WindowUtils.recursiveSetVisible(Globals.elementManager.getWindow(WindowStrings.WINDOW_MENU_INGAME_MAIN), false); |             WindowUtils.recursiveSetVisible(Globals.elementManager.getWindow(WindowStrings.WINDOW_MENU_INGAME_MAIN), false); | ||||||
|             Globals.elementManager.unregisterWindow(WindowStrings.WINDOW_MENU_INGAME_MAIN); |             Globals.elementManager.unregisterWindow(WindowStrings.WINDOW_MENU_INGAME_MAIN); | ||||||
|             if(Globals.cameraHandler.getTrackPlayerEntity()){ |  | ||||||
|             Globals.controlHandler.setHandlerState(ControlsState.MAIN_GAME); |             Globals.controlHandler.setHandlerState(ControlsState.MAIN_GAME); | ||||||
|             } else { |  | ||||||
|                 Globals.controlHandler.setHandlerState(ControlsState.IN_GAME_FREE_CAMERA); |  | ||||||
|             } |  | ||||||
|             Globals.controlHandler.hideMouse(); |             Globals.controlHandler.hideMouse(); | ||||||
|             return false; |             return false; | ||||||
|         }}); |         }}); | ||||||
|  | |||||||
| @ -1,16 +1,11 @@ | |||||||
| package electrosphere.menu; | package electrosphere.renderer.ui.imgui; | ||||||
| 
 | 
 | ||||||
| import java.util.HashMap; | import java.util.HashMap; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
| 
 | 
 | ||||||
| import electrosphere.audio.VirtualAudioSource; | import electrosphere.audio.VirtualAudioSource; | ||||||
| import electrosphere.controls.ControlHandler.ControlsState; |  | ||||||
| import electrosphere.engine.Globals; | import electrosphere.engine.Globals; | ||||||
| import electrosphere.entity.EntityUtils; |  | ||||||
| import electrosphere.renderer.RenderingEngine; | import electrosphere.renderer.RenderingEngine; | ||||||
| import electrosphere.renderer.ui.imgui.ImGuiLinePlot; |  | ||||||
| import electrosphere.renderer.ui.imgui.ImGuiBarPlot; |  | ||||||
| import electrosphere.renderer.ui.imgui.ImGuiWindow; |  | ||||||
| import electrosphere.renderer.ui.imgui.ImGuiLinePlot.ImGuiLinePlotDataset; | import electrosphere.renderer.ui.imgui.ImGuiLinePlot.ImGuiLinePlotDataset; | ||||||
| import electrosphere.renderer.ui.imgui.ImGuiWindow.ImGuiWindowCallback; | import electrosphere.renderer.ui.imgui.ImGuiWindow.ImGuiWindowCallback; | ||||||
| import imgui.ImGui; | import imgui.ImGui; | ||||||
| @ -30,26 +25,24 @@ public class ImGuiWindowMacros { | |||||||
|     private static ImGuiLinePlot globalFrametimePlot; |     private static ImGuiLinePlot globalFrametimePlot; | ||||||
|     private static Map<String,ImGuiLinePlotDataset> globalFrametimeDatasets; |     private static Map<String,ImGuiLinePlotDataset> globalFrametimeDatasets; | ||||||
| 
 | 
 | ||||||
|  |     //server sim time graph | ||||||
|  |     private static ImGuiWindow serverFrametimeWindow; | ||||||
|  |     private static ImGuiBarPlot serverFrametimePlot; | ||||||
|  |     private static double serverFrametimeTrackerStorage = 0; | ||||||
|  | 
 | ||||||
|     //audio debug menu |     //audio debug menu | ||||||
|     private static ImGuiWindow audioDebugMenu; |     private static ImGuiWindow audioDebugMenu; | ||||||
|     private static boolean showAllVirtualAudioChildren = false; |     private static boolean showAllVirtualAudioChildren = false; | ||||||
|     private static boolean showMappedVirtualAudioChildren = true; |     private static boolean showMappedVirtualAudioChildren = true; | ||||||
| 
 | 
 | ||||||
|     //player entity details |  | ||||||
|     private static ImGuiWindow playerEntityWindow; |  | ||||||
| 
 |  | ||||||
|     //fluid details |  | ||||||
|     private static ImGuiWindow fluidWindow; |  | ||||||
| 
 |  | ||||||
|     /** |     /** | ||||||
|      * Initializes imgui windows |      * Initializes imgui windows | ||||||
|      */ |      */ | ||||||
|     public static void initImGuiWindows(){ |     public static void initImGuiWindows(){ | ||||||
|         createMainDebugMenu(); |         createMainDebugMenu(); | ||||||
|         createFramerateGraph(); |         createFramerateGraph(); | ||||||
|  |         createServerFrametimeGraph(); | ||||||
|         createAudioDebugMenu(); |         createAudioDebugMenu(); | ||||||
|         createPlayerEntityDebugWindow(); |  | ||||||
|         createFluidDebugWindow(); |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
| @ -94,12 +87,46 @@ public class ImGuiWindowMacros { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /** | ||||||
|  |      * Creates a server frametime breakdown graph | ||||||
|  |      */ | ||||||
|  |     private static void createServerFrametimeGraph(){ | ||||||
|  |         serverFrametimeWindow = new ImGuiWindow("Server Frametime Graph"); | ||||||
|  |         serverFrametimePlot = new ImGuiBarPlot("Server Frametime plot"); | ||||||
|  |         serverFrametimeWindow.addElement(serverFrametimePlot); | ||||||
|  |         serverFrametimeWindow.setOpen(false); | ||||||
|  |         RenderingEngine.addImGuiWindow(serverFrametimeWindow); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Starts a tracker for server frametime for a given method | ||||||
|  |      */ | ||||||
|  |     public static void startServerFrametimeTrackerFlame(double startValue){ | ||||||
|  |         serverFrametimeTrackerStorage = startValue; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Finishes tracking a single run of a specific method | ||||||
|  |      * @param valueName The name of the method | ||||||
|  |      * @param endValue the end time that the method finished on | ||||||
|  |      */ | ||||||
|  |     public static void clockServerFrametimeTrackerFlame(String valueName, double endValue){ | ||||||
|  |         serverFrametimePlot.addToDatapoint(valueName, endValue - serverFrametimeTrackerStorage); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Clears the server frametime values so they can be re-filled | ||||||
|  |      */ | ||||||
|  |     public static void clearServerFrametime(){ | ||||||
|  |         serverFrametimePlot.clearDatapoints(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     /** |     /** | ||||||
|      * Create audio debug menu |      * Create audio debug menu | ||||||
|      */ |      */ | ||||||
|     private static void createAudioDebugMenu(){ |     private static void createAudioDebugMenu(){ | ||||||
|         audioDebugMenu = new ImGuiWindow("Audio"); |         audioDebugMenu = new ImGuiWindow("Audio"); | ||||||
|         audioDebugMenu.setCallback(new ImGuiWindowCallback() { |         audioDebugMenu.callback = new ImGuiWindowCallback() { | ||||||
|             @Override |             @Override | ||||||
|             public void exec() { |             public void exec() { | ||||||
|                 //audio engine details |                 //audio engine details | ||||||
| @ -148,84 +175,38 @@ public class ImGuiWindowMacros { | |||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         }); |         }; | ||||||
|         audioDebugMenu.setOpen(false); |         audioDebugMenu.setOpen(false); | ||||||
|         RenderingEngine.addImGuiWindow(audioDebugMenu); |         RenderingEngine.addImGuiWindow(audioDebugMenu); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     /** |  | ||||||
|      * Create player entity debug menu |  | ||||||
|      */ |  | ||||||
|     private static void createPlayerEntityDebugWindow(){ |  | ||||||
|         playerEntityWindow = new ImGuiWindow("Player Entity"); |  | ||||||
|         playerEntityWindow.setCallback(new ImGuiWindowCallback() { |  | ||||||
|             @Override |  | ||||||
|             public void exec() { |  | ||||||
|                 //player entity details |  | ||||||
|                 ImGui.text("Player Entity Details"); |  | ||||||
|                 if(Globals.playerEntity != null){ |  | ||||||
|                     ImGui.text("Position: " + EntityUtils.getPosition(Globals.playerEntity)); |  | ||||||
|                 } |  | ||||||
|                 if(ImGui.button("Toggle Player Camera Lock")){ |  | ||||||
|                     Globals.cameraHandler.setTrackPlayerEntity(!Globals.cameraHandler.getTrackPlayerEntity()); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         }); |  | ||||||
|         playerEntityWindow.setOpen(false); |  | ||||||
|         RenderingEngine.addImGuiWindow(playerEntityWindow); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * Create fluid debug menu |  | ||||||
|      */ |  | ||||||
|     private static void createFluidDebugWindow(){ |  | ||||||
|         fluidWindow = new ImGuiWindow("Fluids"); |  | ||||||
|         fluidWindow.setCallback(new ImGuiWindowCallback() { |  | ||||||
|             @Override |  | ||||||
|             public void exec() { |  | ||||||
|                 //audio engine details |  | ||||||
|                 ImGui.text("Fluids Debug"); |  | ||||||
|                 if(ImGui.button("Toggle Simulation")){ |  | ||||||
|                     Globals.serverFluidManager.setSimulate(!Globals.serverFluidManager.getSimulate());; |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         }); |  | ||||||
|         fluidWindow.setOpen(false); |  | ||||||
|         RenderingEngine.addImGuiWindow(fluidWindow); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     /** |     /** | ||||||
|      * Inits the main debug menu |      * Inits the main debug menu | ||||||
|      */ |      */ | ||||||
|     private static void createMainDebugMenu(){ |     private static void createMainDebugMenu(){ | ||||||
|         mainDebugWindow = new ImGuiWindow("Debug"); |         mainDebugWindow = new ImGuiWindow("Debug"); | ||||||
|         mainDebugWindow.setCallback(new ImGuiWindowCallback() { |         mainDebugWindow.callback = new ImGuiWindowCallback() { | ||||||
|             @Override |             @Override | ||||||
|             public void exec() { |             public void exec() { | ||||||
|                 //show global framerate line graph |                 //show global framerate line graph | ||||||
|                 if(ImGui.button("Show Overall Frametime")){ |                 if(ImGui.button("Show Overall Frametime")){ | ||||||
|                     globalFrametimeWindow.setOpen(true); |                     globalFrametimeWindow.setOpen(true); | ||||||
|                 } |                 } | ||||||
|  |                 //show server frametime bar graph | ||||||
|  |                 if(ImGui.button("Show Server Frametime Breakdown")){ | ||||||
|  |                     serverFrametimeWindow.setOpen(true); | ||||||
|  |                 } | ||||||
|                 //show audio debug |                 //show audio debug | ||||||
|                 if(ImGui.button("Show Audio Debug Menu")){ |                 if(ImGui.button("Show Audio Debug Menu")){ | ||||||
|                     audioDebugMenu.setOpen(true); |                     audioDebugMenu.setOpen(true); | ||||||
|                 } |                 } | ||||||
|                 //show audio debug |  | ||||||
|                 if(ImGui.button("Show Player Entity Debug Menu")){ |  | ||||||
|                     playerEntityWindow.setOpen(true); |  | ||||||
|                 } |  | ||||||
|                 //show fluids debug |  | ||||||
|                 if(ImGui.button("Show Fluids Debug Menu")){ |  | ||||||
|                     fluidWindow.setOpen(true); |  | ||||||
|                 } |  | ||||||
|                 //close button |                 //close button | ||||||
|                 if(ImGui.button("Close")){ |                 if(ImGui.button("Close")){ | ||||||
|                     mainDebugWindow.setOpen(false); |                     mainDebugWindow.setOpen(false); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         }); |         }; | ||||||
|         RenderingEngine.addImGuiWindow(mainDebugWindow); |         RenderingEngine.addImGuiWindow(mainDebugWindow); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -6,8 +6,8 @@ import electrosphere.engine.Main; | |||||||
| import electrosphere.entity.Entity; | import electrosphere.entity.Entity; | ||||||
| import electrosphere.entity.Scene; | import electrosphere.entity.Scene; | ||||||
| import electrosphere.entity.types.hitbox.HitboxManager; | import electrosphere.entity.types.hitbox.HitboxManager; | ||||||
| import electrosphere.menu.ImGuiWindowMacros; |  | ||||||
| import electrosphere.net.parser.net.message.NetworkMessage; | import electrosphere.net.parser.net.message.NetworkMessage; | ||||||
|  | import electrosphere.renderer.ui.imgui.ImGuiWindowMacros; | ||||||
| import electrosphere.server.datacell.interfaces.DataCellManager; | import electrosphere.server.datacell.interfaces.DataCellManager; | ||||||
| 
 | 
 | ||||||
| import java.util.HashSet; | import java.util.HashSet; | ||||||
| @ -156,10 +156,15 @@ public class Realm { | |||||||
|      * Tells the data cell manager to simulate all loaded cells |      * Tells the data cell manager to simulate all loaded cells | ||||||
|      */ |      */ | ||||||
|     protected void simulate(){ |     protected void simulate(){ | ||||||
|  |         ImGuiWindowMacros.clearServerFrametime(); | ||||||
|         //simulate bullet physics engine step |         //simulate bullet physics engine step | ||||||
|  |         ImGuiWindowMacros.startServerFrametimeTrackerFlame(System.currentTimeMillis()); | ||||||
|         collisionEngine.simulatePhysics((float)Globals.timekeeper.getSimFrameTime()); |         collisionEngine.simulatePhysics((float)Globals.timekeeper.getSimFrameTime()); | ||||||
|  |         ImGuiWindowMacros.clockServerFrametimeTrackerFlame("physics", System.currentTimeMillis()); | ||||||
|         //main simulation |         //main simulation | ||||||
|  |         ImGuiWindowMacros.startServerFrametimeTrackerFlame(System.currentTimeMillis()); | ||||||
|         dataCellManager.simulate(); |         dataCellManager.simulate(); | ||||||
|  |         ImGuiWindowMacros.clockServerFrametimeTrackerFlame("simulate", System.currentTimeMillis()); | ||||||
|         //data cell manager update misc variables (player positions, unload not-in-use cells) |         //data cell manager update misc variables (player positions, unload not-in-use cells) | ||||||
|         if(dataCellManager != null){ |         if(dataCellManager != null){ | ||||||
|             dataCellManager.unloadPlayerlessChunks(); |             dataCellManager.unloadPlayerlessChunks(); | ||||||
|  | |||||||
| @ -59,9 +59,6 @@ public class ServerFluidManager { | |||||||
|     //the terrain manager associated |     //the terrain manager associated | ||||||
|     ServerTerrainManager serverTerrainManager; |     ServerTerrainManager serverTerrainManager; | ||||||
|      |      | ||||||
|     //controls whether fluid simulation should actually happen or not |  | ||||||
|     boolean simulate = true; |  | ||||||
|      |  | ||||||
|      |      | ||||||
|     /** |     /** | ||||||
|      * Constructor |      * Constructor | ||||||
| @ -295,26 +292,12 @@ public class ServerFluidManager { | |||||||
|      * Simulates a chunk |      * Simulates a chunk | ||||||
|      */ |      */ | ||||||
|     public boolean simulate(int worldX, int worldY, int worldZ){ |     public boolean simulate(int worldX, int worldY, int worldZ){ | ||||||
|         if(simulate){ |  | ||||||
|         ServerFluidChunk fluidChunk = this.getChunk(worldX, worldY, worldZ); |         ServerFluidChunk fluidChunk = this.getChunk(worldX, worldY, worldZ); | ||||||
|         ServerTerrainChunk terrainChunk = this.serverTerrainManager.getChunk(worldX, worldY, worldZ); |         ServerTerrainChunk terrainChunk = this.serverTerrainManager.getChunk(worldX, worldY, worldZ); | ||||||
|         if(fluidChunk != null && terrainChunk != null && this.serverFluidSimulator != null){ |         if(fluidChunk != null && terrainChunk != null && this.serverFluidSimulator != null){ | ||||||
|             return this.serverFluidSimulator.simulate(fluidChunk,terrainChunk,worldX,worldY,worldZ); |             return this.serverFluidSimulator.simulate(fluidChunk,terrainChunk,worldX,worldY,worldZ); | ||||||
|         } |         } | ||||||
|         } |  | ||||||
|         return false; |         return false; | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     //getter for simulate |  | ||||||
|     public boolean getSimulate(){ |  | ||||||
|         return simulate; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     //setter for simulate |  | ||||||
|     public void setSimulate(boolean simulate){ |  | ||||||
|         this.simulate = simulate; |  | ||||||
|     } |  | ||||||
|      |  | ||||||
| 
 |  | ||||||
|      |  | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user