Fences join like walls, fence designs, draw runs corner by corner
Deploy web Studio / deploy (push) Successful in 3m52s

Joints: line_joint (util.rhai) applies the house-wall rules to fences and
site walls, so pieces never overlap and the depth sort stays clean.
- A corner is closed: the thicker piece (or, if equal, the one along
  world x) runs through, and the other stops at its face.
- On a straight run, two pieces share one post.
- At a T, the stem stops at the other piece's face without a post of its
  own.
- A fence that ends at a site or house wall stops at the wall's face.

Fence designs (prop style): mesh, wooden boards, steel bars, mesh on a
stone base, cobble wall, and brick wall with pillars. Board, stone and
brick joints are drawn on the face turned to the viewer. Brick pillars
are separate sprites.

Studio: line prefabs (walls, fences, hedges, roads) can be drawn as a
run by clicking corner after corner. Double-click or Enter ends the run,
clicking the first corner closes it, and Backspace drops the last
corner. A run is one undo step. A drag still draws one piece. Corners
and ends snap onto the ends and lines of the pieces they meet, and a
marker shows where the next corner will snap.

The house demo gets a brick front wall with gate pillars and wooden side
fences in place of the old east fence, which ran over the road. Tests
cover every design's corners, Ts, straight runs and wall stops, with no
depth-sort cycles in any rotation, plus site walls. check_studio draws
and closes a fence run, undoes it in one step, snaps a dragged spur,
and picks a design.
This commit is contained in:
grabowski committed 2026-10-24 18:07:40 +07:00
1 parent 7962249191
commit e4017ce2a8
14 files changed
+559 -27

No files matched your search

-2
View File
@@ -135,8 +135,6 @@ fn prefab_house_wall(o) {
if end > x + 0.01 { wall_run(x, end, t, top, p.mat, cap); }
}
fn along_world_x(rot) { ((rot / 90.0).round().to_int() % 2) == 0 }
/// How far wall o reaches past end e (-1 or 1) of its centre line. Alone:
/// half its thickness, so a corner closes. Where other walls meet it,
/// the walls must not overlap (the depth sort needs them apart): along a