diff --git a/imgui.ini b/imgui.ini index f0c7bfc..bce0f71 100644 --- a/imgui.ini +++ b/imgui.ini @@ -29,7 +29,7 @@ Size=507,263 Collapsed=0 [Window][Shadow & Light Parameters] -Pos=2,200 +Pos=22,191 Size=223,506 Collapsed=0 diff --git a/src/CortexEngine.App/Program.cs b/src/CortexEngine.App/Program.cs index 6f8e8c2..e384be4 100644 --- a/src/CortexEngine.App/Program.cs +++ b/src/CortexEngine.App/Program.cs @@ -228,6 +228,9 @@ class Program ImGui.SameLine(); if (ImGui.Button("Reset Scene")) { + // Pause physics during reset + physicsEnabled = false; + // Delete all entities except Camera, lights, Floor var toDelete = new List(); world.Each((Entity e, ref Transform t) => @@ -236,11 +239,20 @@ class Program if (name != "Camera" && name != "MainLight" && name != "SecondLight" && name != "ThirdLight" && name != "Floor") toDelete.Add(e); }); + + // Remove RigidBody from physics before destructing foreach (var ent in toDelete) { - if (ent.IsAlive()) ent.Destruct(); + if (ent.IsAlive()) + { + if (ent.Has()) + physicsWorld.RemoveBody(ent); + ent.Destruct(); + } } + CreateObjects(world); + physicsEnabled = true; Console.WriteLine($"[App] Scene reset: {toDelete.Count} entities deleted"); } ImGui.End();