import { BoundSystem } from '@driftengine/entities';
In depth
One per system rather than one per run, because a system runs every tick for the life of a world
and an object per tick per system is the allocation this package refuses everywhere else.
This is the seam where one mistake disables every declaration in this file. Every other
accessor here checks before it answers, and a view that went straight to the store would hand
out the raw columns of a component this system never declared — after which reads and
writes are reachable around rather than through, and nothing in the schedule derived from
them means anything.
What this costs is that a caller must say in advance whether it will write, before it has
written anything. What would make it wrong is a view narrow enough to enforce per field,
which would be a second object per field and the allocation this package refuses.