mirror of
https://github.com/misskey-dev/misskey.git
synced 2026-05-15 23:15:47 +02:00
wip
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
// TODO: 近くのオブジェクトの端にスナップオプション
|
||||
// TODO: 近くのオブジェクトの原点に軸を揃えるオプション
|
||||
// TODO: glbを事前に最適化(なるべくメッシュをマージするなど)するツールもしくはMisskeyビルド時処理。ついでにカタログ用スクショも自動生成したい
|
||||
// TODO: テクスチャ置き換え時、元のテクスチャをちゃんとdispose
|
||||
|
||||
import * as BABYLON from '@babylonjs/core';
|
||||
import { AxesViewer } from '@babylonjs/core/Debug/axesViewer';
|
||||
@@ -453,6 +454,7 @@ export class RoomEngine extends EventEmitter<RoomEngineEvents> {
|
||||
}).then(() => {
|
||||
loadedCount++;
|
||||
this.emit('loadingProgress', { progress: loadedCount / objects.length });
|
||||
console.log(`Loaded object ${o.id} (${o.type})`);
|
||||
})));
|
||||
|
||||
// 不具合のもと
|
||||
|
||||
@@ -85,25 +85,20 @@ export const allInOnePc = defineObject({
|
||||
applyFit();
|
||||
|
||||
const applyCustomPicture = () => new Promise<void>((resolve) => {
|
||||
// テクスチャの読み込みに失敗したときの救済
|
||||
// TODO: 丁寧な実装に直す
|
||||
setTimeout(() => {
|
||||
resolve();
|
||||
}, 10000);
|
||||
|
||||
if (options.customPicture != null) {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false);
|
||||
tex.wrapU = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.wrapV = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.level = 0.5;
|
||||
|
||||
screenMaterial.unfreeze();
|
||||
screenMaterial.emissiveTexture = tex;
|
||||
|
||||
tex.onLoadObservable.addOnce(() => {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false, undefined, () => {
|
||||
screenMaterial.emissiveColor = new BABYLON.Color3(1, 1, 1);
|
||||
screenMaterial.emissiveTexture = tex;
|
||||
applyFit();
|
||||
resolve();
|
||||
}, (message, exception) => {
|
||||
console.warn('Failed to load texture:', message, exception);
|
||||
screenMaterial.emissiveColor = new BABYLON.Color3(0, 1, 0);
|
||||
screenMaterial.emissiveTexture = null;
|
||||
resolve();
|
||||
});
|
||||
tex.level = 0.5;
|
||||
} else {
|
||||
screenMaterial.emissiveTexture = null;
|
||||
resolve();
|
||||
|
||||
@@ -61,25 +61,20 @@ export const djPlayer = defineObject({
|
||||
applyFit();
|
||||
|
||||
const applyCustomPicture = () => new Promise<void>((resolve) => {
|
||||
// テクスチャの読み込みに失敗したときの救済
|
||||
// TODO: 丁寧な実装に直す
|
||||
setTimeout(() => {
|
||||
resolve();
|
||||
}, 10000);
|
||||
|
||||
if (options.customPicture != null && options.customPicture !== '') {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false);
|
||||
tex.wrapU = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.wrapV = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.level = 0.5;
|
||||
|
||||
screenMaterial.unfreeze();
|
||||
screenMaterial.emissiveTexture = tex;
|
||||
|
||||
tex.onLoadObservable.addOnce(() => {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false, undefined, () => {
|
||||
screenMaterial.emissiveColor = new BABYLON.Color3(1, 1, 1);
|
||||
screenMaterial.emissiveTexture = tex;
|
||||
applyFit();
|
||||
resolve();
|
||||
}, (message, exception) => {
|
||||
console.warn('Failed to load texture:', message, exception);
|
||||
screenMaterial.emissiveColor = new BABYLON.Color3(0, 1, 0);
|
||||
screenMaterial.emissiveTexture = null;
|
||||
resolve();
|
||||
});
|
||||
tex.level = 0.5;
|
||||
} else {
|
||||
screenMaterial.emissiveTexture = defaultScreenTexture;
|
||||
applyFit();
|
||||
|
||||
@@ -95,25 +95,20 @@ export const laptopPc = defineObject({
|
||||
applyFit();
|
||||
|
||||
const applyCustomPicture = () => new Promise<void>((resolve) => {
|
||||
// テクスチャの読み込みに失敗したときの救済
|
||||
// TODO: 丁寧な実装に直す
|
||||
setTimeout(() => {
|
||||
resolve();
|
||||
}, 10000);
|
||||
|
||||
if (options.customPicture != null) {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false);
|
||||
tex.wrapU = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.wrapV = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.level = 0.5;
|
||||
|
||||
screenMaterial.unfreeze();
|
||||
screenMaterial.emissiveTexture = tex;
|
||||
|
||||
tex.onLoadObservable.addOnce(() => {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false, undefined, () => {
|
||||
screenMaterial.emissiveColor = new BABYLON.Color3(1, 1, 1);
|
||||
screenMaterial.emissiveTexture = tex;
|
||||
applyFit();
|
||||
resolve();
|
||||
}, (message, exception) => {
|
||||
console.warn('Failed to load texture:', message, exception);
|
||||
screenMaterial.emissiveColor = new BABYLON.Color3(0, 1, 0);
|
||||
screenMaterial.emissiveTexture = null;
|
||||
resolve();
|
||||
});
|
||||
tex.level = 0.5;
|
||||
} else {
|
||||
screenMaterial.emissiveTexture = null;
|
||||
resolve();
|
||||
|
||||
@@ -161,25 +161,21 @@ export const pictureFrame = defineObject({
|
||||
applyDepth();
|
||||
|
||||
const applyCustomPicture = () => new Promise<void>((resolve) => {
|
||||
// テクスチャの読み込みに失敗したときの救済
|
||||
// TODO: 丁寧な実装に直す
|
||||
setTimeout(() => {
|
||||
resolve();
|
||||
}, 10000);
|
||||
|
||||
if (options.customPicture != null) {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false);
|
||||
tex.wrapU = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.wrapV = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
|
||||
pictureMaterial.unfreeze();
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(1, 1, 1);
|
||||
pictureMaterial.albedoTexture = tex;
|
||||
|
||||
tex.onLoadObservable.addOnce(() => {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false, undefined, () => {
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(1, 1, 1);
|
||||
pictureMaterial.albedoTexture = tex;
|
||||
applyFit();
|
||||
resolve();
|
||||
}, (message, exception) => {
|
||||
console.warn('Failed to load texture:', message, exception);
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(0, 1, 0);
|
||||
pictureMaterial.albedoTexture = null;
|
||||
resolve();
|
||||
});
|
||||
tex.wrapU = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.wrapV = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
} else {
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(0.5, 0.5, 0.5);
|
||||
pictureMaterial.albedoTexture = null;
|
||||
|
||||
@@ -93,25 +93,21 @@ export const poster = defineObject({
|
||||
applySize();
|
||||
|
||||
const applyCustomPicture = () => new Promise<void>((resolve) => {
|
||||
// テクスチャの読み込みに失敗したときの救済
|
||||
// TODO: 丁寧な実装に直す
|
||||
setTimeout(() => {
|
||||
resolve();
|
||||
}, 10000);
|
||||
|
||||
if (options.customPicture != null) {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false);
|
||||
tex.wrapU = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.wrapV = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
|
||||
pictureMaterial.unfreeze();
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(1, 1, 1);
|
||||
pictureMaterial.albedoTexture = tex;
|
||||
|
||||
tex.onLoadObservable.addOnce(() => {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false, undefined, () => {
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(1, 1, 1);
|
||||
pictureMaterial.albedoTexture = tex;
|
||||
applyFit();
|
||||
resolve();
|
||||
}, (message, exception) => {
|
||||
console.warn('Failed to load texture:', message, exception);
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(0, 1, 0);
|
||||
pictureMaterial.albedoTexture = null;
|
||||
resolve();
|
||||
});
|
||||
tex.wrapU = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.wrapV = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
} else {
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(0.5, 0.5, 0.5);
|
||||
pictureMaterial.albedoTexture = null;
|
||||
|
||||
@@ -52,25 +52,21 @@ export const tabletopFlag = defineObject({
|
||||
applyFit();
|
||||
|
||||
const applyCustomPicture = () => new Promise<void>((resolve) => {
|
||||
// テクスチャの読み込みに失敗したときの救済
|
||||
// TODO: 丁寧な実装に直す
|
||||
setTimeout(() => {
|
||||
resolve();
|
||||
}, 10000);
|
||||
|
||||
if (options.customPicture != null) {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false);
|
||||
tex.wrapU = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.wrapV = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
|
||||
flagMaterial.unfreeze();
|
||||
flagMaterial.albedoColor = new BABYLON.Color3(1, 1, 1);
|
||||
flagMaterial.albedoTexture = tex;
|
||||
|
||||
tex.onLoadObservable.addOnce(() => {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false, undefined, () => {
|
||||
flagMaterial.albedoColor = new BABYLON.Color3(1, 1, 1);
|
||||
flagMaterial.albedoTexture = tex;
|
||||
applyFit();
|
||||
resolve();
|
||||
}, (message, exception) => {
|
||||
console.warn('Failed to load texture:', message, exception);
|
||||
flagMaterial.albedoColor = new BABYLON.Color3(0, 1, 0);
|
||||
flagMaterial.albedoTexture = null;
|
||||
resolve();
|
||||
});
|
||||
tex.wrapU = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.wrapV = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
} else {
|
||||
flagMaterial.albedoColor = new BABYLON.Color3(0.5, 0.5, 0.5);
|
||||
flagMaterial.albedoTexture = null;
|
||||
|
||||
@@ -93,25 +93,21 @@ export const tabletopGlassPictureFrame = defineObject({
|
||||
applySize();
|
||||
|
||||
const applyCustomPicture = () => new Promise<void>((resolve) => {
|
||||
// テクスチャの読み込みに失敗したときの救済
|
||||
// TODO: 丁寧な実装に直す
|
||||
setTimeout(() => {
|
||||
resolve();
|
||||
}, 10000);
|
||||
|
||||
if (options.customPicture != null) {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false);
|
||||
tex.wrapU = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.wrapV = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
|
||||
pictureMaterial.unfreeze();
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(1, 1, 1);
|
||||
pictureMaterial.albedoTexture = tex;
|
||||
|
||||
tex.onLoadObservable.addOnce(() => {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false, undefined, () => {
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(1, 1, 1);
|
||||
pictureMaterial.albedoTexture = tex;
|
||||
applyFit();
|
||||
resolve();
|
||||
}, (message, exception) => {
|
||||
console.warn('Failed to load texture:', message, exception);
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(0, 1, 0);
|
||||
pictureMaterial.albedoTexture = null;
|
||||
resolve();
|
||||
});
|
||||
tex.wrapU = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.wrapV = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
} else {
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(0.5, 0.5, 0.5);
|
||||
pictureMaterial.albedoTexture = null;
|
||||
|
||||
@@ -74,26 +74,20 @@ export const tabletopLcdButtonsController = defineObject({
|
||||
applyFit();
|
||||
|
||||
const applyCustomPicture = () => new Promise<void>((resolve) => {
|
||||
// テクスチャの読み込みに失敗したときの救済
|
||||
// TODO: 丁寧な実装に直す
|
||||
setTimeout(() => {
|
||||
resolve();
|
||||
}, 10000);
|
||||
|
||||
if (options.customPicture != null && options.customPicture !== '') {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false);
|
||||
tex.wrapU = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.wrapV = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.level = 0.5;
|
||||
|
||||
screenMaterial.unfreeze();
|
||||
screenMaterial.emissiveTexture = tex;
|
||||
screenMaterial.emissiveTexture.level = 2;
|
||||
|
||||
tex.onLoadObservable.addOnce(() => {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false, undefined, () => {
|
||||
screenMaterial.emissiveTexture = tex;
|
||||
screenMaterial.emissiveTexture.level = 2;
|
||||
applyFit();
|
||||
resolve();
|
||||
}, (message, exception) => {
|
||||
console.warn('Failed to load texture:', message, exception);
|
||||
screenMaterial.emissiveColor = new BABYLON.Color3(0, 1, 0);
|
||||
screenMaterial.emissiveTexture = null;
|
||||
resolve();
|
||||
});
|
||||
tex.level = 0.5;
|
||||
} else {
|
||||
screenMaterial.emissiveTexture = defaultScreenTexture;
|
||||
screenMaterial.emissiveTexture.level = 2;
|
||||
|
||||
@@ -166,25 +166,21 @@ export const tabletopPictureFrame = defineObject({
|
||||
applyDepth();
|
||||
|
||||
const applyCustomPicture = () => new Promise<void>((resolve) => {
|
||||
// テクスチャの読み込みに失敗したときの救済
|
||||
// TODO: 丁寧な実装に直す
|
||||
setTimeout(() => {
|
||||
resolve();
|
||||
}, 10000);
|
||||
|
||||
if (options.customPicture != null) {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false);
|
||||
tex.wrapU = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.wrapV = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
|
||||
pictureMaterial.unfreeze();
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(1, 1, 1);
|
||||
pictureMaterial.albedoTexture = tex;
|
||||
|
||||
tex.onLoadObservable.addOnce(() => {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false, undefined, () => {
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(1, 1, 1);
|
||||
pictureMaterial.albedoTexture = tex;
|
||||
applyFit();
|
||||
resolve();
|
||||
}, (message, exception) => {
|
||||
console.warn('Failed to load texture:', message, exception);
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(0, 1, 0);
|
||||
pictureMaterial.albedoTexture = null;
|
||||
resolve();
|
||||
});
|
||||
tex.wrapU = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.wrapV = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
} else {
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(0.5, 0.5, 0.5);
|
||||
pictureMaterial.albedoTexture = null;
|
||||
|
||||
@@ -97,25 +97,21 @@ export const tapestry = defineObject({
|
||||
applySize();
|
||||
|
||||
const applyCustomPicture = () => new Promise<void>((resolve) => {
|
||||
// テクスチャの読み込みに失敗したときの救済
|
||||
// TODO: 丁寧な実装に直す
|
||||
setTimeout(() => {
|
||||
resolve();
|
||||
}, 10000);
|
||||
|
||||
if (options.customPicture != null) {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false);
|
||||
tex.wrapU = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.wrapV = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
|
||||
pictureMaterial.unfreeze();
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(1, 1, 1);
|
||||
pictureMaterial.albedoTexture = tex;
|
||||
|
||||
tex.onLoadObservable.addOnce(() => {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false, undefined, () => {
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(1, 1, 1);
|
||||
pictureMaterial.albedoTexture = tex;
|
||||
applyFit();
|
||||
resolve();
|
||||
}, (message, exception) => {
|
||||
console.warn('Failed to load texture:', message, exception);
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(0, 1, 0);
|
||||
pictureMaterial.albedoTexture = null;
|
||||
resolve();
|
||||
});
|
||||
tex.wrapU = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.wrapV = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
} else {
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(0.5, 0.5, 0.5);
|
||||
pictureMaterial.albedoTexture = null;
|
||||
|
||||
@@ -83,25 +83,21 @@ export const wallCanvas = defineObject({
|
||||
applySize();
|
||||
|
||||
const applyCustomPicture = () => new Promise<void>((resolve) => {
|
||||
// テクスチャの読み込みに失敗したときの救済
|
||||
// TODO: 丁寧な実装に直す
|
||||
setTimeout(() => {
|
||||
resolve();
|
||||
}, 10000);
|
||||
|
||||
if (options.customPicture != null) {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false);
|
||||
tex.wrapU = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.wrapV = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
|
||||
canvasMaterial.unfreeze();
|
||||
canvasMaterial.albedoColor = new BABYLON.Color3(1, 1, 1);
|
||||
canvasMaterial.albedoTexture = tex;
|
||||
|
||||
tex.onLoadObservable.addOnce(() => {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false, undefined, () => {
|
||||
canvasMaterial.albedoColor = new BABYLON.Color3(1, 1, 1);
|
||||
canvasMaterial.albedoTexture = tex;
|
||||
applyFit();
|
||||
resolve();
|
||||
}, (message, exception) => {
|
||||
console.warn('Failed to load texture:', message, exception);
|
||||
canvasMaterial.albedoColor = new BABYLON.Color3(0, 1, 0);
|
||||
canvasMaterial.albedoTexture = null;
|
||||
resolve();
|
||||
});
|
||||
tex.wrapU = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.wrapV = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
} else {
|
||||
canvasMaterial.albedoColor = new BABYLON.Color3(0.5, 0.5, 0.5);
|
||||
canvasMaterial.albedoTexture = null;
|
||||
|
||||
@@ -93,25 +93,21 @@ export const wallGlassPictureFrame = defineObject({
|
||||
applySize();
|
||||
|
||||
const applyCustomPicture = () => new Promise<void>((resolve) => {
|
||||
// テクスチャの読み込みに失敗したときの救済
|
||||
// TODO: 丁寧な実装に直す
|
||||
setTimeout(() => {
|
||||
resolve();
|
||||
}, 10000);
|
||||
|
||||
if (options.customPicture != null) {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false);
|
||||
tex.wrapU = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.wrapV = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
|
||||
pictureMaterial.unfreeze();
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(1, 1, 1);
|
||||
pictureMaterial.albedoTexture = tex;
|
||||
|
||||
tex.onLoadObservable.addOnce(() => {
|
||||
const tex = new BABYLON.Texture(options.customPicture, scene, false, false, undefined, () => {
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(1, 1, 1);
|
||||
pictureMaterial.albedoTexture = tex;
|
||||
applyFit();
|
||||
resolve();
|
||||
}, (message, exception) => {
|
||||
console.warn('Failed to load texture:', message, exception);
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(0, 1, 0);
|
||||
pictureMaterial.albedoTexture = null;
|
||||
resolve();
|
||||
});
|
||||
tex.wrapU = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
tex.wrapV = BABYLON.Texture.MIRROR_ADDRESSMODE;
|
||||
} else {
|
||||
pictureMaterial.albedoColor = new BABYLON.Color3(0.5, 0.5, 0.5);
|
||||
pictureMaterial.albedoTexture = null;
|
||||
|
||||
Reference in New Issue
Block a user