diff --git a/app/src/components/NumberSliderToggle.vue b/app/src/components/NumberSliderToggle.vue new file mode 100644 index 00000000..afab8c09 --- /dev/null +++ b/app/src/components/NumberSliderToggle.vue @@ -0,0 +1,75 @@ + + + + + \ No newline at end of file diff --git a/app/src/components/lobby/VrSpacePreview.vue b/app/src/components/lobby/VrSpacePreview.vue index d7e45af9..4626d0ef 100644 --- a/app/src/components/lobby/VrSpacePreview.vue +++ b/app/src/components/lobby/VrSpacePreview.vue @@ -15,11 +15,26 @@
x - + + + y - + + + z - + + +
@@ -100,6 +135,7 @@ import { defaultHeightOverGround } from 'schemas'; import { useCurrentCursorIntersection, useSelectedPlacedObject, useCurrentlyMovedObject } from '@/composables/vrSpaceComposables'; import OffsetSlider from '@/components/OffsetSlider.vue'; import { arrToCoordString, attachOrbitControls } from '@/modules/3DUtils'; +import NumberSliderToggle from '@/components/NumberSliderToggle.vue'; const vrSpaceStore = useVrSpaceStore(); @@ -127,6 +163,18 @@ const uniformScale = computed({ } }) +const worldPositionBounds = computed(() => { + if (!modelTag.value) return { min: -1000, max: 1000 } + + const obj3D = modelTag.value.getObject3D('mesh') as THREE.Object3D + const bbox = new THREE.Box3().setFromObject(obj3D) + + return { + min: bbox.min.x - bbox.getSize(new THREE.Vector3()).x * 0.5, + max: bbox.max.x + bbox.getSize(new THREE.Vector3()).x * 0.5 + } +}) + const worldModelScaleString = computed(() => { return `${vrSpaceStore.writableVrSpaceDbData?.worldModelScale} ${vrSpaceStore.writableVrSpaceDbData?.worldModelScale} ${vrSpaceStore.writableVrSpaceDbData?.worldModelScale}` })