PROCITY/web/js/world
m3ultra ee16545941 Lane B round 17 (v3.2): wind sway SHIPS -- weather-driven gum-tree sway (ledger #5, parked since R7)
Verdict: shipped, not killed. The R7 park reason ("touches shared materials") is a non-blocker under
R16's measurement-over-brief standard: the gum-tree billboard material is B-owned (furniture.js), so
this is entirely Lane B -- no C/E material seam. Verified fresh Chromium seed 20261990.

- New web/js/world/wind.js: shared uniforms (uWindTime/uWindAmp) + applyWind(material) (onBeforeCompile
  vertex patch: top-weighted horizontal sway, per-instance world-position phase, USE_INSTANCING-guarded)
  + updateWind(dt,intensity). furniture.js applies it to the tree material; weather.js drives it from
  update(dt) (base breeze 0.05 clear -> 0.05+intensity*0.30 ~0.35 rain gusts).
- Trees only. Awnings excluded by MEASUREMENT: rigid posted-verandah box slabs don't flutter (fabric
  canopy ripple = separate v3.3, shares the rigid awning InstancedMesh today).
- Byte-identical when weather off (the covenant): updateWind runs only inside weather.update, and the
  weather system isn't constructed under ?weather=0 / ?classic=1 -> uWindAmp stays 0 -> sin(...)*0.0==0.0
  -> identical vertices. Proven: amp=0 two times = 0/180000 px differ; ?weather=0 boot = 0 tree-motion px;
  ?classic=1 = amp 0, trees render, 0 errors. No plan/fetch/rng change -> F's classic gate untouched.
- Sway works: rain amp 0.305 moves ~14100/180000 region px over 0.8s (exaggerated 2.5 -> 101k); trees
  render clean, no glitch. ~0 draws (ALU ops in the existing tree InstancedMesh vertex program), 0 errors.

-> Lane F (B->F handshake): SWAY SHIPPED. In old frames under the default boot; ?classic=1/?weather=0
   sway-free + byte-identical. Procedural (no asset -> E has nothing to do).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 14:30:09 +10:00
..
audio.js Lane B (Streetscape) round 14: v3.0 release — alpha-alias retirement + tour audit + queue_night hero (?gigs=1) 2026-07-16 08:43:22 +10:00
buildings.js Lane F R16 (v3.1 THE FLIP): defaults on + ?classic covenant + seated-stature gate (ledger #1, #3) 2026-07-16 13:20:43 +10:00
chunks.js Lane B round-6: place street_bin + bus_shelter GLBs (on the street graph, collision-verified) 2026-07-14 23:04:14 +10:00
dbg.js Lane B (Streetscape) round 14: v3.0 release — alpha-alias retirement + tour audit + queue_night hero (?gigs=1) 2026-07-16 08:43:22 +10:00
fixture_plan.js Lane B (Streetscape): chunk-streamed walkable town shell 2026-07-14 14:28:47 +10:00
furniture.js Lane B round 17 (v3.2): wind sway SHIPS -- weather-driven gum-tree sway (ledger #5, parked since R7) 2026-07-16 14:30:09 +10:00
gig_state.js Lane F R15 (v3.0): retire the R12 single-venue alias (ledger #2) 2026-07-16 11:14:19 +10:00
ground.js Lane B (Streetscape): chunk-streamed walkable town shell 2026-07-14 14:28:47 +10:00
hud.js Lane B round-4: closed facades (§3.5) + shot poses/letterbox + furniture GLB + novelty_record 2026-07-14 19:59:27 +10:00
interior_mode.js Lane F R15 (v3.0): identity continuity — wire D's tonight-roster into the crowd (ledger #3) 2026-07-16 11:19:19 +10:00
lighting.js Lane B round-8: weather (?weather=1) — seeded rain/overcast/clear, exposes PROCITY.weather for D 2026-07-15 02:34:14 +10:00
minimap.js Lane B (Streetscape): chunk-streamed walkable town shell 2026-07-14 14:28:47 +10:00
planutil.js Lane B (Streetscape): chunk-streamed walkable town shell 2026-07-14 14:28:47 +10:00
player.js Lane B (Streetscape): chunk-streamed walkable town shell 2026-07-14 14:28:47 +10:00
skins.js Lane B (Streetscape): chunk-streamed walkable town shell 2026-07-14 14:28:47 +10:00
tram.js Lane B round-9: v2 tram (?tram=1) + tour bookmarks + rain-drop polish 2026-07-15 11:09:41 +10:00
venue.js Lane B round 16 (v3.1 THE FLIP): town-wide streetlamp pools + default-boot budget re-baseline 2026-07-16 12:21:19 +10:00
weather.js Lane B round 17 (v3.2): wind sway SHIPS -- weather-driven gum-tree sway (ledger #5, parked since R7) 2026-07-16 14:30:09 +10:00
wind.js Lane B round 17 (v3.2): wind sway SHIPS -- weather-driven gum-tree sway (ledger #5, parked since R7) 2026-07-16 14:30:09 +10:00