UNPKG

mylingo3d

Version:

Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor

32 lines 1.54 kB
import { deg2Rad } from "@lincode/math"; import { createEffect } from "@lincode/reactivity"; import { setCameraDistance } from "../../states/useCameraDistance"; import { getViewportSize } from "../../states/useViewportSize"; import mainCamera from "../mainCamera"; import { getWebXR } from "../../states/useWebXR"; import { getResolution } from "../../states/useResolution"; import { getCameraRendered, updateCameraAspect } from "../../states/useCameraRendered"; const getZ = (height, camera) => Math.abs((height * 0.5) / Math.cos(camera.fov * 0.6 * deg2Rad)); createEffect(() => { const [vw, vh] = getViewportSize() ?? getResolution(); const [resX, resY, aspect] = updateCameraAspect(getCameraRendered()); const size0 = { width: resX, height: vh - ((vw - resX) * vh) / vw }; const size1 = { width: vw - ((vh - resY) * vw) / vh, height: resY }; const val0 = Math.min(resX - size0.width, resY - size0.height); const val1 = Math.min(resX - size1.width, resY - size1.height); if (val0 > val1) { setCameraDistance(getZ(vw / aspect, mainCamera)); // Object.assign(referenceOutline.style, { width: size0.width + "px", height: size0.height + "px" }) } else { setCameraDistance(getZ(vh, mainCamera)); // Object.assign(referenceOutline.style, { width: size1.width + "px", height: size1.height + "px" }) } }, [getResolution, getViewportSize, getCameraRendered, getWebXR]); //# sourceMappingURL=resize.js.map