diff --git a/data-structure-database.md b/data-structure-database.md index 4b4341f..1b0e5a5 100644 --- a/data-structure-database.md +++ b/data-structure-database.md @@ -60,7 +60,7 @@ All values are serialized as strings. | Creator type | `resourcename` | Custom args | |---|---|---| -| `Cube` | `Cube` | `color`, `opacity` | +| `Cube` | `Cube` | `color` | | `Sphere` | `Sphere` | `color` | | `Cylinder` | `Cylinder` | `color` | | `Cone` | `Cone` | `color` | @@ -71,34 +71,44 @@ All values are serialized as strings. | Creator type | `resourcename` | Custom args | |---|---|---| -| `Directional Light` | `Directional Light` | `color`, `intensity`, `target` (`"x,y,z"`) | -| `Point Light` | `Point Light` | `color`, `intensity` | +| `Directional Light` | `Directional Light` | `color`, `intensity`†, `target` (`"x,y,z"`) | +| `Point Light` | `Point Light` | `color`, `intensity`† | + +> †`intensity` is the key saved in the database, but Unity reads `brightness` — the args will not apply at runtime until this mismatch is resolved. See individual object docs. ### Room access | Creator type | `resourcename` | Custom args | |---|---|---| | `Entrance` | `Entrance` | _(none)_ | -| `Exit` | _(not implemented in save)_ | — | -| `RoomTeleporter` | _(not implemented in save)_ | `roomid` | +| `GoToOtherRoom` | `GoToOtherRoom` | `RoomName`, `UUID`, `color` _(❌ not yet implemented in Creator or Unity)_ | ### Streaming / media | Creator type | `resourcename` | Custom args | |---|---|---| -| `Billboard` | `Billboard` | `url` (file path) | +| `Billboard` | `Billboard` | `url` (Supabase storage path, signed at runtime) | | `LiveKitStream` | `LiveKitStream` | `LiveKitRoomID`, `shader`, `GreenScreenColor`, `GreenScreenBorderSettings`, `GreenScreenColorNear`, `widthcrop`, `heightcrop` | -| `VideoWall` | `VideoWall` | `file`, `widthcrop`, `heightcrop` | -| `Presentation` | `PresentationWall` | `file` | +| `VideoWall` | `VideoWall` | `file`, `shader`, `volume`, `controls`, `autoplay`, `widthcrop`, `heightcrop` | +| `Presentation` | `PresentationWall` | `file`, `widthcrop`, `heightcrop`, `controls` _(❌ not in Creator)_ | | `Camera` | `CCTVCamera` | `target` (`"x,y,z"`), `fov` (derived: `zoom * 60`) | -### Other +### Other / Props | Creator type | `resourcename` | `type` field | Custom args | |---|---|---|---| | `Text` | `Text` | `pre-defined` | `text`, `color`, `fontSize`, `fontWeight` | -| `Whiteboard` | _(not implemented in save)_ | `pre-defined` | _(none)_ | -| `Custom` | _(the asset filename)_ | `user-defined` | `file` | +| `Whiteboard` | `WhiteboardWall` | `pre-defined` | _(none — not serialized by Creator)_ | +| `Custom` | _(asset filename)_ | `user-defined` | `file`, `color`, `material` | + +#### `material` values (Custom, Speaker) + +| Value | Shader | +|---|---| +| `0` | Metallic | +| `1` | Unlit | +| `2` | Specular | +| `3` | FakeEmission | ### Common optional arg (all types) @@ -142,3 +152,21 @@ All values are serialized as strings. "item-custom-args-adv": null } ``` + +## Example — Custom (user-uploaded GLB) + +```json +{ + "position": { "x": -4.0, "y": 1.0, "z": 0.0 }, + "rotation": { "x": 0.0, "y": 0.0, "z": 0.0 }, + "scale": { "x": 1.0, "y": 1.0, "z": 1.0 }, + "type": "user-defined", + "resourcename": "b83a17ab-92bf-4122-a4d0-7b467a105ae0/podest.glb", + "item-custom-args": [ + { "argument": "file", "value": "b83a17ab-92bf-4122-a4d0-7b467a105ae0/podest.glb" }, + { "argument": "color", "value": "#ffffff" }, + { "argument": "material", "value": "0" } + ], + "item-custom-args-adv": null +} +```