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))
inserts[inserted.parent]._children.add(ent)
else:
parent._children.add(ent)
-
queue.queue(lambda world: world.insert_many(Children, inserts.items()))
return inner