Commit graph

114 commits

Author SHA1 Message Date
Kelsi
6b1b901bc5 feat(editor): add --gen-texture-mosaic 3-color tile pattern
Per-cell hash picks one of 3 colors for each square tile, with
1-pixel black grout on the top + left edges of every cell so
tiles read as physically separated. Exit log breaks down how
many tiles got each color so callers can verify the seed
distribution.

Defaults: tilePx=16, seed=1. Useful for cathedral floors,
stained-glass set dressing, ornate plaza paving. Brings the
procedural texture pattern set to 28.
2026-05-09 03:23:01 -07:00
Kelsi
dab7705c0f feat(editor): add --gen-mesh-grave tombstone primitive
Two-box composite: a wider low base + a vertical tablet
centered on top. Base is deeper than tablet (1.5×) and base
height is 20% of tablet height — proportions that read as a
stable foundation supporting an upright stone.

Defaults: tablet 0.6×1.0×0.15, base width 0.8. Useful for
graveyards, undead zones, memorial set dressing, ruined
chapel courtyards. Brings the procedural mesh primitive set
to 32.
2026-05-09 03:00:19 -07:00
Kelsi
9890429e3c feat(editor): add --gen-texture-vines climbing-plant pattern
Solid wall background plus N vine paths that walk upward from
the bottom edge with a smooth cosine drift + tiny per-step
horizontal jitter. Each vine paints 2 pixels wide on every row
it visits so the trail reads as a thin band rather than a
single-pixel line.

Defaults: vineCount=8, seed=1. Useful for ruined castle walls,
overgrown ruins, jungle temple textures, ivy-covered facades.
Brings the procedural texture pattern set to 27.
2026-05-09 02:37:06 -07:00
Kelsi
0c1f873029 feat(editor): add --gen-mesh-banner pole + flag primitive
Composite banner: 12-segment vertical pole cylinder with top
and bottom caps + a rectangular flag attached at the top of
the pole, draped along -Z. The flag is two-sided (front faces
+X, back faces -X) so it reads from both viewing angles
without needing backface-culling-disabled materials.

Defaults: poleH=3, poleR=0.05, flagW=0.8, flagH=1.2. Useful
for guild halls, faction territory markers, military camps,
parade dressing. Brings the procedural mesh primitive set
to 31.
2026-05-09 02:10:23 -07:00
Kelsi
2d81bc9f6b feat(editor): add --gen-texture-stars night-sky pattern
Solid background fill plus randomly placed stars at varied
brightness — most stars dim (30-65% blend toward star color),
occasional bright stars (85-100% blend) — so the sky reads
with depth rather than as uniform noise. Exit log breaks down
how many bright vs faint stars actually landed.

Defaults: density=0.005 (~0.5% of pixels become stars), seed=1.
Useful for skybox top-faces, distant night sky planes, magical
constellation set dressing. Brings the procedural texture
pattern set to 26.
2026-05-09 01:32:08 -07:00
Kelsi
d0c8ea582e feat(editor): add --gen-mesh-cart wagon primitive
Composite cart: rectangular bed box + 2 axis-along-Z cylindrical
wheels mounted on each side at the bottom of the bed. Each wheel
has 16 angular segments + front/back caps. Bed sits at y=wheelR
so the wheels touch the ground at y=0.

Defaults: 1.6×0.8×0.5 bed, wheelR=0.35. Useful for medieval
village clutter, market scenes, NPC vendor decoration. Brings
the procedural mesh primitive set to 30.
2026-05-09 00:52:13 -07:00
Kelsi
08f740a1ff feat(editor): add --gen-texture-clouds sky pattern
Multi-octave cosine-product noise (4 octaves at doubling
frequency, halving amplitude) thresholded by `coverage` so
values above the threshold blend toward cloud color and below
fade to sky. A 0.15-wide smoothstep band feathers cloud edges
instead of stepping hard.

Defaults: coverage=0.5 (mixed clouds), seed=1. Useful for
skybox cubemaps, distant sky planes, atmospheric backdrop
art. Brings the procedural texture pattern set to 25.
2026-05-09 00:20:14 -07:00
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