optimize build size

This commit is contained in:
Yeicor
2024-02-10 18:51:16 +01:00
parent 85a401e9ec
commit 0aa0be4a1e

View File

@@ -1,13 +1,16 @@
<script setup lang="ts"> <script setup lang="ts">
import {onMounted, onUpdated, ref} from "vue"; import {onMounted, onUpdated, ref} from "vue";
import {ModelScene} from "@google/model-viewer/lib/three-components/ModelScene"; import type {ModelScene} from "@google/model-viewer/lib/three-components/ModelScene";
import * as OrientationGizmoRaw from "three-orientation-gizmo/src/OrientationGizmo"; import * as OrientationGizmoRaw from "three-orientation-gizmo/src/OrientationGizmo";
import * as THREE from "three";
globalThis.THREE = THREE // HACK: Required for the gizmo to work // Optimized minimal dependencies from three to avoid more async imports
import {Vector3} from "three/src/math/Vector3.js";
import {Matrix4} from "three/src/math/Matrix4.js";
globalThis.THREE = {Vector3, Matrix4} as any // HACK: Required for the gizmo to work
const props = defineProps({ const props = defineProps({
scene: ModelScene scene: Object
}); });
function createGizmo(expectedParent: HTMLElement, scene: ModelScene): HTMLElement { function createGizmo(expectedParent: HTMLElement, scene: ModelScene): HTMLElement {
@@ -32,7 +35,7 @@ function createGizmo(expectedParent: HTMLElement, scene: ModelScene): HTMLElemen
let lookFrom = scene.getCamera().position.clone(); let lookFrom = scene.getCamera().position.clone();
let lookAt = scene.getTarget().clone().add(scene.target.position); let lookAt = scene.getTarget().clone().add(scene.target.position);
let magnitude = lookFrom.clone().sub(lookAt).length() let magnitude = lookFrom.clone().sub(lookAt).length()
let direction = new THREE.Vector3(axis.direction.x, axis.direction.y, axis.direction.z); let direction = new Vector3(axis.direction.x, axis.direction.y, axis.direction.z);
let newLookFrom = lookAt.clone().add(direction.clone().multiplyScalar(magnitude)); let newLookFrom = lookAt.clone().add(direction.clone().multiplyScalar(magnitude));
//console.log("New camera position", newLookFrom) //console.log("New camera position", newLookFrom)
scene.getCamera().position.copy(newLookFrom); scene.getCamera().position.copy(newLookFrom);
@@ -58,7 +61,7 @@ let reinstall = () => {
if (gizmo) container.value.removeChild(gizmo); if (gizmo) container.value.removeChild(gizmo);
gizmo = createGizmo(container.value, props.scene) as typeof gizmo; gizmo = createGizmo(container.value, props.scene) as typeof gizmo;
container.value.appendChild(gizmo); container.value.appendChild(gizmo);
requestIdleCallback(updateGizmo); requestIdleCallback(updateGizmo); // Low priority updates
} }
onMounted(reinstall) onMounted(reinstall)
onUpdated(reinstall); onUpdated(reinstall);