1.7 KiB
1.7 KiB
PresentationWall
A slideshow display surface. Loads a set of JPEG slides from Supabase storage and renders them in sequence.
❌ Currently not in Creator
Type
pre-defined
3D
The PresentationWall is a 4m x 2,25m opaque Plane. When "controls" is set to true it expands to 4m x 2,5m. Its Origin is at the Bottom-Center (if controls are disabled). Spawnpoint should be {0,1,0} so its 1m above the floor.
Custom Args:
| Key | Type | Implemented | Description |
|---|---|---|---|
| file | string | ✔️ | UUID of the Slide record in the Supabase slides table. The runtime fetches slides_count and loads each {storage_folder}/{i}.jpg |
| widthcrop | float | ⚠️ no-op in Unity | Horizontal crop |
| heightcrop | float | ⚠️ no-op in Unity | Vertical crop |
| controls | bool | ❌ | If Controls are enabled at the bottom of the screen, currently always true |
| grabable | "true" / "false" |
⚠️ | Whether the item can be grabbed in-experience (common to all types) |
Special Notes:
file is not a storage path — it is the id field of a Slide row in Supabase. The behaviour queries supabase.From<Slide>().Where(s => s.id == value) to find the slide folder and count.
Signed URLs are generated per slide (1-hour TTL) and loaded as Texture2D.
Example:
{
"position": { "x": 10.0, "y": 4.0, "z": -6.0 },
"rotation": { "x": 0.0, "y": 0.0, "z": 0.0 },
"scale": { "x": 1.0, "y": 1.0, "z": 1.0 },
"type": "pre-defined",
"resourcename": "PresentationWall",
"item-custom-args": [
{ "argument": "file", "value": "b83a17ab-92bf-4122-a4d0-7b467a105ae0/converted/powerpoint1" },
{ "argument": "widthcrop", "value": "0" },
{ "argument": "heightcrop", "value": "0" }
],
"item-custom-args-adv": null
}