]> Untitled Git - axy/ft/pacman.git/commitdiff
Small optimizing of hooks
authorAxy <gilliardmarthey.axel@gmail.com>
Fri, 25 Sep 2026 12:27:52 +0000 (14:27 +0200)
committerAxy <gilliardmarthey.axel@gmail.com>
Fri, 25 Sep 2026 12:27:52 +0000 (14:27 +0200)
src/pacman/ecs/hierarchy.py

index de8697a9fa77996d5cb6e0b1e190ad933f934436..a428a723036c91b7d28a924bfa0134fcd7632e31 100644 (file)
@@ -33,12 +33,15 @@ class ChildOf(Component):
         return self._parent
 
 
-def parent_insert_hook(queue: CommandQueue) -> RawComponentHook[Children]:
+def parent_insert_hook(
+    queue: CommandQueue, children: Query[ChildOf]
+) -> RawComponentHook[Children]:
     def inner(itr: RawComponentArg[Children]) -> None:
         inserts = [
             (child, ChildOf(ent))
             for ent, inserted in itr
             for child in inserted.children
+            if (e := children.get(child)) is None or e.parent is not ent
         ]
         queue.queue(lambda world: world.insert_many(ChildOf, inserts))
 
@@ -67,7 +70,6 @@ def child_insert_hook(
                 inserts[inserted.parent]._children.add(ent)
             else:
                 parent._children.add(ent)
-
         queue.queue(lambda world: world.insert_many(Children, inserts.items()))
 
     return inner