diff --git a/packages/frontend/assets/room/objects/bed/bed.blend b/packages/frontend/assets/room/objects/bed/bed.blend index 0a8467cf7f..70b6792228 100644 Binary files a/packages/frontend/assets/room/objects/bed/bed.blend and b/packages/frontend/assets/room/objects/bed/bed.blend differ diff --git a/packages/frontend/assets/room/objects/bed/bed.glb b/packages/frontend/assets/room/objects/bed/bed.glb index 1fde629333..b540e27be7 100644 Binary files a/packages/frontend/assets/room/objects/bed/bed.glb and b/packages/frontend/assets/room/objects/bed/bed.glb differ diff --git a/packages/frontend/assets/room/objects/bed/textures/wood-normal.png b/packages/frontend/assets/room/objects/bed/textures/wood-normal.png new file mode 100644 index 0000000000..4162783675 Binary files /dev/null and b/packages/frontend/assets/room/objects/bed/textures/wood-normal.png differ diff --git a/packages/frontend/assets/room/objects/bed/textures/wood.png b/packages/frontend/assets/room/objects/bed/textures/wood.png new file mode 100644 index 0000000000..dabbf38c15 Binary files /dev/null and b/packages/frontend/assets/room/objects/bed/textures/wood.png differ diff --git a/packages/frontend/assets/room/objects/color-box/color-box.blend b/packages/frontend/assets/room/objects/color-box/color-box.blend index baea82ed88..14452a1458 100644 Binary files a/packages/frontend/assets/room/objects/color-box/color-box.blend and b/packages/frontend/assets/room/objects/color-box/color-box.blend differ diff --git a/packages/frontend/src/utility/room/objects/bed.ts b/packages/frontend/src/utility/room/objects/bed.ts index 2c62444823..3c24af1fa2 100644 --- a/packages/frontend/src/utility/room/objects/bed.ts +++ b/packages/frontend/src/utility/room/objects/bed.ts @@ -3,18 +3,39 @@ * SPDX-License-Identifier: AGPL-3.0-only */ +import * as BABYLON from '@babylonjs/core'; import { defineObject } from '../engine.js'; export const bed = defineObject({ id: 'bed', name: 'Bed', options: { - schema: {}, - default: {}, + schema: { + color: { + type: 'color', + label: 'Color', + }, + }, + default: { + color: [0.2, 0.1, 0.02], + }, }, placement: 'floor', - createInstance: () => { + createInstance: ({ options, root }) => { + const bodyMesh = root.getChildMeshes().find(m => m.name.includes('__X_BODY__')) as BABYLON.Mesh; + const bodyMaterial = bodyMesh.material as BABYLON.PBRMaterial; + + const applyColor = () => { + const [r, g, b] = options.color; + bodyMaterial.albedoColor = new BABYLON.Color3(r, g, b); + }; + + applyColor(); + return { + onOptionsUpdated: ([k, v]) => { + applyColor(); + }, interactions: {}, }; },