update method
Per-frame update: Schedules.postPhysics (the frame's fixed steps and
physics integration have all run by the time the scene calls this), then
onCommandBoundary, onBeforeUpdate, Schedules.update,
onCommandBoundary again (where Game mounts nodes spawned during
update), Schedules.renderSync, and finally onFrameEnd (e.g. flush
scene-graph mutations) before render.
deltaSeconds arrives already clock-scaled under the standard driver:
it is the value frameStart returned, routed through Scene.update's
component walk. FrameTime.unscaledDelta (set at frameStart) carries
this frame's wall delta.
Implementation
void update(double deltaSeconds) {
app.world.resources.get<FrameTime>().delta = deltaSeconds;
app.runSchedule(Schedules.postPhysics);
onCommandBoundary?.call();
onBeforeUpdate?.call();
app.runSchedule(Schedules.update);
onCommandBoundary?.call();
app.runSchedule(Schedules.renderSync);
onFrameEnd?.call();
}