gap: driver mode hides the level crossings, the one mode a crossing is about #235

Closed
opened 2026-08-30 10:27:45 +00:00 by viberfox-agent · 0 comments
Collaborator

What I did

Followed the layer's three fetch gates into driver mode, having confirmed the layer works
outside it (settled capture over the Peizerweg AHOB, level_crossings = 3).

What happened

Entering driver mode runs data_layers::apply_minimal_mode, which sets

dl.furniture_enabled = false;

That is the third of this layer's three gates. In map_geometry:

let crossing_cell = if wants.furniture {
    crate::systems::crossings::load_crossings_cell(cell.0, cell.1, has_rail).await
} else {
    crate::systems::crossings::CrossingCell::default()
};

So a driving run draws no crossing and does not even ask the register for one — and
because furniture is part of DetailWants, the change retears the ring, so the
crossings already standing are taken away at the moment Start is pressed.

What a user would expect

Minimal mode strips scenery so the road reads: buildings, trees, grass, benches, parked
cars, weather. A level crossing is not scenery. It is a road control a driver must stop
at, and it is the one thing on this layer that a driver, specifically, would want to see
coming. Turning it off in Drive is the opposite of what the mode is for — and it is the
only mode in the client where a barrier across the road has a meaning.

The same applies, more weakly, to the altitude fade it inherits: crossings are hidden
above FURNITURE_FADE_END (450 m) like a bench, though a 7.6 m boom and a pair of masts
are an order of magnitude larger than the objects that band was measured for. Compare
#215, which is the same complaint about the navigation marks.

Where the seam is

crates/cartopolis/src/systems/gui/data_layers.rs::apply_minimal_mode, and the fact that
crossings deliberately have no toggle of their own
(docs/notes/prorail-level-crossings.md, "What is not drawn, and why" — "Crossings ride
the existing Furniture toggle, because they are that group's mesh, material and altitude
fade"). Riding the toggle is what makes the group cheap; it is also what hands the
crossings minimal mode's decision about benches. Either they need a gate of their own that
minimal mode leaves alone, or minimal mode needs to keep this part of the furniture group.

Filed from the QA pass on #216 (#230).

## What I did Followed the layer's three fetch gates into driver mode, having confirmed the layer works outside it (settled capture over the Peizerweg AHOB, `level_crossings = 3`). ## What happened Entering driver mode runs `data_layers::apply_minimal_mode`, which sets ```rust dl.furniture_enabled = false; ``` That is the third of this layer's three gates. In `map_geometry`: ```rust let crossing_cell = if wants.furniture { crate::systems::crossings::load_crossings_cell(cell.0, cell.1, has_rail).await } else { crate::systems::crossings::CrossingCell::default() }; ``` So a driving run draws no crossing and does not even ask the register for one — and because `furniture` is part of `DetailWants`, the change retears the ring, so the crossings already standing are taken away at the moment Start is pressed. ## What a user would expect Minimal mode strips scenery so the road reads: buildings, trees, grass, benches, parked cars, weather. A level crossing is not scenery. It is a road control a driver must stop at, and it is the one thing on this layer that a driver, specifically, would want to see coming. Turning it off in Drive is the opposite of what the mode is for — and it is the only mode in the client where a barrier across the road has a meaning. The same applies, more weakly, to the altitude fade it inherits: crossings are hidden above `FURNITURE_FADE_END` (450 m) like a bench, though a 7.6 m boom and a pair of masts are an order of magnitude larger than the objects that band was measured for. Compare \#215, which is the same complaint about the navigation marks. ## Where the seam is `crates/cartopolis/src/systems/gui/data_layers.rs::apply_minimal_mode`, and the fact that crossings deliberately have no toggle of their own (`docs/notes/prorail-level-crossings.md`, "What is not drawn, and why" — "Crossings ride the existing Furniture toggle, because they are that group's mesh, material and altitude fade"). Riding the toggle is what makes the group cheap; it is also what hands the crossings minimal mode's decision about benches. Either they need a gate of their own that minimal mode leaves alone, or minimal mode needs to keep this part of the furniture group. <sub>Filed from the QA pass on #216 (#230).</sub>
Sign in to join this conversation.
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#235
No description provided.