diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index fa1f78fc..9500cc66 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1956,6 +1956,8 @@ Towns spawn a population of characters when they are max-res'd Hitbox synchronization work LOD emitter service LOD component that destroys far-away physics +visually LOD far away models support +Profiler work diff --git a/src/main/java/electrosphere/client/ui/menu/debug/ImGuiWindowMacros.java b/src/main/java/electrosphere/client/ui/menu/debug/ImGuiWindowMacros.java index 3ae24c01..7a796645 100644 --- a/src/main/java/electrosphere/client/ui/menu/debug/ImGuiWindowMacros.java +++ b/src/main/java/electrosphere/client/ui/menu/debug/ImGuiWindowMacros.java @@ -21,6 +21,7 @@ import electrosphere.client.ui.menu.debug.server.ImGuiTestGen; import electrosphere.client.ui.menu.editor.ImGuiEditorWindows; import electrosphere.controls.ControlHandler.ControlsState; import electrosphere.engine.Globals; +import electrosphere.engine.Main; import electrosphere.renderer.ui.imgui.ImGuiLinePlot; import electrosphere.renderer.ui.imgui.ImGuiWindow; import electrosphere.renderer.ui.imgui.ImGuiLinePlot.ImGuiLinePlotDataset; @@ -205,6 +206,9 @@ public class ImGuiWindowMacros { if(ImGui.button("Client Services")){ ImGuiClientServices.clientServicesWindow.setOpen(true); } + if(ImGui.button("Enable Profiler")){ + Main.setEnableProfiler(); + } //close button if(ImGui.button("Close")){ mainDebugWindow.setOpen(false); diff --git a/src/main/java/electrosphere/collision/CollisionEngine.java b/src/main/java/electrosphere/collision/CollisionEngine.java index 059e8c4d..455e33a3 100644 --- a/src/main/java/electrosphere/collision/CollisionEngine.java +++ b/src/main/java/electrosphere/collision/CollisionEngine.java @@ -420,7 +420,7 @@ public class CollisionEngine { throw new Error(message); } - Globals.profiler.beginAggregateCpuSample("CollisionEngine.nearCallback - try collisions"); + Globals.profiler.beginAggregateCpuSample("CollisionEngine.nearCallback - Full collision phase"); try { //creates a buffer to store potential collisions DContactBuffer contacts = new DContactBuffer(MAX_CONTACTS); // up to MAX_CONTACTS contacts per box-box @@ -452,7 +452,9 @@ public class CollisionEngine { } } //calculate collisions + Globals.profiler.beginAggregateCpuSample("CollisionEngine.nearCallback - OdeHelper.collide"); int numc = OdeHelper.collide(o1,o2,MAX_CONTACTS,contacts.getGeomBuffer()); + Globals.profiler.endCpuSample(); //create DContacts based on each collision that occurs if (numc != 0) { for (int i=0; i