Zone: the memo fill takes its position from RailAt, so the chain rule exists once

GetOrbitPosition's step-time fill and RailAt each decided the rail chain (root at
FixedPosition, child at parent plus offset). The fill is now RailAt(id, _time).
DrawnPoseTests builds the sun on an off-centre FixedPosition (the ZoneGenerator
cluster-root shape) and adds a root test at step and drawn time, and an unset-orbit
OrbitalEntity fact for the DrawAhead guard.

All commits build, unverified until the job in the report.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Meta Vens 2026-10-15 22:39:06 +02:00
commit 6c865b2cc9
2 changed files with 47 additions and 11 deletions

View file

@ -506,11 +506,7 @@ public class Zone
if (!_updatedOrbits.Contains(orbitID))
{
var orbit = Orbits[orbitID];
var parentPosition = !orbit.Data.Parent.IsSet()
? orbit.Data.FixedPosition :
GetOrbitPosition(orbit.Data.Parent.Key);
orbit.Position = parentPosition + Offset(orbit, _time);
Orbits[orbitID].Position = RailAt(orbitID, _time);
_updatedOrbits.Add(orbitID);
}