diff --git a/packages/frontend/assets/room/objects/beam-lamp/beam-lamp.blend b/packages/frontend/assets/room/objects/beam-lamp/beam-lamp.blend new file mode 100644 index 0000000000..26f9003522 Binary files /dev/null and b/packages/frontend/assets/room/objects/beam-lamp/beam-lamp.blend differ diff --git a/packages/frontend/assets/room/objects/beam-lamp/beam-lamp.glb b/packages/frontend/assets/room/objects/beam-lamp/beam-lamp.glb new file mode 100644 index 0000000000..12e29fa232 Binary files /dev/null and b/packages/frontend/assets/room/objects/beam-lamp/beam-lamp.glb differ diff --git a/packages/frontend/src/utility/room/object-defs.ts b/packages/frontend/src/utility/room/object-defs.ts index ebacc3f4f5..8782fad9cb 100644 --- a/packages/frontend/src/utility/room/object-defs.ts +++ b/packages/frontend/src/utility/room/object-defs.ts @@ -9,6 +9,7 @@ import { allInOnePc } from './objects/allInOnePc.js'; import { aquarium } from './objects/aquarium.js'; import { aromaReedDiffuser } from './objects/aromaReedDiffuser.js'; import { banknote } from './objects/banknote.js'; +import { beamLamp } from './objects/beamLamp.js'; import { bed } from './objects/bed.js'; import { blind } from './objects/blind.js'; import { book } from './objects/book.js'; @@ -62,6 +63,7 @@ export const OBJECT_DEFS = [ aquarium, aromaReedDiffuser, banknote, + beamLamp, bed, blind, book, diff --git a/packages/frontend/src/utility/room/objects/beamLamp.ts b/packages/frontend/src/utility/room/objects/beamLamp.ts new file mode 100644 index 0000000000..87df0ca584 --- /dev/null +++ b/packages/frontend/src/utility/room/objects/beamLamp.ts @@ -0,0 +1,29 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import * as BABYLON from '@babylonjs/core'; +import { defineObject } from '../engine.js'; + +export const beamLamp = defineObject({ + id: 'beamLamp', + name: 'Beam Lamp', + options: { + schema: {}, + default: {}, + }, + placement: 'top', + createInstance: ({ root, room }) => { + return { + onInited: () => { + const light = new BABYLON.PointLight('beamLampLight', new BABYLON.Vector3(0, 10/*cm*/, 0), room.scene); + light.parent = root; + light.diffuse = new BABYLON.Color3(1.0, 0.5, 0.2); + light.intensity = 300; + light.range = 100/*cm*/; + }, + interactions: {}, + }; + }, +});