1 |
- {"ast":null,"code":"import { __decorate } from \"../../tslib.es6.js\";\nimport { serialize } from \"../../Misc/decorators.js\";\nimport { CameraInputTypes } from \"../../Cameras/cameraInputsManager.js\";\nimport { Matrix, Vector3, Vector2 } from \"../../Maths/math.vector.js\";\nimport { Gamepad } from \"../../Gamepads/gamepad.js\";\n/**\n * Manage the gamepad inputs to control a free camera.\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/customizingCameraInputs\n */\nexport class FreeCameraGamepadInput {\n constructor() {\n /**\n * Defines the gamepad rotation sensibility.\n * This is the threshold from when rotation starts to be accounted for to prevent jittering.\n */\n this.gamepadAngularSensibility = 200;\n /**\n * Defines the gamepad move sensibility.\n * This is the threshold from when moving starts to be accounted for for to prevent jittering.\n */\n this.gamepadMoveSensibility = 40;\n /**\n * Defines the minimum value at which any analog stick input is ignored.\n * Note: This value should only be a value between 0 and 1.\n */\n this.deadzoneDelta = 0.1;\n this._yAxisScale = 1.0;\n this._cameraTransform = Matrix.Identity();\n this._deltaTransform = Vector3.Zero();\n this._vector3 = Vector3.Zero();\n this._vector2 = Vector2.Zero();\n }\n /**\n * Gets or sets a boolean indicating that Yaxis (for right stick) should be inverted\n */\n get invertYAxis() {\n return this._yAxisScale !== 1.0;\n }\n set invertYAxis(value) {\n this._yAxisScale = value ? -1.0 : 1.0;\n }\n /**\n * Attach the input controls to a specific dom element to get the input from.\n */\n attachControl() {\n const manager = this.camera.getScene().gamepadManager;\n this._onGamepadConnectedObserver = manager.onGamepadConnectedObservable.add(gamepad => {\n if (gamepad.type !== Gamepad.POSE_ENABLED) {\n // prioritize XBOX gamepads.\n if (!this.gamepad || gamepad.type === Gamepad.XBOX) {\n this.gamepad = gamepad;\n }\n }\n });\n this._onGamepadDisconnectedObserver = manager.onGamepadDisconnectedObservable.add(gamepad => {\n if (this.gamepad === gamepad) {\n this.gamepad = null;\n }\n });\n // check if there are already other controllers connected\n this.gamepad = manager.getGamepadByType(Gamepad.XBOX);\n // if no xbox controller was found, but there are gamepad controllers, take the first one\n if (!this.gamepad && manager.gamepads.length) {\n this.gamepad = manager.gamepads[0];\n }\n }\n /**\n * Detach the current controls from the specified dom element.\n */\n detachControl() {\n this.camera.getScene().gamepadManager.onGamepadConnectedObservable.remove(this._onGamepadConnectedObserver);\n this.camera.getScene().gamepadManager.onGamepadDisconnectedObservable.remove(this._onGamepadDisconnectedObserver);\n this.gamepad = null;\n }\n /**\n * Update the current camera state depending on the inputs that have been used this frame.\n * This is a dynamically created lambda to avoid the performance penalty of looping for inputs in the render loop.\n */\n checkInputs() {\n if (this.gamepad && this.gamepad.leftStick) {\n const camera = this.camera;\n const lsValues = this.gamepad.leftStick;\n if (this.gamepadMoveSensibility !== 0) {\n lsValues.x = Math.abs(lsValues.x) > this.deadzoneDelta ? lsValues.x / this.gamepadMoveSensibility : 0;\n lsValues.y = Math.abs(lsValues.y) > this.deadzoneDelta ? lsValues.y / this.gamepadMoveSensibility : 0;\n }\n let rsValues = this.gamepad.rightStick;\n if (rsValues && this.gamepadAngularSensibility !== 0) {\n rsValues.x = Math.abs(rsValues.x) > this.deadzoneDelta ? rsValues.x / this.gamepadAngularSensibility : 0;\n rsValues.y = (Math.abs(rsValues.y) > this.deadzoneDelta ? rsValues.y / this.gamepadAngularSensibility : 0) * this._yAxisScale;\n } else {\n rsValues = {\n x: 0,\n y: 0\n };\n }\n if (!camera.rotationQuaternion) {\n Matrix.RotationYawPitchRollToRef(camera.rotation.y, camera.rotation.x, 0, this._cameraTransform);\n } else {\n camera.rotationQuaternion.toRotationMatrix(this._cameraTransform);\n }\n const speed = camera._computeLocalCameraSpeed() * 50.0;\n this._vector3.copyFromFloats(lsValues.x * speed, 0, -lsValues.y * speed);\n Vector3.TransformCoordinatesToRef(this._vector3, this._cameraTransform, this._deltaTransform);\n camera.cameraDirection.addInPlace(this._deltaTransform);\n this._vector2.copyFromFloats(rsValues.y, rsValues.x);\n camera.cameraRotation.addInPlace(this._vector2);\n }\n }\n /**\n * Gets the class name of the current input.\n * @returns the class name\n */\n getClassName() {\n return \"FreeCameraGamepadInput\";\n }\n /**\n * Get the friendly name associated with the input class.\n * @returns the input friendly name\n */\n getSimpleName() {\n return \"gamepad\";\n }\n}\n__decorate([serialize()], FreeCameraGamepadInput.prototype, \"gamepadAngularSensibility\", void 0);\n__decorate([serialize()], FreeCameraGamepadInput.prototype, \"gamepadMoveSensibility\", void 0);\nCameraInputTypes[\"FreeCameraGamepadInput\"] = FreeCameraGamepadInput;","map":{"version":3,"names":["__decorate","serialize","CameraInputTypes","Matrix","Vector3","Vector2","Gamepad","FreeCameraGamepadInput","constructor","gamepadAngularSensibility","gamepadMoveSensibility","deadzoneDelta","_yAxisScale","_cameraTransform","Identity","_deltaTransform","Zero","_vector3","_vector2","invertYAxis","value","attachControl","manager","camera","getScene","gamepadManager","_onGamepadConnectedObserver","onGamepadConnectedObservable","add","gamepad","type","POSE_ENABLED","XBOX","_onGamepadDisconnectedObserver","onGamepadDisconnectedObservable","getGamepadByType","gamepads","length","detachControl","remove","checkInputs","leftStick","lsValues","x","Math","abs","y","rsValues","rightStick","rotationQuaternion","RotationYawPitchRollToRef","rotation","toRotationMatrix","speed","_computeLocalCameraSpeed","copyFromFloats","TransformCoordinatesToRef","cameraDirection","addInPlace","cameraRotation","getClassName","getSimpleName","prototype"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Cameras/Inputs/freeCameraGamepadInput.js"],"sourcesContent":["import { __decorate } from \"../../tslib.es6.js\";\nimport { serialize } from \"../../Misc/decorators.js\";\nimport { CameraInputTypes } from \"../../Cameras/cameraInputsManager.js\";\nimport { Matrix, Vector3, Vector2 } from \"../../Maths/math.vector.js\";\nimport { Gamepad } from \"../../Gamepads/gamepad.js\";\n/**\n * Manage the gamepad inputs to control a free camera.\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/customizingCameraInputs\n */\nexport class FreeCameraGamepadInput {\n constructor() {\n /**\n * Defines the gamepad rotation sensibility.\n * This is the threshold from when rotation starts to be accounted for to prevent jittering.\n */\n this.gamepadAngularSensibility = 200;\n /**\n * Defines the gamepad move sensibility.\n * This is the threshold from when moving starts to be accounted for for to prevent jittering.\n */\n this.gamepadMoveSensibility = 40;\n /**\n * Defines the minimum value at which any analog stick input is ignored.\n * Note: This value should only be a value between 0 and 1.\n */\n this.deadzoneDelta = 0.1;\n this._yAxisScale = 1.0;\n this._cameraTransform = Matrix.Identity();\n this._deltaTransform = Vector3.Zero();\n this._vector3 = Vector3.Zero();\n this._vector2 = Vector2.Zero();\n }\n /**\n * Gets or sets a boolean indicating that Yaxis (for right stick) should be inverted\n */\n get invertYAxis() {\n return this._yAxisScale !== 1.0;\n }\n set invertYAxis(value) {\n this._yAxisScale = value ? -1.0 : 1.0;\n }\n /**\n * Attach the input controls to a specific dom element to get the input from.\n */\n attachControl() {\n const manager = this.camera.getScene().gamepadManager;\n this._onGamepadConnectedObserver = manager.onGamepadConnectedObservable.add((gamepad) => {\n if (gamepad.type !== Gamepad.POSE_ENABLED) {\n // prioritize XBOX gamepads.\n if (!this.gamepad || gamepad.type === Gamepad.XBOX) {\n this.gamepad = gamepad;\n }\n }\n });\n this._onGamepadDisconnectedObserver = manager.onGamepadDisconnectedObservable.add((gamepad) => {\n if (this.gamepad === gamepad) {\n this.gamepad = null;\n }\n });\n // check if there are already other controllers connected\n this.gamepad = manager.getGamepadByType(Gamepad.XBOX);\n // if no xbox controller was found, but there are gamepad controllers, take the first one\n if (!this.gamepad && manager.gamepads.length) {\n this.gamepad = manager.gamepads[0];\n }\n }\n /**\n * Detach the current controls from the specified dom element.\n */\n detachControl() {\n this.camera.getScene().gamepadManager.onGamepadConnectedObservable.remove(this._onGamepadConnectedObserver);\n this.camera.getScene().gamepadManager.onGamepadDisconnectedObservable.remove(this._onGamepadDisconnectedObserver);\n this.gamepad = null;\n }\n /**\n * Update the current camera state depending on the inputs that have been used this frame.\n * This is a dynamically created lambda to avoid the performance penalty of looping for inputs in the render loop.\n */\n checkInputs() {\n if (this.gamepad && this.gamepad.leftStick) {\n const camera = this.camera;\n const lsValues = this.gamepad.leftStick;\n if (this.gamepadMoveSensibility !== 0) {\n lsValues.x = Math.abs(lsValues.x) > this.deadzoneDelta ? lsValues.x / this.gamepadMoveSensibility : 0;\n lsValues.y = Math.abs(lsValues.y) > this.deadzoneDelta ? lsValues.y / this.gamepadMoveSensibility : 0;\n }\n let rsValues = this.gamepad.rightStick;\n if (rsValues && this.gamepadAngularSensibility !== 0) {\n rsValues.x = Math.abs(rsValues.x) > this.deadzoneDelta ? rsValues.x / this.gamepadAngularSensibility : 0;\n rsValues.y = (Math.abs(rsValues.y) > this.deadzoneDelta ? rsValues.y / this.gamepadAngularSensibility : 0) * this._yAxisScale;\n }\n else {\n rsValues = { x: 0, y: 0 };\n }\n if (!camera.rotationQuaternion) {\n Matrix.RotationYawPitchRollToRef(camera.rotation.y, camera.rotation.x, 0, this._cameraTransform);\n }\n else {\n camera.rotationQuaternion.toRotationMatrix(this._cameraTransform);\n }\n const speed = camera._computeLocalCameraSpeed() * 50.0;\n this._vector3.copyFromFloats(lsValues.x * speed, 0, -lsValues.y * speed);\n Vector3.TransformCoordinatesToRef(this._vector3, this._cameraTransform, this._deltaTransform);\n camera.cameraDirection.addInPlace(this._deltaTransform);\n this._vector2.copyFromFloats(rsValues.y, rsValues.x);\n camera.cameraRotation.addInPlace(this._vector2);\n }\n }\n /**\n * Gets the class name of the current input.\n * @returns the class name\n */\n getClassName() {\n return \"FreeCameraGamepadInput\";\n }\n /**\n * Get the friendly name associated with the input class.\n * @returns the input friendly name\n */\n getSimpleName() {\n return \"gamepad\";\n }\n}\n__decorate([\n serialize()\n], FreeCameraGamepadInput.prototype, \"gamepadAngularSensibility\", void 0);\n__decorate([\n serialize()\n], FreeCameraGamepadInput.prototype, \"gamepadMoveSensibility\", void 0);\nCameraInputTypes[\"FreeCameraGamepadInput\"] = FreeCameraGamepadInput;\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|