diff --git a/packages/frontend/assets/room/objects/wood-ring-floor-lamp/wood-ring-floor-lamp.blend b/packages/frontend/assets/room/objects/wood-ring-floor-lamp/wood-ring-floor-lamp.blend index 15897023da..7ef3d69aed 100644 Binary files a/packages/frontend/assets/room/objects/wood-ring-floor-lamp/wood-ring-floor-lamp.blend and b/packages/frontend/assets/room/objects/wood-ring-floor-lamp/wood-ring-floor-lamp.blend differ diff --git a/packages/frontend/assets/room/objects/wood-ring-floor-lamp/wood-ring-floor-lamp.glb b/packages/frontend/assets/room/objects/wood-ring-floor-lamp/wood-ring-floor-lamp.glb index be52b8969a..1ff4541b72 100644 Binary files a/packages/frontend/assets/room/objects/wood-ring-floor-lamp/wood-ring-floor-lamp.glb and b/packages/frontend/assets/room/objects/wood-ring-floor-lamp/wood-ring-floor-lamp.glb differ diff --git a/packages/frontend/src/utility/room/objects/woodRingFloorLamp.ts b/packages/frontend/src/utility/room/objects/woodRingFloorLamp.ts index b7766590ef..d90aea8a0a 100644 --- a/packages/frontend/src/utility/room/objects/woodRingFloorLamp.ts +++ b/packages/frontend/src/utility/room/objects/woodRingFloorLamp.ts @@ -3,18 +3,53 @@ * SPDX-License-Identifier: AGPL-3.0-only */ +import * as BABYLON from '@babylonjs/core'; import { defineObject } from '../engine.js'; export const woodRingFloorLamp = defineObject({ id: 'woodRingFloorLamp', name: 'Wood Ring Floor Lamp', options: { - schema: {}, - default: {}, + schema: { + shadeColor: { + type: 'color', + label: 'Shade color', + }, + bodyColor: { + type: 'color', + label: 'Body color', + }, + }, + default: { + shadeColor: [0.21, 0.04, 0], + bodyColor: [0.05, 0.05, 0.05], + }, }, placement: 'floor', - createInstance: () => { + createInstance: ({ options, findMaterial }) => { + const shadeMaterial = findMaterial('__X_SHADE__'); + + const applyShadeColor = () => { + const [r, g, b] = options.shadeColor; + shadeMaterial.albedoColor = new BABYLON.Color3(r, g, b); + }; + + applyShadeColor(); + + const bodyMaterial = findMaterial('__X_BODY__'); + + const applyBodyColor = () => { + const [r, g, b] = options.bodyColor; + bodyMaterial.albedoColor = new BABYLON.Color3(r, g, b); + }; + + applyBodyColor(); + return { + onOptionsUpdated: ([k, v]) => { + applyShadeColor(); + applyBodyColor(); + }, interactions: {}, }; },