UNPKG

react-ngl

Version:
90 lines 4.15 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.isCameraStateEqual = exports.applyCameraState = exports.getDefaultCameraState = exports.getDefaultDistance = exports.getDefaultPosition = exports.getCameraState = exports.CAMERA_STATE_NONE = exports.DEFAULT_ROTATION = exports.Rotation = exports.Position = void 0; var NGL = __importStar(require("./nglTypes")); exports.Position = NGL.Vector3; exports.Rotation = NGL.Quaternion; exports.DEFAULT_ROTATION = new exports.Rotation(0, 0, 0, 1); exports.CAMERA_STATE_NONE = {}; exports.getCameraState = function (stage) { var _a = stage.viewerControls, position = _a.position, rotation = _a.rotation; var distance = stage.viewer.camera.position.z; return { position: position, rotation: rotation, distance: distance, }; }; exports.getDefaultPosition = function (stage) { return stage.getCenter().negate(); }; exports.getDefaultDistance = function (stage) { return stage.getZoom(); }; exports.getDefaultCameraState = function (stage) { return ({ position: exports.getDefaultPosition(stage), rotation: exports.DEFAULT_ROTATION, distance: exports.getDefaultDistance(stage), }); }; exports.applyCameraState = function (stage, cameraState, withoutDispatch) { if (withoutDispatch === void 0) { withoutDispatch = false; } var viewerControls = stage.viewerControls; var prevCameraState = exports.getCameraState(stage); var isChanged = false; var position = cameraState.position || exports.getDefaultPosition(stage); if (!position.equals(prevCameraState.position)) { // see also https://github.com/arose/ngl/blob/7bf7e355/src/controls/viewer-controls.ts#L153 viewerControls.viewer.translationGroup.position.copy(position); isChanged = true; } var rotation = cameraState.rotation || exports.DEFAULT_ROTATION; if (!rotation.equals(prevCameraState.rotation)) { // see also https://github.com/arose/ngl/blob/7bf7e355/src/controls/viewer-controls.ts#L199 viewerControls.viewer.rotationGroup.setRotationFromQuaternion(rotation); isChanged = true; } var distance = cameraState.distance || exports.getDefaultDistance(stage); if (distance !== prevCameraState.distance) { // see also https://github.com/arose/ngl/blob/7bf7e355/src/controls/viewer-controls.ts#L173 viewerControls.viewer.camera.position.z = Math.min(-1, distance); viewerControls.viewer.updateZoom(); isChanged = true; } if (isChanged) { // see also https://github.com/arose/ngl/blob/7bf7e355/src/controls/viewer-controls.ts#L72 viewerControls.viewer.requestRender(); if (!withoutDispatch) { viewerControls.signals.changed.dispatch(); } } }; exports.isCameraStateEqual = function (a, b) { if (a === undefined || b === undefined) { return a === b; } var isPositionEqual = a.position && b.position ? a.position.equals(b.position) : a.position === b.position; var isRotationEqual = a.rotation && b.rotation ? a.rotation.equals(b.rotation) : a.rotation === b.rotation; return isPositionEqual && isRotationEqual && a.distance === b.distance; }; //# sourceMappingURL=viewer.js.map