Wildlife and nature: animals, beehives, bushes, flowers, rocks, logs
Deploy web Studio / deploy (push) Successful in 1m5s
Deploy web Studio / deploy (push) Successful in 1m5s
New stdlib module wildlife.rhai: - Animals (new palette category): Deer (stag with antlers, does, fawns), Wild boar, Fox, Elephant (bull with tusks, cow, calf), Rabbits. Low-poly solids from faces (loft, tube), parts drawn back to front by depth, faces edged in their own shade (class beast). Herds scatter round a spot, each animal its own sprite facing about the object's rotation. Grazing animals switch between two head poses (iso-pose2 groups), elephants curl their trunks, rabbits hop. - Birds and Butterflies as flocks: swim() takes a shape (bird, fly, bee); wings flap out of step. Fish output unchanged. - Beehives on stands with supers, lids, entrances and bees flying round; Bush (round, flowering, berries); Flowers (bed in rows or meadow); Rocks; Log or stump. g-meadow and g-soil ground materials. - polyline() takes 3D points as documented (antlers). Theme colours for dark and light, viewer CSS for poses, flapping, hopping. examples/country: elephants in a paddock with a cut corner, deer at a forest edge, boar, fox, rabbits, an apiary by a meadow, a pond, a lane, fence and hedgerow at angles; Country demo in the web Studio and deploy. MCP guidance, README, SCRIPTING, ROADMAP. Tests: Rust 78, Studio 122; existing examples draw the same (only the embedded theme CSS grew).
This commit is contained in:
1 parent
96d472625f
commit
e840d36000
22 files changed
+1211
-16
No files matched your search
+23
-2
@@ -88,11 +88,11 @@ shaded automatically by face direction.
|
||||
| `flat(poly or polys, z, cls[, id])` | flat polygon(s); later ones cut holes |
|
||||
| `open(a, b, [[u0, u1, z0, z1], …], cls[, id])` | windows / doors on the face a→b (outward normal on the right) |
|
||||
| `lines(segs, z, cls)`, `disc(cx, cy, z, r, cls[, id])` | markings |
|
||||
| `polyline(lines, z, cls)` | open lines through plan points at height z (or 3D points): a dashed line stays one dash run round a curve |
|
||||
| `polyline(lines, z, cls)` | open lines through plan points at height z, or 3D points `[x, y, z]` (antlers): a dashed line stays one dash run round a curve |
|
||||
| `circle(x, y, z, r_px, cls[, dx, dy])`, `stem(x, y, z0, z1, w_px, cls)` | screen-space details (crowns, poles) |
|
||||
| `person(x, y, z[, cls])`, `sit(x, y, z, cls)`, `head(x, y, z, r)`, `led(x, y, z[, cls])` | figures |
|
||||
| `puffs(x, y, z[, kind[, n, dur]])`, `fan(x, y, z, r)` | animated steam / smoke / fans |
|
||||
| `swim(x, y, z, [#{ rx, ry, dur, delay, cw, len, cls }, ...])` | fish going round ellipses (radii rx, ry along the object's axes) about (x, y) on the plane at z, one round per `dur` s, clockwise when `cw`; `cls` koi / koiw / koig (the pond) |
|
||||
| `swim(x, y, z, [#{ rx, ry, dur, delay, cw, len, cls[, shape] }, ...])` | fish going round ellipses (radii rx, ry along the object's axes) about (x, y) on the plane at z, one round per `dur` s, clockwise when `cw`; `cls` koi / koiw / koig (the pond); `shape` "bird" (wings `len` across, flapping), "fly" (a butterfly) or "bee" makes it a flock |
|
||||
| `seq([[x, y, \|q\| …], …])` | items drawn back to front by their anchor |
|
||||
| `group(cls[, css], \|q\| …)`, `begin(cls[, css])` … `end()` | `<g>` around parts (animation) |
|
||||
| `ext(x, y, z)`, `ext_box(…)` | widen the sort box |
|
||||
@@ -145,6 +145,27 @@ orders them, the one on the viewer's side going later. A long diagonal wall
|
||||
therefore sorts right against everything on either side of it, and mitred
|
||||
pieces against each other.
|
||||
|
||||
## Animals
|
||||
|
||||
`wildlife.rhai` draws animals as low-poly solids from faces. `s.loft(spine,
|
||||
rs, n, [side, cap0, cap1])` sweeps an n-sided ring (radius r, or `[across,
|
||||
up]`) along 3D points, keeping its turn round bends; `s.tube(a, b, ra, rb, n,
|
||||
mat)` is a loft of two rings. `face` shades each face by its direction and
|
||||
leaves out the ones turned away, so a solid needs no sorting of its own
|
||||
faces; separate parts (legs, body, neck, head, antlers) are drawn back to
|
||||
front by `draw_parts`, which sorts them by the depth of their anchors in the
|
||||
view (`depth(x, y) + z`). The class `beast` edges each face in its own shade
|
||||
instead of the dark outline, so a body reads as one surface.
|
||||
|
||||
`animal_parts(kind, sub)` returns `#{ body, up, down }` for an animal facing
|
||||
+x: the parts that stay and two head poses. With grazing on, the poses sit in
|
||||
two groups `iso-a iso-pose2 iso-pose0` and `iso-a iso-pose2` that take turns
|
||||
(the CSS shows the first unanimated); each animal starts at its own point of
|
||||
the cycle. `herd(o, kind, mix, graze)` scatters `n` animals in a sunflower
|
||||
spread within `r` of the object, each facing its rotation give or take 70°,
|
||||
each its own sprite. Flocks of birds, butterflies and bees use `swim` with a
|
||||
`shape`.
|
||||
|
||||
## Production lines
|
||||
|
||||
`producer`, `conveyor` and `robot_arm` (stdlib/industry.rhai) work together
|
||||
|
||||
Reference in new issue
Block a user