Conveyors and producers: goods flow from presses down the belts
Deploy web Studio / deploy (push) Successful in 1m4s

- Producer (category Industry): a press making cartons, crates, drums, sacks or parts at a set
  rate per minute; its ram goes down once per item, a green / red light shows running / stopped.
- Conveyor: drawn the way it runs (new prefab meta `directed`: the Studio turns the piece from
  where the drag starts), belt width, height, rise (inclines), speed, goods and spacing; legs,
  rails and a drive motor. Corners join without overlap (the receiving belt runs through, the
  feeding one stops at its side).
- A conveyor starting on a producer's output side carries its goods at its rate; one starting at
  another's end carries on with what that one carries. The gap is speed / rate. A stopped press or
  belt stops the goods after it. Tooltips show speed, rate and source.
- The goods ride a group moving one gap per loop (no reordering), first fading in, last out.
- Script API: world_of(o, u, v), info_row(key, value); objects_on falls back to half of p.d.
- Theme: industry colours, LED colours (the marker's LED had none).
- examples/factory + Factory demo in the web Studio; MCP instructions on production lines.

Checks: 68 Rust tests (conveyor joints, feed and spacing, every view of the factory demo),
Studio 108/108 (draw direction, feed from a producer, rate change), web 89/89.
This commit is contained in:
grabowski committed 2026-10-24 21:46:10 +07:00
1 parent a202283a60
commit 18dd324543
20 files changed
+617 -18

No files matched your search

+33
View File
@@ -262,6 +262,16 @@ koi = "#e8742a"
koiw = "#e9e4da"
koig = "#d9a63a"
ripple = "#8cc3d8"
# industry: conveyors, machines, robot arms, goods
conv = "#4f6f93"
crate = "#8a6a3e"
drum = "#2f62a8"
mach1 = "#4f7d62"
mach2 = "#3f6390"
mach3 = "#5b6370"
mach4 = "#b8692b"
robot = "#e07a1f"
robotb = "#3a3f48"
[palette.light]
sky1 = "#a9d4fb"
@@ -519,6 +529,15 @@ koi = "#f08a3c"
koiw = "#fbf8f2"
koig = "#efc35a"
ripple = "#d6f1fa"
conv = "#6f93bd"
crate = "#b48d55"
drum = "#3d7cd0"
mach1 = "#6fa384"
mach2 = "#5b86bd"
mach3 = "#8a93a1"
mach4 = "#e08a43"
robot = "#f08c2b"
robotb = "#5a616d"
[materials]
warn = "#e0412f"
@@ -724,6 +743,17 @@ z-living = "color-mix(in srgb, var(--iso-floor) 64%, #c8a070)"
z-bed = "color-mix(in srgb, var(--iso-floor) 70%, #d8b88a)"
z-garage = "color-mix(in srgb, var(--iso-floor) 88%, #8d96a8)"
genset = "genset"
conv = "conv"
convleg = "steel"
crate = "crate"
drum = "drum"
mach1 = "mach1"
mach2 = "mach2"
mach3 = "mach3"
mach4 = "mach4"
robot = "robot"
robotb = "robotb"
grip = "#2b2f37"
# house parts and furniture
brick = "brick"
woodd = "woodd"
@@ -779,6 +809,9 @@ f-conc = "conc"
".iso-svg .iso-win" = "fill: var(--iso-win); stroke: none"
".iso-svg .iso-school" = "pointer-events: none"
".iso-svg .iso-swimbox" = "fill: none; stroke: none"
".iso-svg .iso-ledr" = "fill: var(--iso-led-r); stroke: none"
".iso-svg .iso-ledg" = "fill: var(--iso-led-g); stroke: none"
".iso-svg .iso-ledo" = "fill: var(--iso-led-o); stroke: none"
".iso-svg .iso-fish" = "stroke: none; fill-opacity: .92"
".iso-svg .iso-koi" = "fill: var(--iso-koi)"
".iso-svg .iso-koiw" = "fill: var(--iso-koiw)"