Course
Keeps a sliding window of gate entities alive around the local crane — `Rules.gateWindow` decides which, `gates.module` decides what they look like.
Course
Keeps a sliding window of gate entities alive around the local crane —
Rules.gateWindow decides which, gates.module decides what they look like.
Because Rules.gateAt is pure, the course is never replicated: every client
recomputes the same gates.
Every gate is parented under one root this component owns (CourseGates), and
sync reconciles against the world, not against its own handle table. That
matters because a play session restores entities created in earlier sessions of
the same engine run, and a hot-reload hands the component a fresh, empty table.
A gate it is not tracking is destroyed, whoever made it.
Runs in edit mode too (editorUpdate), so gate art can be authored without
entering play.
Owned by slice A.
Scoped to this part · feeds back into the world's score.