1
0
mirror of https://github.com/misskey-dev/misskey.git synced 2026-05-13 14:05:35 +02:00
This commit is contained in:
syuilo
2026-03-27 14:46:53 +09:00
parent de53f475c5
commit c677dd6566
4 changed files with 71 additions and 67 deletions

View File

@@ -17,10 +17,10 @@
},
"dependencies": {
"@analytics/google-analytics": "1.1.0",
"@babylonjs/core": "8.50.0",
"@babylonjs/loaders": "8.50.0",
"@babylonjs/materials": "8.50.0",
"@babylonjs/inspector": "8.50.0",
"@babylonjs/core": "9.0.0",
"@babylonjs/loaders": "9.0.0",
"@babylonjs/materials": "9.0.0",
"@babylonjs/inspector": "9.0.0",
"@discordapp/twemoji": "16.0.1",
"@github/webauthn-json": "2.1.1",
"@mcaptcha/core-glue": "0.1.0-alpha-5",

View File

@@ -265,6 +265,7 @@ export class RoomEngine {
private xGridPreviewPlane: BABYLON.Mesh;
private yGridPreviewPlane: BABYLON.Mesh;
private zGridPreviewPlane: BABYLON.Mesh;
private selectionOutlineLayer: BABYLON.SelectionOutlineLayer;
public isEditMode = ref(false);
public isSitting = ref(false);
public ui = reactive({
@@ -483,6 +484,8 @@ export class RoomEngine {
this.zGridPreviewPlane.isPickable = false;
this.zGridPreviewPlane.isVisible = false;
this.selectionOutlineLayer = new BABYLON.SelectionOutlineLayer('outliner', this.scene);
watch(this.isEditMode, (v) => {
if (v) {
for (const obji of this.objectInstances.values()) {
@@ -566,19 +569,14 @@ export class RoomEngine {
public selectObject(objectId: string | null) {
if (this.selected.value != null) {
const prevMesh = this.selected.value.objectMesh;
for (const om of prevMesh.getChildMeshes()) {
om.renderOutline = false;
}
this.selectionOutlineLayer.clearSelection();
this.selected.value = null;
}
if (objectId != null) {
const mesh = this.objectMeshs.get(objectId);
if (mesh != null) {
for (const om of mesh.getChildMeshes()) {
om.renderOutline = true;
}
this.selectionOutlineLayer.addSelection(mesh.getChildMeshes());
const state = this.roomState.installedObjects.find(o => o.id === objectId)!;
this.selected.value = {
objectId,
@@ -898,6 +896,11 @@ export class RoomEngine {
root.metadata = metadata;
const meshUpdated = (meshes: BABYLON.Mesh[]) => {
if (this.selected.value?.objectId === args.id) {
this.selectionOutlineLayer.clearSelection();
this.selectionOutlineLayer.addSelection(meshes);
}
for (const m of meshes) {
const mesh = m;
@@ -922,9 +925,6 @@ export class RoomEngine {
this.shadowGenerator2.addShadowCaster(mesh);
}
mesh.renderOutline = this.selected.value?.objectId === args.id;
mesh.outlineWidth = 0.003;
mesh.outlineColor = new BABYLON.Color3(1, 0, 0);
//if (mesh.material) (mesh.material as BABYLON.PBRMaterial).ambientColor = new BABYLON.Color3(0.2, 0.2, 0.2);
if (mesh.material) {
(mesh.material as BABYLON.PBRMaterial).reflectionTexture = this.enableReflectionProbe ? this.reflectionProbe.cubeTexture : this.envMapIndoor;
@@ -979,9 +979,7 @@ export class RoomEngine {
if (this.selected.value == null) return;
const selectedObject = this.selected.value.objectMesh;
for (const om of selectedObject.getChildMeshes()) {
om.renderOutline = false;
}
this.selectionOutlineLayer.clearSelection();
// 子から先に適用していく
const setStickyParentRecursively = (mesh: BABYLON.AbstractMesh) => {

105
pnpm-lock.yaml generated
View File

@@ -654,17 +654,17 @@ importers:
specifier: 1.1.0
version: 1.1.0
'@babylonjs/core':
specifier: 8.50.0
version: 8.50.0
specifier: 9.0.0
version: 9.0.0
'@babylonjs/inspector':
specifier: 8.50.0
version: 8.50.0(66fffef1d6e0a685889aaaec8e09a471)
specifier: 9.0.0
version: 9.0.0(9f8197eccccfecf8894cb1158583c2d5)
'@babylonjs/loaders':
specifier: 8.50.0
version: 8.50.0(@babylonjs/core@8.50.0)(babylonjs-gltf2interface@8.51.2)
specifier: 9.0.0
version: 9.0.0(@babylonjs/core@9.0.0)(babylonjs-gltf2interface@8.51.2)
'@babylonjs/materials':
specifier: 8.50.0
version: 8.50.0(@babylonjs/core@8.50.0)
specifier: 9.0.0
version: 9.0.0(@babylonjs/core@9.0.0)
'@discordapp/twemoji':
specifier: 16.0.1
version: 16.0.1
@@ -1878,8 +1878,8 @@ packages:
peerDependencies:
'@babylonjs/core': ^8.0.0
'@babylonjs/core@8.50.0':
resolution: {integrity: sha512-qC+0Ofbtf4KuCu+nnx5aUDDEp4zfGcTe9k+48QyDDcdDo5UDyxuAXkLqS2pNKGZymG7VTPqwjr7CVB5saIHbWQ==}
'@babylonjs/core@9.0.0':
resolution: {integrity: sha512-Y4xbHFUw28X4EC5C7NOSzPCOaenxZQgztCB1QZ64y0C85FjZaq5DfWd6gy+EUYklbigmcMIFzCpLj78Wc8EwVw==}
'@babylonjs/gui-editor@8.51.2':
resolution: {integrity: sha512-+kG9551b0iPK/BcPhdK3QUlaA+BJ9pt3LGiWkhyEMKYfZ0dJRjjmoFZuCAehlYU9sxEiWf1C/y96BrPt2QodIA==}
@@ -1894,33 +1894,33 @@ packages:
peerDependencies:
'@babylonjs/core': ^8.0.0
'@babylonjs/inspector@8.50.0':
resolution: {integrity: sha512-QdrGEomJzuwQ1c4vcxRwjBtlEybeDx/QnzPqW2XjAWaHFoDnw7DmdPY124oi4yf6li5D+YbBHa+On/4VOa90kw==}
'@babylonjs/inspector@9.0.0':
resolution: {integrity: sha512-xZvRP4LWehg66K2489Fc/63U/pE5qIhccdDLDcywAlhIIYBKJNksWO9zK9EdHzPINFItTDo+a30ldZE0JX5S+g==}
peerDependencies:
'@babylonjs/addons': ^8.0.0
'@babylonjs/core': ^8.0.0
'@babylonjs/gui': ^8.0.0
'@babylonjs/gui-editor': ^8.0.0
'@babylonjs/loaders': ^8.0.0
'@babylonjs/materials': ^8.0.0
'@babylonjs/serializers': ^8.0.0
'@fluentui-contrib/react-virtualizer': ^0.5.3
'@babylonjs/addons': ^9.0.0
'@babylonjs/core': ^9.0.0
'@babylonjs/gui': ^9.0.0
'@babylonjs/gui-editor': ^9.0.0
'@babylonjs/loaders': ^9.0.0
'@babylonjs/materials': ^9.0.0
'@babylonjs/serializers': ^9.0.0
'@fluentui-contrib/react-virtualizer': ^1.0.0
'@fluentui/react-components': ^9.70.0
'@fluentui/react-icons': ^2.0.310
react: '>=16.14.0 <20.0.0'
react-dom: '>=16.14.0 <20.0.0'
usehooks-ts: ^3.1.1
'@babylonjs/loaders@8.50.0':
resolution: {integrity: sha512-1LNUuMxxCFnWt1o/dDLnT1p1PwlN08LCvpUZOQM5Lxd49fXvycZluRFT2kqlJ1E96ctWr7EH7vrXdkPIsTM5jw==}
'@babylonjs/loaders@9.0.0':
resolution: {integrity: sha512-zK8Mh5DmYOj6QILV1ljaEwNqSIxwPLKxFD0U6U8c9x5RbjcMGC0X5KUT05FIVr8tcZI2XCJp6LOd00Xj2NXPIA==}
peerDependencies:
'@babylonjs/core': ^8.0.0
babylonjs-gltf2interface: ^8.0.0
'@babylonjs/core': ^9.0.0
babylonjs-gltf2interface: ^9.0.0
'@babylonjs/materials@8.50.0':
resolution: {integrity: sha512-ys/oixirgwPw6U52LITb20MagJZ9g3F/4J16jQ7utBq8hkxQkV0Ddk8Upc8SxAOLvGU/HFLTACOzFb50WxwBzg==}
'@babylonjs/materials@9.0.0':
resolution: {integrity: sha512-wATGzT/IQZ9/h9VhjgrZt8W59ZWXZ/mEZdCP2zHdopz3fqKP3gpJlbGt8UpAQUQF6XFKJrGuzVe7Vesrg36vyw==}
peerDependencies:
'@babylonjs/core': ^8.6.0
'@babylonjs/core': ^9.0.0
'@babylonjs/serializers@8.51.2':
resolution: {integrity: sha512-B6tUgCbRidDeI2pja6mA5OW4zBBOIHCPGUUp78G2fw0fs4czeAJpHZ0yQM8LBIBw6QWtymuw3hTfXekOpnaBWA==}
@@ -11436,6 +11436,9 @@ packages:
vue-component-type-helpers@3.2.5:
resolution: {integrity: sha512-tkvNr+bU8+xD/onAThIe7CHFvOJ/BO6XCOrxMzeytJq40nTfpGDJuVjyCM8ccGZKfAbGk2YfuZyDMXM56qheZQ==}
vue-component-type-helpers@3.2.6:
resolution: {integrity: sha512-O02tnvIfOQVmnvoWwuSydwRoHjZVt8UEBR+2p4rT35p8GAy5VTlWP8o5qXfJR/GWCN0nVZoYWsVUvx2jwgdBmQ==}
vue-demi@0.14.10:
resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==}
engines: {node: '>=12'}
@@ -12453,32 +12456,32 @@ snapshots:
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.28.5
'@babylonjs/addons@8.51.2(@babylonjs/core@8.50.0)':
'@babylonjs/addons@8.51.2(@babylonjs/core@9.0.0)':
dependencies:
'@babylonjs/core': 8.50.0
'@babylonjs/core': 9.0.0
'@babylonjs/core@8.50.0': {}
'@babylonjs/core@9.0.0': {}
'@babylonjs/gui-editor@8.51.2(@babylonjs/core@8.50.0)(@babylonjs/gui@8.51.2(@babylonjs/core@8.50.0))(@types/react-dom@19.2.3(@types/react@19.2.2))(@types/react@19.2.2)':
'@babylonjs/gui-editor@8.51.2(@babylonjs/core@9.0.0)(@babylonjs/gui@8.51.2(@babylonjs/core@9.0.0))(@types/react-dom@19.2.3(@types/react@19.2.2))(@types/react@19.2.2)':
dependencies:
'@babylonjs/core': 8.50.0
'@babylonjs/gui': 8.51.2(@babylonjs/core@8.50.0)
'@babylonjs/core': 9.0.0
'@babylonjs/gui': 8.51.2(@babylonjs/core@9.0.0)
'@types/react': 19.2.2
'@types/react-dom': 19.2.3(@types/react@19.2.2)
'@babylonjs/gui@8.51.2(@babylonjs/core@8.50.0)':
'@babylonjs/gui@8.51.2(@babylonjs/core@9.0.0)':
dependencies:
'@babylonjs/core': 8.50.0
'@babylonjs/core': 9.0.0
'@babylonjs/inspector@8.50.0(66fffef1d6e0a685889aaaec8e09a471)':
'@babylonjs/inspector@9.0.0(9f8197eccccfecf8894cb1158583c2d5)':
dependencies:
'@babylonjs/addons': 8.51.2(@babylonjs/core@8.50.0)
'@babylonjs/core': 8.50.0
'@babylonjs/gui': 8.51.2(@babylonjs/core@8.50.0)
'@babylonjs/gui-editor': 8.51.2(@babylonjs/core@8.50.0)(@babylonjs/gui@8.51.2(@babylonjs/core@8.50.0))(@types/react-dom@19.2.3(@types/react@19.2.2))(@types/react@19.2.2)
'@babylonjs/loaders': 8.50.0(@babylonjs/core@8.50.0)(babylonjs-gltf2interface@8.51.2)
'@babylonjs/materials': 8.50.0(@babylonjs/core@8.50.0)
'@babylonjs/serializers': 8.51.2(@babylonjs/core@8.50.0)(babylonjs-gltf2interface@8.51.2)
'@babylonjs/addons': 8.51.2(@babylonjs/core@9.0.0)
'@babylonjs/core': 9.0.0
'@babylonjs/gui': 8.51.2(@babylonjs/core@9.0.0)
'@babylonjs/gui-editor': 8.51.2(@babylonjs/core@9.0.0)(@babylonjs/gui@8.51.2(@babylonjs/core@9.0.0))(@types/react-dom@19.2.3(@types/react@19.2.2))(@types/react@19.2.2)
'@babylonjs/loaders': 9.0.0(@babylonjs/core@9.0.0)(babylonjs-gltf2interface@8.51.2)
'@babylonjs/materials': 9.0.0(@babylonjs/core@9.0.0)
'@babylonjs/serializers': 8.51.2(@babylonjs/core@9.0.0)(babylonjs-gltf2interface@8.51.2)
'@fluentui-contrib/react-virtualizer': 0.5.4(@fluentui/react-shared-contexts@9.26.1(@types/react@19.2.2)(react@19.2.4))(@types/react-dom@19.2.3(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@fluentui/react-components': 9.73.0(@types/react-dom@19.2.3(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)
'@fluentui/react-icons': 2.0.319(react@19.2.4)
@@ -12486,18 +12489,18 @@ snapshots:
react-dom: 19.2.4(react@19.2.4)
usehooks-ts: 3.1.1(react@19.2.4)
'@babylonjs/loaders@8.50.0(@babylonjs/core@8.50.0)(babylonjs-gltf2interface@8.51.2)':
'@babylonjs/loaders@9.0.0(@babylonjs/core@9.0.0)(babylonjs-gltf2interface@8.51.2)':
dependencies:
'@babylonjs/core': 8.50.0
'@babylonjs/core': 9.0.0
babylonjs-gltf2interface: 8.51.2
'@babylonjs/materials@8.50.0(@babylonjs/core@8.50.0)':
'@babylonjs/materials@9.0.0(@babylonjs/core@9.0.0)':
dependencies:
'@babylonjs/core': 8.50.0
'@babylonjs/core': 9.0.0
'@babylonjs/serializers@8.51.2(@babylonjs/core@8.50.0)(babylonjs-gltf2interface@8.51.2)':
'@babylonjs/serializers@8.51.2(@babylonjs/core@9.0.0)(babylonjs-gltf2interface@8.51.2)':
dependencies:
'@babylonjs/core': 8.50.0
'@babylonjs/core': 9.0.0
babylonjs-gltf2interface: 8.51.2
'@bcoe/v8-coverage@0.2.3': {}
@@ -16287,7 +16290,7 @@ snapshots:
storybook: 10.2.17(@testing-library/dom@10.4.0)(bufferutil@4.1.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(utf-8-validate@6.0.6)
type-fest: 2.19.0
vue: 3.5.30(typescript@5.9.3)
vue-component-type-helpers: 3.2.5
vue-component-type-helpers: 3.2.6
'@stylistic/eslint-plugin@5.5.0(eslint@9.39.4)':
dependencies:
@@ -24057,6 +24060,8 @@ snapshots:
vue-component-type-helpers@3.2.5: {}
vue-component-type-helpers@3.2.6: {}
vue-demi@0.14.10(vue@3.5.30(typescript@5.9.3)):
dependencies:
vue: 3.5.30(typescript@5.9.3)

View File

@@ -35,5 +35,6 @@ ignorePatchFailures: false
minimumReleaseAge: 10080 # delay 7days to mitigate supply-chain attack
minimumReleaseAgeExclude:
- '@syuilo/aiscript'
- '@babylonjs/*'
- 'tar' # 脆弱性対応 そのうち消す
- 'fastify' # 脆弱性対応 そのうち消す