UNPKG

mylingo3d

Version:

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

66 lines (54 loc) 2.08 kB
import { getOrbitControls } from "../states/useOrbitControls" import { container } from "./renderLoop/renderSetup" import { createEffect } from "@lincode/reactivity" import mainCamera from "./mainCamera" import OrbitCamera from "../display/cameras/OrbitCamera" import { getTransformControlsDragging } from "../states/useTransformControlsDragging" import { appendableRoot } from "../api/core/Appendable" import { onEditorCenterView } from "../events/onEditorCenterView" import { getCameraDistance } from "../states/useCameraDistance" import { getCameraRendered } from "../states/useCameraRendered" import getActualScale from "../display/utils/getActualScale" import { scaleUp } from "./constants" const mainOrbitCamera = new OrbitCamera(mainCamera) export default mainOrbitCamera mainOrbitCamera.enableZoom = true mainOrbitCamera.enableFly = true mainOrbitCamera.mouseControl = false appendableRoot.delete(mainOrbitCamera) onEditorCenterView((manager) => { const pos = manager.getWorldPosition() mainOrbitCamera.x = pos.x mainOrbitCamera.y = pos.y mainOrbitCamera.z = pos.z const size = getActualScale(manager) mainOrbitCamera.innerZ = Math.max(size.x, size.y, size.z, 1) * scaleUp + 50 }) getOrbitControls((val) => { if (val) return mainOrbitCamera.setPolarAngle(90) mainOrbitCamera.setAzimuthAngle(90) }) createEffect(() => { if ( !getOrbitControls() || getCameraRendered() !== mainCamera || getTransformControlsDragging() ) return mainOrbitCamera.mouseControl = "drag" container.style.cursor = "grab" return () => { mainOrbitCamera.mouseControl = false container.style.cursor = "auto" } }, [getOrbitControls, getTransformControlsDragging, getCameraRendered]) createEffect(() => { if (getCameraRendered() !== mainCamera || getOrbitControls()) return const handle = getCameraDistance( (cameraDistance) => (mainOrbitCamera.innerZ = cameraDistance) ) return () => { handle.cancel() } }, [getCameraRendered, getOrbitControls])