lingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
49 lines • 2.15 kB
JavaScript
import { createEffect } from "@lincode/reactivity";
import mainCamera from "./mainCamera";
import OrbitCamera from "../display/cameras/OrbitCamera";
import { getTransformControlsDragging } from "../states/useTransformControlsDragging";
import { onEditorCenterView } from "../events/onEditorCenterView";
import { getCameraRendered } from "../states/useCameraRendered";
import getActualScale from "../memo/getActualScale";
import { M2CM } from "../globals";
import { getEditorBehavior } from "../states/useEditorBehavior";
import { container } from "./renderLoop/containers";
import { cameraRenderedPtr } from "../pointers/cameraRenderedPtr";
import { editorBehaviorPtr } from "../pointers/editorBehaviorPtr";
const mainCameraManager = new OrbitCamera(mainCamera);
export default mainCameraManager;
mainCameraManager.$ghost();
mainCameraManager.$disableUnload = true;
mainCameraManager.name = "camera";
mainCameraManager.enableZoom = true;
mainCameraManager.enableFly = true;
mainCameraManager.mouseControl = false;
onEditorCenterView((manager) => {
Object.assign(mainCameraManager, manager.getWorldPosition());
const size = getActualScale(manager);
mainCameraManager.innerZ = Math.max(size.x, size.y, size.z, 1) * M2CM + 50;
});
createEffect(() => {
if (!editorBehaviorPtr[0] ||
cameraRenderedPtr[0] !== mainCamera ||
getTransformControlsDragging())
return;
mainCameraManager.mouseControl = "drag";
container.style.cursor = "grab";
return () => {
mainCameraManager.mouseControl = false;
container.style.cursor = "auto";
};
}, [getEditorBehavior, getTransformControlsDragging, getCameraRendered]);
export const resetMainCameraManager = () => {
mainCameraManager.x = 0;
mainCameraManager.y = 0;
mainCameraManager.z = 0;
mainCameraManager.rotationX = 0;
mainCameraManager.rotationY = 0;
mainCameraManager.rotationZ = 0;
mainCameraManager.polarAngle = editorBehaviorPtr[0] ? 120 : 0;
mainCameraManager.azimuthAngle = 0;
};
getEditorBehavior((editorBehavior) => editorBehavior && resetMainCameraManager());
//# sourceMappingURL=mainCameraManager.js.map