Systems
Pixi render systems run in a fixed chain. Transform groups are allocated before sprite and text nodes are created. Concrete nodes are created before generic transform, size, and pivot synchronization.
The transform hot path queries only PixiTransformGroup and canonical transform/layout components.
Each group resolves directly to a dense array of PixiJS Container objects, so one transform update
can be applied to every render role without an entity lookup or concrete node-type branch.
Adding another PixiJS Container implementation requires:
- Define a serializable render-intent component that requires
PixiTransformGroup. - Add a role for the concrete PixiJS node to the existing registry group.
- Increment
PixiTransformGroup.revision. - Synchronize role-specific properties through the registry role.
- Remove the role synchronously from a component-removal callback.
The revision change causes the existing generic systems to apply current transform, Size, and
Pivot values to a newly attached node even when those values did not otherwise change.
Every system of the chain but the last is in the system set PixiSyncSet, and the last, which
draws the frame, in PixiDrawSet. A system of another package that places nodes itself is
registered in Schedule.Render with .after(PixiSyncSet).before(PixiDrawSet).
Cleanup is role-specific. Removing Sprite destroys only the sprite, while removing Text destroys
only the text. Group removal and world/scene teardown destroy every remaining node exactly once
without waiting for another render tick.