1
0
mirror of https://github.com/misskey-dev/misskey.git synced 2026-05-16 14:25:32 +02:00

fix scale

This commit is contained in:
syuilo
2026-04-21 12:18:20 +09:00
parent ead90471c4
commit 0f0bc9b54f
2 changed files with 20 additions and 20 deletions

View File

@@ -116,6 +116,7 @@ import MkInput from '@/components/MkInput.vue';
import MkSwitch from '@/components/MkSwitch.vue';
import MkRange from '@/components/MkRange.vue';
import { RoomController } from '@/world/room/controller.js';
import { cm } from '@/world/utility.js';
const canvas = useTemplateRef('canvas');
@@ -257,23 +258,23 @@ function showSnappingMenu(ev: PointerEvent) {
}, {
type: 'radioOption',
text: '1cm',
active: computed(() => controller.gridSnapping.value.scale === 1),
action: () => controller.setGridSnapping({ ...controller.gridSnapping.value, scale: 1 }),
active: computed(() => controller.gridSnapping.value.scale === cm(1)),
action: () => controller.setGridSnapping({ ...controller.gridSnapping.value, scale: cm(1) }),
}, {
type: 'radioOption',
text: '2cm',
active: computed(() => controller.gridSnapping.value.scale === 2),
action: () => controller.setGridSnapping({ ...controller.gridSnapping.value, scale: 2 }),
active: computed(() => controller.gridSnapping.value.scale === cm(2)),
action: () => controller.setGridSnapping({ ...controller.gridSnapping.value, scale: cm(2) }),
}, {
type: 'radioOption',
text: '4cm',
active: computed(() => controller.gridSnapping.value.scale === 4),
action: () => controller.setGridSnapping({ ...controller.gridSnapping.value, scale: 4 }),
active: computed(() => controller.gridSnapping.value.scale === cm(4)),
action: () => controller.setGridSnapping({ ...controller.gridSnapping.value, scale: cm(4) }),
}, {
type: 'radioOption',
text: '8cm',
active: computed(() => controller.gridSnapping.value.scale === 8),
action: () => controller.setGridSnapping({ ...controller.gridSnapping.value, scale: 8 }),
active: computed(() => controller.gridSnapping.value.scale === cm(8)),
action: () => controller.setGridSnapping({ ...controller.gridSnapping.value, scale: cm(8) }),
}], ev.currentTarget ?? ev.target);
}

View File

@@ -177,6 +177,7 @@ export class RoomEngine extends EventEmitter<RoomEngineEvents> {
}
set gridSnapping(v) {
this._gridSnapping = v;
this.gridMaterial.gridRatio = v.scale; // setter内でconstructor内設定の値に依存するのはタイミングによってはundefinedになりそうなので、実際に当該マテリアルを表示する必要が生じる直前に利用側で設定させた方がいいかもしれない
this.emit('changeGridSnapping', { gridSnapping: v });
}
@@ -185,6 +186,7 @@ export class RoomEngine extends EventEmitter<RoomEngineEvents> {
private envMapOutdoor: BABYLON.CubeTexture;
private roomLight: BABYLON.SpotLight;
public lightContainer: BABYLON.ClusteredLightContainer;
private gridMaterial: GridMaterial;
private xGridPreviewPlane: BABYLON.Mesh;
private yGridPreviewPlane: BABYLON.Mesh;
private zGridPreviewPlane: BABYLON.Mesh;
@@ -377,30 +379,27 @@ export class RoomEngine extends EventEmitter<RoomEngineEvents> {
this.putParticleSystem.colorDead = new BABYLON.Color4(1, 1, 1, 0);
this.putParticleSystem.targetStopDuration = 0.05;
const gridMaterial = new GridMaterial('grid', this.scene);
gridMaterial.lineColor = new BABYLON.Color3(0.5, 0.5, 0.5);
gridMaterial.mainColor = new BABYLON.Color3(0, 0, 0);
gridMaterial.minorUnitVisibility = 1;
gridMaterial.opacity = 0.5;
// todo
//watch(this.gridSnappingScale, (v) => {
// gridMaterial.gridRatio = v;
//}, { immediate: true });
this.gridMaterial = new GridMaterial('grid', this.scene);
this.gridMaterial.lineColor = new BABYLON.Color3(0.5, 0.5, 0.5);
this.gridMaterial.mainColor = new BABYLON.Color3(0, 0, 0);
this.gridMaterial.minorUnitVisibility = 1;
this.gridMaterial.opacity = 0.5;
this.gridMaterial.gridRatio = this.gridSnapping.scale;
this.xGridPreviewPlane = BABYLON.MeshBuilder.CreatePlane('xGridPreviewPlane', { width: cm(1000), height: cm(1000) }, this.scene);
this.xGridPreviewPlane.rotation = new BABYLON.Vector3(0, 0, Math.PI / 2);
this.xGridPreviewPlane.material = gridMaterial;
this.xGridPreviewPlane.material = this.gridMaterial;
this.xGridPreviewPlane.isPickable = false;
this.xGridPreviewPlane.isVisible = false;
this.yGridPreviewPlane = BABYLON.MeshBuilder.CreatePlane('yGridPreviewPlane', { width: cm(1000), height: cm(1000) }, this.scene);
this.yGridPreviewPlane.rotation = new BABYLON.Vector3(Math.PI / 2, 0, 0);
this.yGridPreviewPlane.material = gridMaterial;
this.yGridPreviewPlane.material = this.gridMaterial;
this.yGridPreviewPlane.isPickable = false;
this.yGridPreviewPlane.isVisible = false;
this.zGridPreviewPlane = BABYLON.MeshBuilder.CreatePlane('zGridPreviewPlane', { width: cm(1000), height: cm(1000) }, this.scene);
this.zGridPreviewPlane.material = gridMaterial;
this.zGridPreviewPlane.material = this.gridMaterial;
this.zGridPreviewPlane.isPickable = false;
this.zGridPreviewPlane.isVisible = false;