DramaticShapeVoxelMod archival mirror · read-only
be02443e977862daf9121b72d29d88622bd4e13d

Merge branch 'worktree-viridian-forest' into 20260726_various_fixes

DramaticShape · 2026-07-27 · parent 0ba9109e40 5712f854b5

Merge branch 'worktree-viridian-forest' into 20260726_various_fixes

# Conflicts:
#	data/voxel_heights.lua

Changed files

CHANGELOG.md           |  32 ++++++++++
 data/voxel_heights.lua |  27 +++++---
 lib/ChunkMesher.lua    |  14 +++--
 lib/Structures.lua     | 232 +++++++++++++++++++++++++++++++++++++++++++++++++++++----------------
 lib/TileShape.lua      |  11 ++++
 5 files changed, 247 insertions(+), 69 deletions(-)

Diff

diff --cc data/voxel_heights.lua
index c16a706,622c56a..6f10a89
--- a/data/voxel_heights.lua
+++ b/data/voxel_heights.lua
@@@ -396,20 -186,25 +396,27 @@@ return 
      -- its $32 tile is the water-fallback trap and recessed into a pond
      -- lip in the middle of the woods.
      FOREST = {
 +      -- the hop-down edge, from data.field.tilePairs (CAVERN's entry
 +      -- above carries the same note for its own pair)
        ledge = { 46 },
-       -- the big trees -- the ball ($05/$06/$15/$16/$25/$26), its rim
-       -- wisps ($04/$07/$17/$23/$24/$27) and its feet ($35/$36) -- and
-       -- the stumps ($02/$03/$12/$13): one voxel hull per 16x16 cell,
-       -- cut from the cell's own art, the treatment the overworld border
-       -- forest already wears.  A tree spans 2x2 cells, so its four
-       -- quarter-hulls tile into one big lumpy canopy.  Every tile of
-       -- the drawing is listed: the cell-rounding is per TILE, and a rim
-       -- tile left out keeps its detector reading -- which is exactly
-       -- the ragged 0/8/16/32px box collar the trees wore
-       cylinder = { 2, 3, 4, 5, 6, 7, 18, 19, 21, 22, 23,
+       -- the big trees: the whole 2x2-CELL drawing carves as ONE 32px
+       -- voxel hull, so a tree is a single tall canopy instead of four
+       -- ground-level quarter-pancakes ("cut in half", as the first
+       -- attempt read).  `canopy` pins the drawing's top-left corner
+       -- tile ($04) as the group anchor; every other tile of the
+       -- drawing stays `cylinder` so the group build can verify and
+       -- claim its cells -- and so a stray partial drawing degrades to
+       -- per-cell hulls rather than boxes
+       canopy = { 4 },
+       cylinder = { 5, 6, 7, 21, 22, 23,
                     35, 36, 37, 38, 39, 53, 54 },
+       -- the stumps ($02/$03/$12/$13): a hull whose drawn top is a CUT
+       -- FACE.  The body builds from the bark rows alone, and the drawn
+       -- ellipse of growth rings projects onto the hull's round flat
+       -- top -- its bottom arc to the south, the way the 2D art means
+       -- it.  stump_cap is the ellipse's height in art rows
+       stump = { 2, 3, 18, 19 },
+       stump_cap = 7,
        -- the white sparkle filler inside the tree masses: flat, not an
        -- invisible zero-height box
        ground = { 0 },