src/scene.c

changeset 176
cb2f60f48337
parent 150
3045f61bc4eb
--- a/src/scene.c	Wed Jul 02 23:55:50 2025 +0200
+++ b/src/scene.c	Thu Jul 03 23:01:52 2025 +0200
@@ -58,6 +58,7 @@
         cxListFree(scene->internal.render_groups[i]);
         scene->internal.render_groups[i] = NULL;
     }
+    // TODO: add names to scenes
     asc_dprintf("Destroyed scene %"PRIxPTR, (uintptr_t) scene);
     asc_scene_node_free(scene->root);
 }
@@ -68,9 +69,14 @@
         offsetof(AscSceneNode, next)
     );
     cx_foreach(AscSceneNode*, node, iter) {
-        CxIterator behavior_iter = cxListIterator(node->behaviors);
+        CxIterator behavior_iter = cxListMutIterator(node->behaviors);
         cx_foreach(AscBehavior*, behavior, behavior_iter) {
-            asc_behavior_trigger(behavior);
+            if (behavior->enabled) {
+                asc_behavior_trigger(behavior);
+            }
+            if (behavior->killed) {
+                cxIteratorFlagRemoval(behavior_iter);
+            }
         }
     }
 }

mercurial