mirror of
https://github.com/misskey-dev/misskey.git
synced 2026-05-23 12:14:12 +02:00
wip
This commit is contained in:
BIN
packages/frontend/assets/room/objects/mixer/body.af
Normal file
BIN
packages/frontend/assets/room/objects/mixer/body.af
Normal file
Binary file not shown.
BIN
packages/frontend/assets/room/objects/mixer/mixer.blend
Normal file
BIN
packages/frontend/assets/room/objects/mixer/mixer.blend
Normal file
Binary file not shown.
BIN
packages/frontend/assets/room/objects/mixer/mixer.glb
Normal file
BIN
packages/frontend/assets/room/objects/mixer/mixer.glb
Normal file
Binary file not shown.
BIN
packages/frontend/assets/room/objects/mixer/textures/body.png
Normal file
BIN
packages/frontend/assets/room/objects/mixer/textures/body.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 40 KiB |
BIN
packages/frontend/assets/room/objects/mixer/uv.png
Normal file
BIN
packages/frontend/assets/room/objects/mixer/uv.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
@@ -1102,19 +1102,29 @@ export class RoomEngine {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private createGhost(mesh: BABYLON.Mesh) {
|
private createGhost(mesh: BABYLON.Mesh): BABYLON.Mesh {
|
||||||
const ghost = mesh.clone('ghost', null, false)!;
|
const ghost = mesh.clone('ghost', null, false)!;
|
||||||
ghost.metadata = { isGhost: true };
|
ghost.metadata = { isGhost: true };
|
||||||
|
|
||||||
|
const materials = new WeakMap<BABYLON.Material, BABYLON.Material>();
|
||||||
|
|
||||||
for (const m of ghost.getChildMeshes()) {
|
for (const m of ghost.getChildMeshes()) {
|
||||||
m.metadata = { isGhost: true };
|
m.metadata = { isGhost: true };
|
||||||
if (m.material) {
|
|
||||||
const mat = m.material.clone(`${m.material.name}_ghost`);
|
|
||||||
mat.alpha = 0.3;
|
|
||||||
mat.transparencyMode = BABYLON.Material.MATERIAL_ALPHABLEND;
|
|
||||||
m.material = mat;
|
|
||||||
}
|
|
||||||
m.checkCollisions = false;
|
m.checkCollisions = false;
|
||||||
|
|
||||||
|
if (m.material) {
|
||||||
|
if (materials.has(m.material)) {
|
||||||
|
m.material = materials.get(m.material)!;
|
||||||
|
} else {
|
||||||
|
const mat = m.material.clone(`${m.material.name}_ghost`);
|
||||||
|
mat.alpha = 0.3;
|
||||||
|
mat.transparencyMode = BABYLON.Material.MATERIAL_ALPHABLEND;
|
||||||
|
materials.set(m.material, mat);
|
||||||
|
m.material = mat;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ghost;
|
return ghost;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import { keyboard } from './objects/keyboard.js';
|
|||||||
import { lavaLamp } from './objects/lavaLamp.js';
|
import { lavaLamp } from './objects/lavaLamp.js';
|
||||||
import { letterCase } from './objects/letterCase.js';
|
import { letterCase } from './objects/letterCase.js';
|
||||||
import { milk } from './objects/milk.js';
|
import { milk } from './objects/milk.js';
|
||||||
|
import { mixer } from './objects/mixer.js';
|
||||||
import { monitor } from './objects/monitor.js';
|
import { monitor } from './objects/monitor.js';
|
||||||
import { monstera } from './objects/monstera.js';
|
import { monstera } from './objects/monstera.js';
|
||||||
import { mug } from './objects/mug.js';
|
import { mug } from './objects/mug.js';
|
||||||
@@ -64,6 +65,7 @@ export const OBJECT_DEFS = [
|
|||||||
lavaLamp,
|
lavaLamp,
|
||||||
letterCase,
|
letterCase,
|
||||||
milk,
|
milk,
|
||||||
|
mixer,
|
||||||
monitor,
|
monitor,
|
||||||
monstera,
|
monstera,
|
||||||
mug,
|
mug,
|
||||||
|
|||||||
21
packages/frontend/src/utility/room/objects/mixer.ts
Normal file
21
packages/frontend/src/utility/room/objects/mixer.ts
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { defineObject } from '../engine.js';
|
||||||
|
|
||||||
|
export const mixer = defineObject({
|
||||||
|
id: 'mixer',
|
||||||
|
name: 'Mixer',
|
||||||
|
options: {
|
||||||
|
schema: {},
|
||||||
|
default: {},
|
||||||
|
},
|
||||||
|
placement: 'top',
|
||||||
|
createInstance: () => {
|
||||||
|
return {
|
||||||
|
interactions: {},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user