47 lines
1.7 KiB
Markdown
47 lines
1.7 KiB
Markdown
# 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:
|
|
|
|
```json
|
|
{
|
|
"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
|
|
}
|
|
```
|