mylingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
53 lines • 2.19 kB
JavaScript
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]);
//# sourceMappingURL=mainOrbitCamera.js.map