1 |
- {"ast":null,"code":"import { __decorate } from \"../tslib.es6.js\";\nimport { serialize, serializeAsVector3 } from \"../Misc/decorators.js\";\nimport { Vector3 } from \"../Maths/math.vector.js\";\nimport { TargetCamera } from \"./targetCamera.js\";\nimport { FlyCameraInputsManager } from \"./flyCameraInputsManager.js\";\nimport { Tools } from \"../Misc/tools.js\";\nimport { RegisterClass } from \"../Misc/typeStore.js\";\nimport { AbstractEngine } from \"../Engines/abstractEngine.js\";\n/**\n * This is a flying camera, designed for 3D movement and rotation in all directions,\n * such as in a 3D Space Shooter or a Flight Simulator.\n */\nexport class FlyCamera extends TargetCamera {\n /**\n * Gets the input sensibility for mouse input.\n * Higher values reduce sensitivity.\n */\n get angularSensibility() {\n const mouse = this.inputs.attached[\"mouse\"];\n if (mouse) {\n return mouse.angularSensibility;\n }\n return 0;\n }\n /**\n * Sets the input sensibility for a mouse input.\n * Higher values reduce sensitivity.\n */\n set angularSensibility(value) {\n const mouse = this.inputs.attached[\"mouse\"];\n if (mouse) {\n mouse.angularSensibility = value;\n }\n }\n /**\n * Get the keys for camera movement forward.\n */\n get keysForward() {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n return keyboard.keysForward;\n }\n return [];\n }\n /**\n * Set the keys for camera movement forward.\n */\n set keysForward(value) {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n keyboard.keysForward = value;\n }\n }\n /**\n * Get the keys for camera movement backward.\n */\n get keysBackward() {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n return keyboard.keysBackward;\n }\n return [];\n }\n set keysBackward(value) {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n keyboard.keysBackward = value;\n }\n }\n /**\n * Get the keys for camera movement up.\n */\n get keysUp() {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n return keyboard.keysUp;\n }\n return [];\n }\n /**\n * Set the keys for camera movement up.\n */\n set keysUp(value) {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n keyboard.keysUp = value;\n }\n }\n /**\n * Get the keys for camera movement down.\n */\n get keysDown() {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n return keyboard.keysDown;\n }\n return [];\n }\n /**\n * Set the keys for camera movement down.\n */\n set keysDown(value) {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n keyboard.keysDown = value;\n }\n }\n /**\n * Get the keys for camera movement left.\n */\n get keysLeft() {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n return keyboard.keysLeft;\n }\n return [];\n }\n /**\n * Set the keys for camera movement left.\n */\n set keysLeft(value) {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n keyboard.keysLeft = value;\n }\n }\n /**\n * Set the keys for camera movement right.\n */\n get keysRight() {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n return keyboard.keysRight;\n }\n return [];\n }\n /**\n * Set the keys for camera movement right.\n */\n set keysRight(value) {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n keyboard.keysRight = value;\n }\n }\n /**\n * Instantiates a FlyCamera.\n * This is a flying camera, designed for 3D movement and rotation in all directions,\n * such as in a 3D Space Shooter or a Flight Simulator.\n * @param name Define the name of the camera in the scene.\n * @param position Define the starting position of the camera in the scene.\n * @param scene Define the scene the camera belongs to.\n * @param setActiveOnSceneIfNoneActive Defines whether the camera should be marked as active, if no other camera has been defined as active.\n */\n constructor(name, position, scene, setActiveOnSceneIfNoneActive = true) {\n super(name, position, scene, setActiveOnSceneIfNoneActive);\n /**\n * Define the collision ellipsoid of the camera.\n * This is helpful for simulating a camera body, like a player's body.\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/camera_collisions#arcrotatecamera\n */\n this.ellipsoid = new Vector3(1, 1, 1);\n /**\n * Define an offset for the position of the ellipsoid around the camera.\n * This can be helpful if the camera is attached away from the player's body center,\n * such as at its head.\n */\n this.ellipsoidOffset = new Vector3(0, 0, 0);\n /**\n * Enable or disable collisions of the camera with the rest of the scene objects.\n */\n this.checkCollisions = false;\n /**\n * Enable or disable gravity on the camera.\n */\n this.applyGravity = false;\n /**\n * Define the current direction the camera is moving to.\n */\n this.cameraDirection = Vector3.Zero();\n /**\n * Track Roll to maintain the wanted Rolling when looking around.\n */\n this._trackRoll = 0;\n /**\n * Slowly correct the Roll to its original value after a Pitch+Yaw rotation.\n */\n this.rollCorrect = 100;\n /**\n * Mimic a banked turn, Rolling the camera when Yawing.\n * It's recommended to use rollCorrect = 10 for faster banking correction.\n */\n this.bankedTurn = false;\n /**\n * Limit in radians for how much Roll banking will add. (Default: 90°)\n */\n this.bankedTurnLimit = Math.PI / 2;\n /**\n * Value of 0 disables the banked Roll.\n * Value of 1 is equal to the Yaw angle in radians.\n */\n this.bankedTurnMultiplier = 1;\n this._needMoveForGravity = false;\n this._oldPosition = Vector3.Zero();\n this._diffPosition = Vector3.Zero();\n this._newPosition = Vector3.Zero();\n // Collisions.\n this._collisionMask = -1;\n /**\n * @internal\n */\n this._onCollisionPositionChange = (collisionId, newPosition, collidedMesh = null) => {\n const updatePosition = newPos => {\n this._newPosition.copyFrom(newPos);\n this._newPosition.subtractToRef(this._oldPosition, this._diffPosition);\n if (this._diffPosition.length() > AbstractEngine.CollisionsEpsilon) {\n this.position.addInPlace(this._diffPosition);\n if (this.onCollide && collidedMesh) {\n this.onCollide(collidedMesh);\n }\n }\n };\n updatePosition(newPosition);\n };\n this.inputs = new FlyCameraInputsManager(this);\n this.inputs.addKeyboard().addMouse();\n }\n /**\n * Attached controls to the current camera.\n * @param ignored defines an ignored parameter kept for backward compatibility.\n * @param noPreventDefault Defines whether event caught by the controls should call preventdefault() (https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault)\n */\n attachControl(ignored, noPreventDefault) {\n // eslint-disable-next-line prefer-rest-params\n noPreventDefault = Tools.BackCompatCameraNoPreventDefault(arguments);\n this.inputs.attachElement(noPreventDefault);\n }\n /**\n * Detach a control from the HTML DOM element.\n * The camera will stop reacting to that input.\n */\n detachControl() {\n this.inputs.detachElement();\n this.cameraDirection = new Vector3(0, 0, 0);\n }\n /**\n * Get the mask that the camera ignores in collision events.\n */\n get collisionMask() {\n return this._collisionMask;\n }\n /**\n * Set the mask that the camera ignores in collision events.\n */\n set collisionMask(mask) {\n this._collisionMask = !isNaN(mask) ? mask : -1;\n }\n /**\n * @internal\n */\n _collideWithWorld(displacement) {\n let globalPosition;\n if (this.parent) {\n globalPosition = Vector3.TransformCoordinates(this.position, this.parent.getWorldMatrix());\n } else {\n globalPosition = this.position;\n }\n globalPosition.subtractFromFloatsToRef(0, this.ellipsoid.y, 0, this._oldPosition);\n this._oldPosition.addInPlace(this.ellipsoidOffset);\n const coordinator = this.getScene().collisionCoordinator;\n if (!this._collider) {\n this._collider = coordinator.createCollider();\n }\n this._collider._radius = this.ellipsoid;\n this._collider.collisionMask = this._collisionMask;\n // No need for clone, as long as gravity is not on.\n let actualDisplacement = displacement;\n // Add gravity to direction to prevent dual-collision checking.\n if (this.applyGravity) {\n // This prevents mending with cameraDirection, a global variable of the fly camera class.\n actualDisplacement = displacement.add(this.getScene().gravity);\n }\n coordinator.getNewPosition(this._oldPosition, actualDisplacement, this._collider, 3, null, this._onCollisionPositionChange, this.uniqueId);\n }\n /** @internal */\n _checkInputs() {\n if (!this._localDirection) {\n this._localDirection = Vector3.Zero();\n this._transformedDirection = Vector3.Zero();\n }\n this.inputs.checkInputs();\n super._checkInputs();\n }\n /**\n * Enable movement without a user input. This allows gravity to always be applied.\n */\n set needMoveForGravity(value) {\n this._needMoveForGravity = value;\n }\n /**\n * When true, gravity is applied whether there is user input or not.\n */\n get needMoveForGravity() {\n return this._needMoveForGravity;\n }\n /** @internal */\n _decideIfNeedsToMove() {\n return this._needMoveForGravity || Math.abs(this.cameraDirection.x) > 0 || Math.abs(this.cameraDirection.y) > 0 || Math.abs(this.cameraDirection.z) > 0;\n }\n /** @internal */\n _updatePosition() {\n if (this.checkCollisions && this.getScene().collisionsEnabled) {\n this._collideWithWorld(this.cameraDirection);\n } else {\n super._updatePosition();\n }\n }\n /**\n * Restore the Roll to its target value at the rate specified.\n * @param rate - Higher means slower restoring.\n * @internal\n */\n restoreRoll(rate) {\n const limit = this._trackRoll; // Target Roll.\n const z = this.rotation.z; // Current Roll.\n const delta = limit - z; // Difference in Roll.\n const minRad = 0.001; // Tenth of a radian is a barely noticable difference.\n // If the difference is noticable, restore the Roll.\n if (Math.abs(delta) >= minRad) {\n // Change Z rotation towards the target Roll.\n this.rotation.z += delta / rate;\n // Match when near enough.\n if (Math.abs(limit - this.rotation.z) <= minRad) {\n this.rotation.z = limit;\n }\n }\n }\n /**\n * Destroy the camera and release the current resources held by it.\n */\n dispose() {\n this.inputs.clear();\n super.dispose();\n }\n /**\n * Get the current object class name.\n * @returns the class name.\n */\n getClassName() {\n return \"FlyCamera\";\n }\n}\n__decorate([serializeAsVector3()], FlyCamera.prototype, \"ellipsoid\", void 0);\n__decorate([serializeAsVector3()], FlyCamera.prototype, \"ellipsoidOffset\", void 0);\n__decorate([serialize()], FlyCamera.prototype, \"checkCollisions\", void 0);\n__decorate([serialize()], FlyCamera.prototype, \"applyGravity\", void 0);\n// Register Class Name\nRegisterClass(\"BABYLON.FlyCamera\", FlyCamera);","map":{"version":3,"names":["__decorate","serialize","serializeAsVector3","Vector3","TargetCamera","FlyCameraInputsManager","Tools","RegisterClass","AbstractEngine","FlyCamera","angularSensibility","mouse","inputs","attached","value","keysForward","keyboard","keysBackward","keysUp","keysDown","keysLeft","keysRight","constructor","name","position","scene","setActiveOnSceneIfNoneActive","ellipsoid","ellipsoidOffset","checkCollisions","applyGravity","cameraDirection","Zero","_trackRoll","rollCorrect","bankedTurn","bankedTurnLimit","Math","PI","bankedTurnMultiplier","_needMoveForGravity","_oldPosition","_diffPosition","_newPosition","_collisionMask","_onCollisionPositionChange","collisionId","newPosition","collidedMesh","updatePosition","newPos","copyFrom","subtractToRef","length","CollisionsEpsilon","addInPlace","onCollide","addKeyboard","addMouse","attachControl","ignored","noPreventDefault","BackCompatCameraNoPreventDefault","arguments","attachElement","detachControl","detachElement","collisionMask","mask","isNaN","_collideWithWorld","displacement","globalPosition","parent","TransformCoordinates","getWorldMatrix","subtractFromFloatsToRef","y","coordinator","getScene","collisionCoordinator","_collider","createCollider","_radius","actualDisplacement","add","gravity","getNewPosition","uniqueId","_checkInputs","_localDirection","_transformedDirection","checkInputs","needMoveForGravity","_decideIfNeedsToMove","abs","x","z","_updatePosition","collisionsEnabled","restoreRoll","rate","limit","rotation","delta","minRad","dispose","clear","getClassName","prototype"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Cameras/flyCamera.js"],"sourcesContent":["import { __decorate } from \"../tslib.es6.js\";\nimport { serialize, serializeAsVector3 } from \"../Misc/decorators.js\";\nimport { Vector3 } from \"../Maths/math.vector.js\";\nimport { TargetCamera } from \"./targetCamera.js\";\nimport { FlyCameraInputsManager } from \"./flyCameraInputsManager.js\";\nimport { Tools } from \"../Misc/tools.js\";\nimport { RegisterClass } from \"../Misc/typeStore.js\";\nimport { AbstractEngine } from \"../Engines/abstractEngine.js\";\n/**\n * This is a flying camera, designed for 3D movement and rotation in all directions,\n * such as in a 3D Space Shooter or a Flight Simulator.\n */\nexport class FlyCamera extends TargetCamera {\n /**\n * Gets the input sensibility for mouse input.\n * Higher values reduce sensitivity.\n */\n get angularSensibility() {\n const mouse = this.inputs.attached[\"mouse\"];\n if (mouse) {\n return mouse.angularSensibility;\n }\n return 0;\n }\n /**\n * Sets the input sensibility for a mouse input.\n * Higher values reduce sensitivity.\n */\n set angularSensibility(value) {\n const mouse = this.inputs.attached[\"mouse\"];\n if (mouse) {\n mouse.angularSensibility = value;\n }\n }\n /**\n * Get the keys for camera movement forward.\n */\n get keysForward() {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n return keyboard.keysForward;\n }\n return [];\n }\n /**\n * Set the keys for camera movement forward.\n */\n set keysForward(value) {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n keyboard.keysForward = value;\n }\n }\n /**\n * Get the keys for camera movement backward.\n */\n get keysBackward() {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n return keyboard.keysBackward;\n }\n return [];\n }\n set keysBackward(value) {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n keyboard.keysBackward = value;\n }\n }\n /**\n * Get the keys for camera movement up.\n */\n get keysUp() {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n return keyboard.keysUp;\n }\n return [];\n }\n /**\n * Set the keys for camera movement up.\n */\n set keysUp(value) {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n keyboard.keysUp = value;\n }\n }\n /**\n * Get the keys for camera movement down.\n */\n get keysDown() {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n return keyboard.keysDown;\n }\n return [];\n }\n /**\n * Set the keys for camera movement down.\n */\n set keysDown(value) {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n keyboard.keysDown = value;\n }\n }\n /**\n * Get the keys for camera movement left.\n */\n get keysLeft() {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n return keyboard.keysLeft;\n }\n return [];\n }\n /**\n * Set the keys for camera movement left.\n */\n set keysLeft(value) {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n keyboard.keysLeft = value;\n }\n }\n /**\n * Set the keys for camera movement right.\n */\n get keysRight() {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n return keyboard.keysRight;\n }\n return [];\n }\n /**\n * Set the keys for camera movement right.\n */\n set keysRight(value) {\n const keyboard = this.inputs.attached[\"keyboard\"];\n if (keyboard) {\n keyboard.keysRight = value;\n }\n }\n /**\n * Instantiates a FlyCamera.\n * This is a flying camera, designed for 3D movement and rotation in all directions,\n * such as in a 3D Space Shooter or a Flight Simulator.\n * @param name Define the name of the camera in the scene.\n * @param position Define the starting position of the camera in the scene.\n * @param scene Define the scene the camera belongs to.\n * @param setActiveOnSceneIfNoneActive Defines whether the camera should be marked as active, if no other camera has been defined as active.\n */\n constructor(name, position, scene, setActiveOnSceneIfNoneActive = true) {\n super(name, position, scene, setActiveOnSceneIfNoneActive);\n /**\n * Define the collision ellipsoid of the camera.\n * This is helpful for simulating a camera body, like a player's body.\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/camera_collisions#arcrotatecamera\n */\n this.ellipsoid = new Vector3(1, 1, 1);\n /**\n * Define an offset for the position of the ellipsoid around the camera.\n * This can be helpful if the camera is attached away from the player's body center,\n * such as at its head.\n */\n this.ellipsoidOffset = new Vector3(0, 0, 0);\n /**\n * Enable or disable collisions of the camera with the rest of the scene objects.\n */\n this.checkCollisions = false;\n /**\n * Enable or disable gravity on the camera.\n */\n this.applyGravity = false;\n /**\n * Define the current direction the camera is moving to.\n */\n this.cameraDirection = Vector3.Zero();\n /**\n * Track Roll to maintain the wanted Rolling when looking around.\n */\n this._trackRoll = 0;\n /**\n * Slowly correct the Roll to its original value after a Pitch+Yaw rotation.\n */\n this.rollCorrect = 100;\n /**\n * Mimic a banked turn, Rolling the camera when Yawing.\n * It's recommended to use rollCorrect = 10 for faster banking correction.\n */\n this.bankedTurn = false;\n /**\n * Limit in radians for how much Roll banking will add. (Default: 90°)\n */\n this.bankedTurnLimit = Math.PI / 2;\n /**\n * Value of 0 disables the banked Roll.\n * Value of 1 is equal to the Yaw angle in radians.\n */\n this.bankedTurnMultiplier = 1;\n this._needMoveForGravity = false;\n this._oldPosition = Vector3.Zero();\n this._diffPosition = Vector3.Zero();\n this._newPosition = Vector3.Zero();\n // Collisions.\n this._collisionMask = -1;\n /**\n * @internal\n */\n this._onCollisionPositionChange = (collisionId, newPosition, collidedMesh = null) => {\n const updatePosition = (newPos) => {\n this._newPosition.copyFrom(newPos);\n this._newPosition.subtractToRef(this._oldPosition, this._diffPosition);\n if (this._diffPosition.length() > AbstractEngine.CollisionsEpsilon) {\n this.position.addInPlace(this._diffPosition);\n if (this.onCollide && collidedMesh) {\n this.onCollide(collidedMesh);\n }\n }\n };\n updatePosition(newPosition);\n };\n this.inputs = new FlyCameraInputsManager(this);\n this.inputs.addKeyboard().addMouse();\n }\n /**\n * Attached controls to the current camera.\n * @param ignored defines an ignored parameter kept for backward compatibility.\n * @param noPreventDefault Defines whether event caught by the controls should call preventdefault() (https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault)\n */\n attachControl(ignored, noPreventDefault) {\n // eslint-disable-next-line prefer-rest-params\n noPreventDefault = Tools.BackCompatCameraNoPreventDefault(arguments);\n this.inputs.attachElement(noPreventDefault);\n }\n /**\n * Detach a control from the HTML DOM element.\n * The camera will stop reacting to that input.\n */\n detachControl() {\n this.inputs.detachElement();\n this.cameraDirection = new Vector3(0, 0, 0);\n }\n /**\n * Get the mask that the camera ignores in collision events.\n */\n get collisionMask() {\n return this._collisionMask;\n }\n /**\n * Set the mask that the camera ignores in collision events.\n */\n set collisionMask(mask) {\n this._collisionMask = !isNaN(mask) ? mask : -1;\n }\n /**\n * @internal\n */\n _collideWithWorld(displacement) {\n let globalPosition;\n if (this.parent) {\n globalPosition = Vector3.TransformCoordinates(this.position, this.parent.getWorldMatrix());\n }\n else {\n globalPosition = this.position;\n }\n globalPosition.subtractFromFloatsToRef(0, this.ellipsoid.y, 0, this._oldPosition);\n this._oldPosition.addInPlace(this.ellipsoidOffset);\n const coordinator = this.getScene().collisionCoordinator;\n if (!this._collider) {\n this._collider = coordinator.createCollider();\n }\n this._collider._radius = this.ellipsoid;\n this._collider.collisionMask = this._collisionMask;\n // No need for clone, as long as gravity is not on.\n let actualDisplacement = displacement;\n // Add gravity to direction to prevent dual-collision checking.\n if (this.applyGravity) {\n // This prevents mending with cameraDirection, a global variable of the fly camera class.\n actualDisplacement = displacement.add(this.getScene().gravity);\n }\n coordinator.getNewPosition(this._oldPosition, actualDisplacement, this._collider, 3, null, this._onCollisionPositionChange, this.uniqueId);\n }\n /** @internal */\n _checkInputs() {\n if (!this._localDirection) {\n this._localDirection = Vector3.Zero();\n this._transformedDirection = Vector3.Zero();\n }\n this.inputs.checkInputs();\n super._checkInputs();\n }\n /**\n * Enable movement without a user input. This allows gravity to always be applied.\n */\n set needMoveForGravity(value) {\n this._needMoveForGravity = value;\n }\n /**\n * When true, gravity is applied whether there is user input or not.\n */\n get needMoveForGravity() {\n return this._needMoveForGravity;\n }\n /** @internal */\n _decideIfNeedsToMove() {\n return this._needMoveForGravity || Math.abs(this.cameraDirection.x) > 0 || Math.abs(this.cameraDirection.y) > 0 || Math.abs(this.cameraDirection.z) > 0;\n }\n /** @internal */\n _updatePosition() {\n if (this.checkCollisions && this.getScene().collisionsEnabled) {\n this._collideWithWorld(this.cameraDirection);\n }\n else {\n super._updatePosition();\n }\n }\n /**\n * Restore the Roll to its target value at the rate specified.\n * @param rate - Higher means slower restoring.\n * @internal\n */\n restoreRoll(rate) {\n const limit = this._trackRoll; // Target Roll.\n const z = this.rotation.z; // Current Roll.\n const delta = limit - z; // Difference in Roll.\n const minRad = 0.001; // Tenth of a radian is a barely noticable difference.\n // If the difference is noticable, restore the Roll.\n if (Math.abs(delta) >= minRad) {\n // Change Z rotation towards the target Roll.\n this.rotation.z += delta / rate;\n // Match when near enough.\n if (Math.abs(limit - this.rotation.z) <= minRad) {\n this.rotation.z = limit;\n }\n }\n }\n /**\n * Destroy the camera and release the current resources held by it.\n */\n dispose() {\n this.inputs.clear();\n super.dispose();\n }\n /**\n * Get the current object class name.\n * @returns the class name.\n */\n getClassName() {\n return \"FlyCamera\";\n }\n}\n__decorate([\n serializeAsVector3()\n], FlyCamera.prototype, \"ellipsoid\", void 0);\n__decorate([\n serializeAsVector3()\n], FlyCamera.prototype, \"ellipsoidOffset\", void 0);\n__decorate([\n serialize()\n], FlyCamera.prototype, \"checkCollisions\", void 0);\n__decorate([\n serialize()\n], FlyCamera.prototype, \"applyGravity\", void 0);\n// Register Class Name\nRegisterClass(\"BABYLON.FlyCamera\", FlyCamera);\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|