- Add green cross banners on hospital exterior walls (Geneva-safe alternative)
- Add blue 'i' info banners on all 4 sides of tourism information boards
- Add flame-patterned banners on all 4 sides of fire hydrants
- Widen Block.id from u8 to u16 to support new banner block types
- Add wall banner blocks: white, blue, black, red, green (IDs 256-260)
- Add Bedrock block mappings for all new wall banner colors
- Cap garage/garages/carport buildings to single-story height
Elevated building:part elements (min_level > 0) sit above ground-level
passages and must not have their walls, floors, or decorations carved.
Create an effective_passages reference in generate_buildings() that
substitutes an empty bitmap for non-ground-level buildings, ensuring
all downstream functions receive no passage coordinates.
Rename test_output_sigma_large_bbox_no_regression to
test_output_sigma_large_bbox_grid_dominates and update its comment
to accurately reflect what it tests: that sigma_from_grid wins for
large areas, without implying value parity with the old constants.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The terrain sigma floor (×12) was designed to suppress SRTM rooftop
artifacts in dense urban areas (Manhattan), but it flattened mountains
into gentle walkable slopes everywhere. Reduce to ×3 (still covers
Voronoi-block suppression from NaN-fill) and halve BASE_SIGMA_REF
from 5.0 to 2.5 so the grid-proportional component also preserves
more detail.
Result: mountains now have 2-3 block steps on steep faces (realistic
cliff terrain) while cities remain smooth (~0.4 max step). The
slope-based material system (grass → gravel → stone) will activate
more often on steep terrain, adding visual realism.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Make BUILDING_PASSAGE_HEIGHT pub(crate) and use it in buildings_interior.rs
instead of hardcoded literal 4 (Copilot comment 4)
- Add CoordinateBitmap::new_empty() zero-allocation constructor
- Skip bitmap allocation in collect_building_passage_coords when no
tunnel=building_passage ways exist (Copilot comment 5)
Render ground-level archway openings through buildings where highway
ways tagged tunnel=building_passage pass through. A pre-scan phase
collects passage highway coordinates into a CoordinateBitmap, which
is threaded into building generation to:
- Cut wall blocks below passage height in build_wall_ring()
- Skip ground floors and place passage ceiling lintels
- Add corridor side walls where interior meets the passage
- Skip foundation pillars, corner quoins, wall depth features,
window decorations, and special doors at passage coordinates
- Suppress interior furniture placement inside the passage zone
- Make map stretch to fill available viewport height when window is
maximized, with proper buffer for footer version text
- Remove body default margin and prevent scrollbar overflow
- Reduce Overpass private.coffee fallback server timeout from 360s to 120s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Parking areas in amenities.rs were calling flood_fill_area() directly
with a hand-built coordinate list that wasn't properly closed, which
would produce empty results after the open-polyline rejection check.
Switch to flood_fill_cache.get_or_compute_element() which uses the
original ProcessedWay with proper closure, matching all other element
processors.
Three bugs fixed:
1. Open polylines (e.g. natural=ridge) were being flood-filled as polygons.
geo::Polygon auto-closes by connecting last to first, creating massive
diagonal triangular artifacts. Fix: SH-clipped closed polygons now
explicitly preserve first==last closure, and flood_fill_area rejects
unclosed input.
2. insert_bbox_corners was adding incorrect geometry after Sutherland-Hodgman
clipping. SH already produces correct output including bbox corners; the
post-processing incorrectly added extra corners between interior-crossing
polygon edges, inflating polygons into wrong shapes. Removed entirely.
3. clip_polygon_sutherland_hodgman_simple (water variant) skipped the closing
edge on passes 2-4 because it assumed explicit closure that only existed
on pass 1. Fixed to match the main variant's is_closed detection.
- Uncheck and grey out "Disable Height Limit" toggle when Bedrock
format is selected (not supported without data packs)
- Add test for --disable-height-limit CLI flag parsing
- Fix clippy manual_div_ceil warning in heightmap packing
The new #disable-height-limit-toggle checkbox was missing its
accent-color: #fecc44 CSS rule, causing it to render with the
default browser checkbox color instead of the yellow theme.
- Use empty blacklist Some(&[]) instead of None for corner posts so
they actually overwrite the cap slab (None/None = no-op when a
block already exists)
- Remove is_zebra_crossing duplicate re-introduced by merge from main
- Add BLACK_CONCRETE to zebra crossing whitelist so stripes render on
asphalt area surfaces and older generated roads
- Remove AIR-only whitelist from parapet corner posts so they reliably
overwrite the cap slab placed just before them
- Swap lobby base priority above floor separation band so the ground
floor of modern skyscrapers is solid wall block throughout
- Add unit tests for gray_concrete_powder and cyan_terracotta Bedrock
block mappings to catch palette serialization regressions
- Use bitwise AND (h & 1) instead of modulo in road_block() for
idiomatic bit checking
- Deduplicate effective_block computation by hoisting it before the
use_absolute_y branch in the main road surface drawing path
- Move is_zebra_crossing outside inner loop (perf) and remove
String allocation in tag comparison
- Add BLACK_CONCRETE back to road surface blacklist to prevent
overwriting asphalt areas and parking driving lanes
- Add BLACK_CONCRETE to generate_siding check to protect all
paved surfaces
- Add Bedrock block mappings for gray_concrete_powder (concretePowder
with color state) and cyan_terracotta (stained_hardened_clay with
color state) to fix Bedrock edition export
- Floor-level ledge bands: horizontal slab projections at each floor
separation row, complementing the existing vertical fins
- Foundation course: continuous accent block band at ground level
- Lobby base (70%): solid wall block for the first floor cycle instead
of glass, reading as a podium
- Enhanced parapet: accent slab cap with corner posts for a defined
roofline crown
Use a deterministic coordinate-based hash to randomly scatter two block types
for road surfaces instead of uniform black_concrete. Update all protection
lists across tree, natural, landuse, amenities, and ground generation to
recognize the new road blocks.