mirror of
https://github.com/misskey-dev/misskey.git
synced 2026-05-30 19:13:58 +02:00
fix scale
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user