UNPKG

bytev-charts-beta

Version:

基于echarts和JavaScript及ES6封装的一个可以直接调用的图表组件库,内置主题设计,简单快捷,且支持用户自定义配置; npm 安装方式: npm install bytev-charts 若启动提示还需额外install插件,则运行 npm install @babel/runtime-corejs2 即可;

114 lines (95 loc) 3.88 kB
import _Object$create from "@babel/runtime-corejs2/core-js/object/create"; console.warn("THREE.PointerLockControls: As part of the transition to ES6 Modules, the files in 'examples/js' were deprecated in May 2020 (r117) and will be deleted in December 2020 (r124). You can find more information about developing using ES6 Modules in https://threejs.org/docs/#manual/en/introduction/Installation."); THREE.PointerLockControls = function (camera, domElement) { if (domElement === undefined) { console.warn('THREE.PointerLockControls: The second parameter "domElement" is now mandatory.'); domElement = document.body; } this.domElement = domElement; this.isLocked = false; // Set to constrain the pitch of the camera // Range is 0 to Math.PI radians this.minPolarAngle = 0; // radians this.maxPolarAngle = Math.PI; // radians // // internals // var scope = this; var changeEvent = { type: 'change' }; var lockEvent = { type: 'lock' }; var unlockEvent = { type: 'unlock' }; var euler = new THREE.Euler(0, 0, 0, 'YXZ'); var PI_2 = Math.PI / 2; var vec = new THREE.Vector3(); function onMouseMove(event) { if (scope.isLocked === false) return; var movementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0; var movementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0; euler.setFromQuaternion(camera.quaternion); euler.y -= movementX * 0.002; euler.x -= movementY * 0.002; euler.x = Math.max(PI_2 - scope.maxPolarAngle, Math.min(PI_2 - scope.minPolarAngle, euler.x)); camera.quaternion.setFromEuler(euler); scope.dispatchEvent(changeEvent); } function onPointerlockChange() { if (scope.domElement.ownerDocument.pointerLockElement === scope.domElement) { scope.dispatchEvent(lockEvent); scope.isLocked = true; } else { scope.dispatchEvent(unlockEvent); scope.isLocked = false; } } function onPointerlockError() { console.error('THREE.PointerLockControls: Unable to use Pointer Lock API'); } this.connect = function () { scope.domElement.ownerDocument.addEventListener('mousemove', onMouseMove, false); scope.domElement.ownerDocument.addEventListener('pointerlockchange', onPointerlockChange, false); scope.domElement.ownerDocument.addEventListener('pointerlockerror', onPointerlockError, false); }; this.disconnect = function () { scope.domElement.ownerDocument.removeEventListener('mousemove', onMouseMove, false); scope.domElement.ownerDocument.removeEventListener('pointerlockchange', onPointerlockChange, false); scope.domElement.ownerDocument.removeEventListener('pointerlockerror', onPointerlockError, false); }; this.dispose = function () { this.disconnect(); }; this.getObject = function () { // retaining this method for backward compatibility return camera; }; this.getDirection = function () { var direction = new THREE.Vector3(0, 0, -1); return function (v) { return v.copy(direction).applyQuaternion(camera.quaternion); }; }(); this.moveForward = function (distance) { // move forward parallel to the xz-plane // assumes camera.up is y-up vec.setFromMatrixColumn(camera.matrix, 0); vec.crossVectors(camera.up, vec); camera.position.addScaledVector(vec, distance); }; this.moveRight = function (distance) { vec.setFromMatrixColumn(camera.matrix, 0); camera.position.addScaledVector(vec, distance); }; this.lock = function () { this.domElement.requestPointerLock(); }; this.unlock = function () { scope.domElement.ownerDocument.exitPointerLock(); }; this.connect(); }; THREE.PointerLockControls.prototype = _Object$create(THREE.EventDispatcher.prototype); THREE.PointerLockControls.prototype.constructor = THREE.PointerLockControls;