diff --git a/Videos/cortex_20260619_094023.mp4 b/Videos/cortex_20260619_094023.mp4 new file mode 100644 index 0000000..63b31eb Binary files /dev/null and b/Videos/cortex_20260619_094023.mp4 differ diff --git a/src/CortexEngine.App/Program.cs b/src/CortexEngine.App/Program.cs index a83fcde..6f8e8c2 100644 --- a/src/CortexEngine.App/Program.cs +++ b/src/CortexEngine.App/Program.cs @@ -133,12 +133,13 @@ class Program var toInit = new List<(Entity, RigidBody, Transform)>(); world.Each((Entity e, ref RigidBody rb, ref Transform t) => { - if (!rb.IsInitialized) + if (!rb.IsInitialized && e.IsAlive()) toInit.Add((e, rb, t)); }); foreach (var (e, rb, t) in toInit) { + if (!e.IsAlive()) continue; var rbInit = rb; rbInit.IsInitialized = true; e.Set(rbInit); @@ -228,20 +229,19 @@ class Program if (ImGui.Button("Reset Scene")) { // Delete all entities except Camera, lights, Floor - var toDelete = new List(); + var toDelete = new List(); world.Each((Entity e, ref Transform t) => { var name = e.Name(); if (name != "Camera" && name != "MainLight" && name != "SecondLight" && name != "ThirdLight" && name != "Floor") - toDelete.Add(name); + toDelete.Add(e); }); - foreach (var name in toDelete) + foreach (var ent in toDelete) { - var ent = world.Lookup(name); - if ((ulong)ent.Id != 0) ent.Destruct(); + if (ent.IsAlive()) ent.Destruct(); } CreateObjects(world); - Console.WriteLine($"[App] Scene reset: {toDelete.Count} entities deleted, scene recreated"); + Console.WriteLine($"[App] Scene reset: {toDelete.Count} entities deleted"); } ImGui.End();