diff --git a/objects/Billboard.md b/objects/Billboard.md new file mode 100644 index 0000000..ecb4955 --- /dev/null +++ b/objects/Billboard.md @@ -0,0 +1,35 @@ +# Billboard + +### Type +pre-defined + +### 3D +The Billboard is a 4m x 2,25m opaque Plane. +Its Origin is at the Bottom-Center. +Spawnpoint should be {0,1,0} so its 1m above the floor. + +### Custom Args: +| Key | Type | Implemented | Description | +|---|---|---|---| +| url | string | ✔️ | Storage path within `user_files` bucket (e.g. `uuid/image.png`). A signed URL is generated at runtime. | +| grabable | `"true"` / `"false"` | ⚠️ (Unity missing) | Whether the item can be grabbed in-experience (common to all types) | + +### Special Notes: +The Creator handles image uploads and assigns the storage path to `url`. +The `url` value is a Supabase storage path, **not** a full URL — the runtime calls `CreateSignedUrl` to fetch the actual image. + +### Example: + +```json +{ + "position": { "x": 5, "y": 1, "z": -6 }, + "rotation": { "x": 0.0, "y": 0.0, "z": 0.0 }, + "scale": { "x": 1.0, "y": 1.0, "z": 1.0 }, + "type": "pre-defined", + "resourcename": "Billboard", + "item-custom-args": [ + { "argument": "url", "value": "b83a17ab-92bf-4122-a4d0-7b467a105ae0/Screenshot_Loading.png" } + ], + "item-custom-args-adv": null +} +``` diff --git a/objects/CCTVCamera.md b/objects/CCTVCamera.md new file mode 100644 index 0000000..abcf783 --- /dev/null +++ b/objects/CCTVCamera.md @@ -0,0 +1,37 @@ +# CCTVCamera + +### Type +pre-defined + +### 3D +The CCTV Camera is a small, dark gray box. +Origin is at the Center. +Spawnpoint should be {0,3,0} and its target set so it already points slightly down. + +### Custom Args: +| Key | Type | Implemented | Description | +|---|---|---|---| +| target | string `"x,y,z"` | ⚠️ (Unity only reads rotation) | World-space look-at point. Could be a moveable object in the future.| +| fov | float (degrees) | ✔️ | Camera field of view in degrees. Derived in Creator as `zoom * 60`. | +| grabable | `"true"` / `"false"` | ⚠️ (Unity missing) | Whether the item can be grabbed in-experience (common to all types) | + +### Special Notes: +The `target` arg is documented in the database but the `CCTVCameraBehaviour` switch statement does not handle it — the camera's look direction is controlled by the object's `rotation` in the scene. +In the Creator, `fov = zoom * 60` where zoom is 1–10. + +### Example: + +```json +{ + "position": { "x": 0.0, "y": 3.0, "z": 5.0 }, + "rotation": { "x": 30.0, "y": 0.0, "z": 0.0 }, + "scale": { "x": 1.0, "y": 1.0, "z": 1.0 }, + "type": "pre-defined", + "resourcename": "CCTVCamera", + "item-custom-args": [ + { "argument": "target", "value": "0,0,6" }, + { "argument": "fov", "value": "140" } + ], + "item-custom-args-adv": null +} +``` diff --git a/objects/Cone.md b/objects/Cone.md new file mode 100644 index 0000000..f0b26c0 --- /dev/null +++ b/objects/Cone.md @@ -0,0 +1,35 @@ +# Cone + +### Type +pre-defined + +### 3D +The Cone is 1m high with a 0.5m base radius (from Cone.glb mesh). +Its Origin is at the Geometric Center. +Cone is pointing upwards. +Spawnpoint should be {0,0.5,0} so the base rests on the floor. + +### Custom Args: +| Key | Type | Implemented | Description | +|---|---|---|---| +| color | hexColor | ✔️ | Color of the cone material | +| grabable | `"true"` / `"false"` | ⚠️ (Unity missing) | Whether the item can be grabbed in-experience (common to all types) | + +### Special Notes: +_none_ + +### Example: + +```json +{ + "position": { "x": 4.0, "y": 0.5, "z": 0.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": "Cone", + "item-custom-args": [ + { "argument": "color", "value": "#ff9900" } + ], + "item-custom-args-adv": null +} +``` diff --git a/objects/DirectionalLight.md b/objects/DirectionalLight.md new file mode 100644 index 0000000..557fcbc --- /dev/null +++ b/objects/DirectionalLight.md @@ -0,0 +1,38 @@ +# Directional Light + +### Type +pre-defined + +### 3D +No visible mesh. Represents a scene-wide directional light source (like the sun). +The `target` arg defines the direction the light points toward. +Default spawn height is y=5. + +### Custom Args: +| Key | Type | Implemented | Description | +|---|---|---|---| +| color | hexColor | ⚠️ (Creator tbd) | Color of the light | +| intensity | float | ⚠️ **See note below.** | Light intensity (default tbd). | +| target | string `"x,y,z"` | ⚠️ (Unity only reads rotation) | World-space look-at point the light aims at | +| grabable | `"true"` / `"false"` | ⚠️ | Whether the item can be grabbed in-experience (common to all types) | + +### Special Notes: +**Key name discrepancy:** The database save format uses `intensity` as the argument key, but `LightManupulationBehaviour.cs` reads `brightness`. Light intensity args may not apply at runtime unless this is resolved. + +### Example: + +```json +{ + "position": { "x": 0.0, "y": 5.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": "pre-defined", + "resourcename": "Directional Light", + "item-custom-args": [ + { "argument": "color", "value": "#ffffff" }, + { "argument": "intensity", "value": "20" }, + { "argument": "target", "value": "0,0,0" } + ], + "item-custom-args-adv": null +} +``` diff --git a/objects/Entrance.md b/objects/Entrance.md new file mode 100644 index 0000000..9308556 --- /dev/null +++ b/objects/Entrance.md @@ -0,0 +1,31 @@ +# Entrance + +### Type +pre-defined + +### 3D +An (invisible) Object marking where the player spawns when entering the Room. In the creator is marked with a small disk. + +Default spawn is at y=0.1 to prevent players falling through the floor. + +### Custom Args: +| Key | Type | Implemented | Description | +|---|---|---|---| +| grabable | `"true"` / `"false"` | ⚠️ | Whether the item can be grabbed in-experience (common to all types) | + +### Special Notes: +_none_ + +### Example: + +```json +{ + "position": { "x": 0.0, "y": 0.1, "z": 0.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": "Entrance", + "item-custom-args": [], + "item-custom-args-adv": null +} +``` diff --git a/objects/Floor.md b/objects/Floor.md new file mode 100644 index 0000000..17b492e --- /dev/null +++ b/objects/Floor.md @@ -0,0 +1,36 @@ +# Floor + +### Type +pre-defined + +### 3D +The Floor is a flat plane. Default dimensions are 10m × 10m. +Its Origin is at the Center (surface level). +Spawnpoint should be {0,0,0}. + +### Custom Args: +| Key | Type | Implemented | Description | +|---|---|---|---| +| color | hexColor | ✔️ | Color of the floor material | +| opacity | float (0–1) | ⚠️ (not in Unity) | Transparency of the floor material | +| grabable | `"true"` / `"false"` | ⚠️ | Whether the item can be grabbed in-experience (common to all types) | + +### Special Notes: +The Floor uses `Plane` as its `resourcename`. The Creator type is `Floor`. +Has a collider and is a "Teleportation Area". + +### Example: + +```json +{ + "position": { "x": 0.0, "y": 0.0, "z": 0.0 }, + "rotation": { "x": 0.0, "y": 0.0, "z": 0.0 }, + "scale": { "x": 10, "y": 1, "z": 5.0 }, + "type": "pre-defined", + "resourcename": "Plane", + "item-custom-args": [ + { "argument": "color", "value": "#cccccc" } + ], + "item-custom-args-adv": null +} +```