Commit graph

57 commits

Author SHA1 Message Date
Kelsi
326f7bcdaa feat(editor): add --gen-mesh-mushroom forest-prop primitive
Composite mushroom: 12-segment cylindrical stalk + 16×8
hemisphere cap on top (top half of a UV sphere). Cap radius
is independent of stalk radius so the silhouette can match
anything from a slim toadstool to a wide morel. Stalk has a
bottom cap and the hemisphere's lower edge is sealed against
a flat -Y disc (the "gills") so the mesh is watertight from
all viewing angles.

Defaults: stalkR=0.1, stalkH=0.6, capR=0.4. Useful for
forest decoration, swamp zones, fairy-ring set dressing.
Brings the procedural mesh primitive set to 29.
2026-05-08 23:48:03 -07:00
Kelsi
16ae6489c9 feat(editor): add --gen-texture-bark tree-bark pattern
Vertical streaks of varying brightness (per-column hash gives
each streak a stable shade in 0.85..1.10) sway-warped per-row
via a slow cosine offset, plus dark vertical cracks at random
columns where bark splits as the trunk expands.

Defaults: density=0.04 (~4% of columns become cracks), seed=1.
Useful for tree-trunk textures, wooden palisades, bark-clad
buildings. Brings the procedural texture pattern set to 24.
2026-05-08 23:15:03 -07:00
Kelsi
cd4bdfec44 feat(editor): add --gen-mesh-anvil blacksmith primitive
Composite anvil silhouette: 4-step pedestal (wide base → narrow
waist → wide cap → flat work face), each step a single addBox
call, plus a 4-vertex tapered prism for the horn extending in
+X past the face. The prism's 4 side triangles converge to a
single tip vertex (the horn point), with a sealed base square
behind it.

Defaults: length=1.0, width=0.4, hornLen=0.5, bodyH=0.5. Useful
for blacksmith shops, dwarven forges, weapon-crafting set
dressing. Brings the procedural mesh primitive set to 28.

Added directly to cli_gen_mesh.cpp — proves the modular file
accepts new primitives the same way as extracted ones.
2026-05-08 22:37:47 -07:00
Kelsi
ec9c7898d2 feat(editor): add --gen-texture-tile square stone tile pattern
Per-cell pattern: each pixel falls into a tile cell with grout
on every grid edge. Tiles get a stable per-tile shade jitter
(via integer-cell hash) so adjacent tiles look distinct rather
than identical. Grout is the constant separator color.

First new texture added directly to cli_gen_texture.cpp instead
of main.cpp — proves the modular pattern works for new
additions, not just extractions.

Defaults: tilePx=32, groutPx=2. Useful for floors, plaza
paving, dungeon walls. Brings the procedural texture pattern
set to 23.
2026-05-08 22:01:31 -07:00
Kelsi
58d1e40117 feat(editor): add --gen-mesh-chest treasure chest primitive
Composite procedural chest: rectangular body box + slightly
inset lid box on top + 3 thin iron bands wrapping around the
body (15% / 50% / 85% along width) + a small lock plate on
the front face. 6 boxes assembled into one batch.

Defaults: 1.4 × 0.9 × 0.9 body with 0.25-tall lid. Useful
for dungeon loot, room decoration, quest objectives. Brings
the procedural mesh primitive set to 27.
2026-05-08 21:19:51 -07:00
Kelsi
6272e58212 feat(editor): add --gen-texture-lava molten-rock pattern
Worley cellular noise where each cell is a chunk of cooled
crust and the inter-cell boundaries glow as bright cracks of
exposed magma. Each pixel finds its 2 nearest jittered cell
centers; pixels close to the boundary (small gap between
distances) become hot, with a soft penumbra falling off into
the dark crust interior.

Defaults: crackScale=32px, seed=1. Useful for volcanic zones,
elemental dungeons, lava lakes. Brings the procedural texture
pattern set to 22.
2026-05-08 20:33:45 -07:00
Kelsi
68bded4f20 refactor(editor): extract printUsage into cli_help.cpp
Pulls the 597-line block of printf calls that emits the --help
text out of main.cpp into its own translation unit. printUsage
is the longest single function in main.cpp by far and was pure
boilerplate (no logic, just a flat list of help lines).

Function moved verbatim to wowee::editor::cli::printUsage; all
6 in-tree callers (--list-commands, --info-cli-stats,
--info-cli-categories, --info-cli-help, --validate-cli-help,
and the bare --help/-h handler) updated to the namespaced name.
The CLI-meta commands continue to capture printUsage's stdout
the same way, so behavior is identical (verified by re-running
--validate-cli-help, --info-cli-stats, --list-commands).

main.cpp drops 26,650 → 26,286 lines (-364 net; -597 from the
removal, +233 from the include and namespace-prefixing the
six call sites... wait, no, +6). Actually main.cpp net delta
matches the body extraction.
2026-05-08 20:12:15 -07:00