@react-vertex/orbit-camera
Version:
Orbit Camera and Controls for React Vertex
73 lines (66 loc) • 2.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useOrbitCamera = useOrbitCamera;
exports.useOrbitControls = useOrbitControls;
Object.defineProperty(exports, "OrbitCamera", {
enumerable: true,
get: function get() {
return _OrbitCamera.OrbitCamera;
}
});
Object.defineProperty(exports, "OrbitControls", {
enumerable: true,
get: function get() {
return _OrbitControls.OrbitControls;
}
});
var _react = require("react");
var _core = require("@react-vertex/core");
var _OrbitCamera = require("./OrbitCamera");
var _OrbitControls = require("./OrbitControls");
function useOrbitCamera() {
var fov = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 100;
var aspect = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
var near = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
var far = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1000;
var configure = arguments.length > 4 ? arguments[4] : undefined;
var memoized = (0, _react.useMemo)(function () {
var camera = new _OrbitCamera.OrbitCamera(fov, aspect, near, far);
configure && configure(camera);
return camera;
}, []);
(0, _react.useMemo)(function () {
memoized.setProjection(fov, aspect, near, far);
}, [memoized, fov, aspect, near, far]);
return memoized;
}
function useOrbitControls(camera, configure) {
var canvas = (0, _core.useCanvas)();
var memoized = (0, _react.useMemo)(function () {
var controls = new _OrbitControls.OrbitControls(camera, canvas);
configure && configure(controls);
return controls;
}, [camera, canvas]);
(0, _react.useEffect)(function () {
canvas.addEventListener('mousedown', memoized.onMouseDown, false);
canvas.addEventListener('mouseup', memoized.onMouseUp, false);
canvas.addEventListener('mousemove', memoized.onMouseMove, false);
canvas.addEventListener('touchstart', memoized.onTouchStart, false);
canvas.addEventListener('touchend', memoized.onTouchEnd, false);
canvas.addEventListener('touchmove', memoized.onTouchMove, false);
canvas.addEventListener('wheel', memoized.onMouseWheel, false);
return function () {
canvas.removeEventListener('mousedown', memoized.onMouseDown, false);
canvas.removeEventListener('mouseup', memoized.onMouseUp, false);
canvas.removeEventListener('mousemove', memoized.onMouseMove, false);
canvas.removeEventListener('touchstart', memoized.onTouchStart, false);
canvas.removeEventListener('touchend', memoized.onTouchEnd, false);
canvas.removeEventListener('touchmove', memoized.onTouchMove, false);
canvas.removeEventListener('wheel', memoized.onMouseWheel, false);
};
}, [canvas, memoized]);
return memoized;
}
//# sourceMappingURL=index.js.map