GameplaySettings carries ShipLayerHeight 3, OrbitalLayerHeight 15, FloaterLayerHeight 0 (authored in Settings.asset).
Entity.LayerHeight (Ship, OrbitalEntity) is the one offset RideHeight adds; DrawAhead.FloaterHeight is the floater
height ItemPickup and MineInstance draw at. HullData.GridOffset (Key 26) and the pickup/mine/prefab GridOffset fields
are gone with every reader. Fixtures (DrawnPose, FireControl*, ImpactFeedback) take heights from the layer owner;
LayerTests pin each kind's layer. FloatingItemsDrawnSmoke follows. ItemPickup/MineInstance.Bind take the settings from
ZoneRenderer. Builds as one commit with its tests; not compile-verified until the cut's head run.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Step pairs OfType<Ship>; stations and turrets sit on the orbital layer above the ship plane
(ruling aetheria-gravity:orbitals-above-floaters-below). Tests: a ship flies through a station and a turret;
two ships still bounce beside an orbital. Not yet compile-verified (verified once at the cut's head).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Conflicts: Behaviors.cs keeps Union(48, PickupData) and Union(49, LaunchSuppressorData);
Zone.cs keeps the departure record on _entities with master's Visibility (emissions-heard);
ContactRevealTests.cs keeps master's removal of the emission-departure test.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The previous push (07854ed5) came from `git pull --rebase`, which linearized the merge and dropped the
adaptation of master's ContactTests and LootTests to the deleted TargetArmorInfoThreshold, so master did not
compile its tests. This commit joins the reveals branch history and sets the tree to the verified merge
(c7edbf0b: Yggdrasil full suite 1624 passed, 0 failed) plus master's two docs-only commits since.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Entities is a MemberView with no mutating member; Admit installs the death watch with the
membership and refuses a member already present, Remove takes it away with the membership.
The Reset and duplicate-Add bypass paths of the death watch cannot be spelled any more.
Tests move to Admit/Remove; Admit also activates, so the explicit Activate calls that followed
a raw Add are dropped. Unity call sites route through Zone.Remove.
Builds: unverified at this commit (verified in the job at the head).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The previous commit's ContactTests did not build a Mid hull, so ten tests failed on the missing hull (full run at
806641ae: 1481 passed, 10 failed). The commit builds; those ten tests are red until this one.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ruling ship-bounce-restitution-setting: j = -(1+e)(v_rel.n)/(1/m1+1/m2), applied only while closing. The old
exchange formula (PostCollisionVelocity) is deleted. ContactTests now pin momentum, frame shift, restitution,
no impulse while separating, slow closing, tangent of both bodies, inactive hulls, the contact point radius
and the three-body pile. Not yet built or run; verification follows.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With equal masses the first exchange stops the visitor and a second contact with the docked hull cannot show.
Builds.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A docked hull shares its carrier's velocity, so the pair alone never closes; a visitor does expose a second contact.
Builds.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The pair moved 0.1 each before the contact step and so closed inside the 14.14 bound; start them 15 apart.
Builds; the first commit's only red test was this one.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contacts.Step exchanges normal velocity between touching hull discs (PostCollisionVelocity moved verbatim
from ShieldManager) and publishes Zone.Contacted; ShieldManager presents it; HullCollider.OnCollisionEnter
and ShieldManager's ship-on-ship branch are deleted. Not yet built or tested (verification follows).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>