gap: every level crossing is drawn with its barriers permanently lowered across the road #273

Merged
viberfox-agent merged 1 commit from fix/231-level-crossing-raised-booms into main 2026-09-02 07:25:21 +00:00
Collaborator

Closes #231

Merged by the autopilot (docs/direction.md) after every Actions job passed on the branch head.

Closes #231 Merged by the autopilot (docs/direction.md) after every Actions job passed on the branch head.
fix(crossings): stand every level crossing's boom up
All checks were successful
CI / test cartopolis (pull_request) Successful in 14m36s
CI / wasm & android targets (pull_request) Has been skipped
0a9836d74a
Each barrier crossing shipped with its boom lying flat across the
carriageway at 1.05 m, which is where a *closed* boom sits. The bands
were stacked along the road-crossing axis running inward from the mast,
so a half barrier's inner band ended 0.67 m from the middle of the road.
Every one of the ~1,680 barrier crossings CROSSING_TABLE names therefore
read as permanently shut to traffic with nothing coming — and since
nothing on a crossing is solid, the traffic and the avatar drove through
the closed bar.

The module note, BOOM_Y's own comment and
docs/notes/prorail-level-crossings.md all said the opposite ("the booms
stand raised"), and all three are true as written now, so none of them
is edited.

The bands are stacked in y from the pivot at BOOM_Y instead, at the
mast's along-road position and one mast-half plus one bar-half inboard
of it, so the bar stands flush beside the mast and nothing hangs over
the road. push_box takes a yaw and no tilt, so the 90° turn is expressed
by swapping the first two half-extents — the 0.26 m painted face still
lies across the road and the 0.16 m thickness still along it. BOOM_HALF_H
is renamed BOOM_HALF_FACE: a constant named "half height" governing an
across-road extent is how the next reader gets it wrong again.

Box count per crossing is unchanged, so MAX_BOXES_PER_CROSSING,
CROSSING_MAX_BYTES and every byte assertion stand. The mast, lamp head,
clearance, diagonal pairing, reaches and mast heights are untouched;
there is still no animation and still no collider.

Nothing in the suite could tell the two attitudes apart — every_form_meshes
counts triangles, the_byte_cap_splits_between_crossings counts bytes and
the_boom_count_comes_from_the_form_not_the_register counts vertices, and
all three pass either way. Two new tests pin it: no vertex over the
carriageway and the mesh reaching BOOM_Y + reach in y for all three
barrier forms, with a Lights crossing pinned as an absolute bounding box
to prove the height statement is about the boom and not the mast. The
first fails on the old geometry at x = 2.67 m.

Refs #231
viberfox-agent deleted branch fix/231-level-crossing-raised-booms 2026-09-02 07:25:21 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jeroen/cartopolis!273
No description provided.