RECORDGOD/webstore/assets/wowplatter/rooflong.svg
type-two 8c25b65d7e feat(virtual): finish the 3D store port — per-room scoping, decals, portals
Scene was dumping all 3 rooms' racks/crates/lights into one room, and the
served decals + portals were never rendered (trapped in booth-room).

- /virtual/scene scopes to ONE room (?space=, default = is_default space);
  filters racks/crates/lights/cameras/portals/decals/covers by space_id
- render decals (image + canvas-text planes) and portal doorways; walk into
  a portal -> loads the linked room
- portal links_to_id is the PAIRED portal's id, not a space — resolve through
  it to the destination room (to_space)
- copy the 29 referenced decal webp/svg into webstore/assets (self-contained,
  served /store/assets); rewrite WP /wp-content/uploads/ paths in the scene API
- skip the 17MB logo .glb mesh decal (flat logo-blue.webp covers branding)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 21:00:02 +10:00

104 lines
6.6 KiB
XML
Executable File

<svg xmlns="http://www.w3.org/2000/svg"
width="9600" height="4800"
viewBox="0 0 9600 4800">
<defs>
<!-- Vertical-ridge pattern for one 1200x1200 tile -->
<pattern id="ridge-vertical" patternUnits="userSpaceOnUse" width="1200" height="1200">
<line x1="100" y1="0" x2="100" y2="1200" stroke="#000" stroke-width="8" stroke-linecap="butt"/>
<line x1="200" y1="0" x2="200" y2="1200" stroke="#000" stroke-width="8" stroke-linecap="butt"/>
<line x1="300" y1="0" x2="300" y2="1200" stroke="#000" stroke-width="8" stroke-linecap="butt"/>
<line x1="400" y1="0" x2="400" y2="1200" stroke="#000" stroke-width="8" stroke-linecap="butt"/>
<line x1="500" y1="0" x2="500" y2="1200" stroke="#000" stroke-width="8" stroke-linecap="butt"/>
<line x1="600" y1="0" x2="600" y2="1200" stroke="#000" stroke-width="8" stroke-linecap="butt"/>
<line x1="700" y1="0" x2="700" y2="1200" stroke="#000" stroke-width="8" stroke-linecap="butt"/>
<line x1="800" y1="0" x2="800" y2="1200" stroke="#000" stroke-width="8" stroke-linecap="butt"/>
<line x1="900" y1="0" x2="900" y2="1200" stroke="#000" stroke-width="8" stroke-linecap="butt"/>
<line x1="1000" y1="0" x2="1000" y2="1200" stroke="#000" stroke-width="8" stroke-linecap="butt"/>
<line x1="1100" y1="0" x2="1100" y2="1200" stroke="#000" stroke-width="8" stroke-linecap="butt"/>
</pattern>
<!-- Horizontal-ridge pattern for one 1200x1200 tile -->
<pattern id="ridge-horizontal" patternUnits="userSpaceOnUse" width="1200" height="1200">
<line x1="0" y1="100" x2="1200" y2="100" stroke="#000" stroke-width="8" stroke-linecap="butt"/>
<line x1="0" y1="200" x2="1200" y2="200" stroke="#000" stroke-width="8" stroke-linecap="butt"/>
<line x1="0" y1="300" x2="1200" y2="300" stroke="#000" stroke-width="8" stroke-linecap="butt"/>
<line x1="0" y1="400" x2="1200" y2="400" stroke="#000" stroke-width="8" stroke-linecap="butt"/>
<line x1="0" y1="500" x2="1200" y2="500" stroke="#000" stroke-width="8" stroke-linecap="butt"/>
<line x1="0" y1="600" x2="1200" y2="600" stroke="#000" stroke-width="8" stroke-linecap="butt"/>
<line x1="0" y1="700" x2="1200" y2="700" stroke="#000" stroke-width="8" stroke-linecap="butt"/>
<line x1="0" y1="800" x2="1200" y2="800" stroke="#000" stroke-width="8" stroke-linecap="butt"/>
<line x1="0" y1="900" x2="1200" y2="900" stroke="#000" stroke-width="8" stroke-linecap="butt"/>
<line x1="0" y1="1000" x2="1200" y2="1000" stroke="#000" stroke-width="8" stroke-linecap="butt"/>
<line x1="0" y1="1100" x2="1200" y2="1100" stroke="#000" stroke-width="8" stroke-linecap="butt"/>
</pattern>
<!-- Background checkerboard pattern for alternating blue/black -->
<pattern id="checker-bg" patternUnits="userSpaceOnUse" width="2400" height="2400">
<rect x="0" y="0" width="1200" height="1200" fill="blue"/>
<rect x="1200" y="0" width="1200" height="1200" fill="black"/>
<rect x="0" y="1200" width="1200" height="1200" fill="black"/>
<rect x="1200" y="1200" width="1200" height="1200" fill="blue"/>
</pattern>
</defs>
<!-- outer border -->
<rect x="0" y="0" width="9600" height="4800" stroke="#000" fill="none" stroke-width="8"/>
<!-- background checkerboard -->
<rect x="0" y="0" width="9600" height="4800" fill="url(#checker-bg)"/>
<!-- overlay ridge patterns on top of checkerboard -->
<g>
<rect x="0" y="0" width="1200" height="1200" fill="url(#ridge-vertical)"/>
<rect x="1200" y="0" width="1200" height="1200" fill="url(#ridge-horizontal)"/>
<rect x="2400" y="0" width="1200" height="1200" fill="url(#ridge-vertical)"/>
<rect x="3600" y="0" width="1200" height="1200" fill="url(#ridge-horizontal)"/>
<rect x="4800" y="0" width="1200" height="1200" fill="url(#ridge-vertical)"/>
<rect x="6000" y="0" width="1200" height="1200" fill="url(#ridge-horizontal)"/>
<rect x="7200" y="0" width="1200" height="1200" fill="url(#ridge-vertical)"/>
<rect x="8400" y="0" width="1200" height="1200" fill="url(#ridge-horizontal)"/>
<rect x="0" y="1200" width="1200" height="1200" fill="url(#ridge-horizontal)"/>
<rect x="1200" y="1200" width="1200" height="1200" fill="url(#ridge-vertical)"/>
<rect x="2400" y="1200" width="1200" height="1200" fill="url(#ridge-horizontal)"/>
<rect x="3600" y="1200" width="1200" height="1200" fill="url(#ridge-vertical)"/>
<rect x="4800" y="1200" width="1200" height="1200" fill="url(#ridge-horizontal)"/>
<rect x="6000" y="1200" width="1200" height="1200" fill="url(#ridge-vertical)"/>
<rect x="7200" y="1200" width="1200" height="1200" fill="url(#ridge-horizontal)"/>
<rect x="8400" y="1200" width="1200" height="1200" fill="url(#ridge-vertical)"/>
<rect x="0" y="2400" width="1200" height="1200" fill="url(#ridge-vertical)"/>
<rect x="1200" y="2400" width="1200" height="1200" fill="url(#ridge-horizontal)"/>
<rect x="2400" y="2400" width="1200" height="1200" fill="url(#ridge-vertical)"/>
<rect x="3600" y="2400" width="1200" height="1200" fill="url(#ridge-horizontal)"/>
<rect x="4800" y="2400" width="1200" height="1200" fill="url(#ridge-vertical)"/>
<rect x="6000" y="2400" width="1200" height="1200" fill="url(#ridge-horizontal)"/>
<rect x="7200" y="2400" width="1200" height="1200" fill="url(#ridge-vertical)"/>
<rect x="8400" y="2400" width="1200" height="1200" fill="url(#ridge-horizontal)"/>
<rect x="0" y="3600" width="1200" height="1200" fill="url(#ridge-horizontal)"/>
<rect x="1200" y="3600" width="1200" height="1200" fill="url(#ridge-vertical)"/>
<rect x="2400" y="3600" width="1200" height="1200" fill="url(#ridge-horizontal)"/>
<rect x="3600" y="3600" width="1200" height="1200" fill="url(#ridge-vertical)"/>
<rect x="4800" y="3600" width="1200" height="1200" fill="url(#ridge-horizontal)"/>
<rect x="6000" y="3600" width="1200" height="1200" fill="url(#ridge-vertical)"/>
<rect x="7200" y="3600" width="1200" height="1200" fill="url(#ridge-horizontal)"/>
<rect x="8400" y="3600" width="1200" height="1200" fill="url(#ridge-vertical)"/>
</g>
<!-- grid lines -->
<g stroke="#000" fill="none" stroke-width="8">
<line x1="1200" y1="0" x2="1200" y2="4800"/>
<line x1="2400" y1="0" x2="2400" y2="4800"/>
<line x1="3600" y1="0" x2="3600" y2="4800"/>
<line x1="4800" y1="0" x2="4800" y2="4800"/>
<line x1="6000" y1="0" x2="6000" y2="4800"/>
<line x1="7200" y1="0" x2="7200" y2="4800"/>
<line x1="8400" y1="0" x2="8400" y2="4800"/>
<line x1="0" y1="1200" x2="9600" y2="1200"/>
<line x1="0" y1="2400" x2="9600" y2="2400"/>
<line x1="0" y1="3600" x2="9600" y2="3600"/>
</g>
</svg>