1
0
mirror of https://github.com/misskey-dev/misskey.git synced 2026-05-30 20:24:06 +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 MkSwitch from '@/components/MkSwitch.vue';
import MkRange from '@/components/MkRange.vue'; import MkRange from '@/components/MkRange.vue';
import { RoomController } from '@/world/room/controller.js'; import { RoomController } from '@/world/room/controller.js';
import { cm } from '@/world/utility.js';
const canvas = useTemplateRef('canvas'); const canvas = useTemplateRef('canvas');
@@ -257,23 +258,23 @@ function showSnappingMenu(ev: PointerEvent) {
}, { }, {
type: 'radioOption', type: 'radioOption',
text: '1cm', text: '1cm',
active: computed(() => controller.gridSnapping.value.scale === 1), active: computed(() => controller.gridSnapping.value.scale === cm(1)),
action: () => controller.setGridSnapping({ ...controller.gridSnapping.value, scale: 1 }), action: () => controller.setGridSnapping({ ...controller.gridSnapping.value, scale: cm(1) }),
}, { }, {
type: 'radioOption', type: 'radioOption',
text: '2cm', text: '2cm',
active: computed(() => controller.gridSnapping.value.scale === 2), active: computed(() => controller.gridSnapping.value.scale === cm(2)),
action: () => controller.setGridSnapping({ ...controller.gridSnapping.value, scale: 2 }), action: () => controller.setGridSnapping({ ...controller.gridSnapping.value, scale: cm(2) }),
}, { }, {
type: 'radioOption', type: 'radioOption',
text: '4cm', text: '4cm',
active: computed(() => controller.gridSnapping.value.scale === 4), active: computed(() => controller.gridSnapping.value.scale === cm(4)),
action: () => controller.setGridSnapping({ ...controller.gridSnapping.value, scale: 4 }), action: () => controller.setGridSnapping({ ...controller.gridSnapping.value, scale: cm(4) }),
}, { }, {
type: 'radioOption', type: 'radioOption',
text: '8cm', text: '8cm',
active: computed(() => controller.gridSnapping.value.scale === 8), active: computed(() => controller.gridSnapping.value.scale === cm(8)),
action: () => controller.setGridSnapping({ ...controller.gridSnapping.value, scale: 8 }), action: () => controller.setGridSnapping({ ...controller.gridSnapping.value, scale: cm(8) }),
}], ev.currentTarget ?? ev.target); }], ev.currentTarget ?? ev.target);
} }

View File

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