--- 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); + } } } }