@babylonjs/core 5.0.0-beta.5 → 5.0.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Actions/actionManager.d.ts +1 -1
- package/Actions/actionManager.js +5 -1
- package/Actions/actionManager.js.map +1 -1
- package/Audio/analyser.d.ts +2 -1
- package/Audio/analyser.js +5 -0
- package/Audio/analyser.js.map +1 -1
- package/Audio/audioSceneComponent.d.ts +1 -1
- package/Audio/audioSceneComponent.js +5 -0
- package/Audio/audioSceneComponent.js.map +1 -1
- package/Audio/sound.d.ts +1 -1
- package/Audio/sound.js +5 -0
- package/Audio/sound.js.map +1 -1
- package/Audio/soundTrack.d.ts +2 -1
- package/Audio/soundTrack.js +5 -0
- package/Audio/soundTrack.js.map +1 -1
- package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +1 -1
- package/BakedVertexAnimation/bakedVertexAnimationManager.js +5 -0
- package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
- package/Buffers/buffer.d.ts +4 -0
- package/Buffers/buffer.js +11 -1
- package/Buffers/buffer.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseInput.d.ts +1 -0
- package/Cameras/Inputs/freeCameraMouseInput.js +6 -3
- package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
- package/Cameras/Stereoscopic/anaglyphArcRotateCamera.d.ts +1 -1
- package/Cameras/Stereoscopic/anaglyphArcRotateCamera.js.map +1 -1
- package/Cameras/Stereoscopic/anaglyphFreeCamera.d.ts +1 -1
- package/Cameras/Stereoscopic/anaglyphFreeCamera.js.map +1 -1
- package/Cameras/Stereoscopic/anaglyphGamepadCamera.d.ts +1 -1
- package/Cameras/Stereoscopic/anaglyphGamepadCamera.js.map +1 -1
- package/Cameras/Stereoscopic/anaglyphUniversalCamera.d.ts +1 -1
- package/Cameras/Stereoscopic/anaglyphUniversalCamera.js.map +1 -1
- package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.d.ts +1 -1
- package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.js.map +1 -1
- package/Cameras/Stereoscopic/stereoscopicFreeCamera.d.ts +1 -1
- package/Cameras/Stereoscopic/stereoscopicFreeCamera.js.map +1 -1
- package/Cameras/Stereoscopic/stereoscopicGamepadCamera.d.ts +1 -1
- package/Cameras/Stereoscopic/stereoscopicGamepadCamera.js.map +1 -1
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.d.ts +1 -1
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
- package/Cameras/Stereoscopic/stereoscopicUniversalCamera.d.ts +1 -1
- package/Cameras/Stereoscopic/stereoscopicUniversalCamera.js.map +1 -1
- package/Cameras/VR/vrDeviceOrientationArcRotateCamera.d.ts +1 -1
- package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js.map +1 -1
- package/Cameras/VR/vrDeviceOrientationFreeCamera.d.ts +1 -1
- package/Cameras/VR/vrDeviceOrientationFreeCamera.js.map +1 -1
- package/Cameras/VR/vrDeviceOrientationGamepadCamera.d.ts +1 -1
- package/Cameras/VR/vrDeviceOrientationGamepadCamera.js.map +1 -1
- package/Cameras/VR/vrExperienceHelper.d.ts +1 -0
- package/Cameras/VR/vrExperienceHelper.js +1 -0
- package/Cameras/VR/vrExperienceHelper.js.map +1 -1
- package/Cameras/VR/webVRCamera.d.ts +2 -1
- package/Cameras/VR/webVRCamera.js +3 -2
- package/Cameras/VR/webVRCamera.js.map +1 -1
- package/Cameras/arcRotateCamera.d.ts +1 -1
- package/Cameras/arcRotateCamera.js.map +1 -1
- package/Cameras/camera.d.ts +1 -1
- package/Cameras/camera.js.map +1 -1
- package/Cameras/deviceOrientationCamera.d.ts +1 -1
- package/Cameras/deviceOrientationCamera.js.map +1 -1
- package/Cameras/flyCamera.d.ts +1 -1
- package/Cameras/flyCamera.js.map +1 -1
- package/Cameras/followCamera.d.ts +1 -1
- package/Cameras/followCamera.js.map +1 -1
- package/Cameras/freeCamera.d.ts +1 -1
- package/Cameras/freeCamera.js.map +1 -1
- package/Cameras/gamepadCamera.d.ts +1 -1
- package/Cameras/gamepadCamera.js.map +1 -1
- package/Cameras/targetCamera.d.ts +1 -1
- package/Cameras/targetCamera.js.map +1 -1
- package/Cameras/touchCamera.d.ts +1 -1
- package/Cameras/touchCamera.js.map +1 -1
- package/Cameras/universalCamera.d.ts +1 -1
- package/Cameras/universalCamera.js.map +1 -1
- package/Cameras/virtualJoysticksCamera.d.ts +1 -1
- package/Cameras/virtualJoysticksCamera.js.map +1 -1
- package/Collisions/collider.d.ts +1 -1
- package/Collisions/collider.js +48 -2
- package/Collisions/collider.js.map +1 -1
- package/Culling/Octrees/octreeSceneComponent.d.ts +1 -1
- package/Culling/Octrees/octreeSceneComponent.js +5 -0
- package/Culling/Octrees/octreeSceneComponent.js.map +1 -1
- package/Debug/axesViewer.d.ts +1 -1
- package/Debug/axesViewer.js +5 -0
- package/Debug/axesViewer.js.map +1 -1
- package/Debug/debugLayer.d.ts +1 -1
- package/Debug/debugLayer.js +5 -1
- package/Debug/debugLayer.js.map +1 -1
- package/Debug/physicsViewer.d.ts +1 -1
- package/Debug/physicsViewer.js +3 -0
- package/Debug/physicsViewer.js.map +1 -1
- package/DeviceInput/InputDevices/webDeviceInputSystem.js +11 -13
- package/DeviceInput/InputDevices/webDeviceInputSystem.js.map +1 -1
- package/Engines/Extensions/engine.cubeTexture.d.ts +1 -1
- package/Engines/Extensions/engine.cubeTexture.js +4 -1
- package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
- package/Engines/Native/nativeInterfaces.d.ts +1 -1
- package/Engines/Native/nativeInterfaces.js.map +1 -1
- package/Engines/engine.d.ts +1 -0
- package/Engines/engineCapabilities.d.ts +2 -0
- package/Engines/engineCapabilities.js.map +1 -1
- package/Engines/nativeEngine.js +3 -2
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/nullEngine.js +2 -1
- package/Engines/nullEngine.js.map +1 -1
- package/Engines/thinEngine.js +4 -3
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.js +2 -1
- package/Engines/webgpuEngine.js.map +1 -1
- package/Gamepads/Controllers/oculusTouchController.js +2 -2
- package/Gamepads/Controllers/oculusTouchController.js.map +1 -1
- package/Gamepads/Controllers/webVRController.d.ts +1 -0
- package/Gamepads/Controllers/webVRController.js +1 -0
- package/Gamepads/Controllers/webVRController.js.map +1 -1
- package/Helpers/sceneHelpers.d.ts +1 -0
- package/Helpers/sceneHelpers.js.map +1 -1
- package/Inputs/scene.inputManager.d.ts +1 -1
- package/Inputs/scene.inputManager.js +5 -1
- package/Inputs/scene.inputManager.js.map +1 -1
- package/Layers/effectLayer.d.ts +1 -1
- package/Layers/effectLayer.js +1 -1
- package/Layers/effectLayer.js.map +1 -1
- package/Layers/effectLayerSceneComponent.d.ts +1 -1
- package/Layers/effectLayerSceneComponent.js +7 -3
- package/Layers/effectLayerSceneComponent.js.map +1 -1
- package/Layers/glowLayer.d.ts +1 -1
- package/Layers/glowLayer.js.map +1 -1
- package/Layers/highlightLayer.d.ts +1 -1
- package/Layers/highlightLayer.js +2 -1
- package/Layers/highlightLayer.js.map +1 -1
- package/Layers/layerSceneComponent.d.ts +1 -1
- package/Layers/layerSceneComponent.js +7 -3
- package/Layers/layerSceneComponent.js.map +1 -1
- package/Loading/Plugins/babylonFileLoader.js +1 -1
- package/Loading/Plugins/babylonFileLoader.js.map +1 -1
- package/Materials/Background/backgroundMaterial.d.ts +1 -1
- package/Materials/Background/backgroundMaterial.js.map +1 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js +2 -2
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +2 -2
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.js +2 -2
- package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
- package/Materials/Node/nodeMaterial.js +2 -1
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.d.ts +2 -1
- package/Materials/PBR/pbrBaseMaterial.js +2 -1
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +1 -1
- package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
- package/Materials/PBR/pbrMaterial.d.ts +1 -1
- package/Materials/PBR/pbrMaterial.js +1 -1
- package/Materials/PBR/pbrMaterial.js.map +1 -1
- package/Materials/PBR/pbrMetallicRoughnessMaterial.d.ts +1 -1
- package/Materials/PBR/pbrMetallicRoughnessMaterial.js.map +1 -1
- package/Materials/PBR/pbrSpecularGlossinessMaterial.d.ts +1 -1
- package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
- package/Materials/Textures/Loaders/ddsTextureLoader.js +8 -1
- package/Materials/Textures/Loaders/ddsTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/ktxTextureLoader.js +1 -1
- package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
- package/Materials/Textures/MultiviewRenderTarget.d.ts +1 -1
- package/Materials/Textures/MultiviewRenderTarget.js +1 -1
- package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
- package/Materials/Textures/baseTexture.d.ts +1 -1
- package/Materials/Textures/baseTexture.js.map +1 -1
- package/Materials/Textures/mirrorTexture.d.ts +2 -2
- package/Materials/Textures/mirrorTexture.js +5 -1
- package/Materials/Textures/mirrorTexture.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.d.ts +1 -1
- package/Materials/Textures/multiRenderTarget.js.map +1 -1
- package/Materials/Textures/prePassRenderTarget.d.ts +1 -1
- package/Materials/Textures/prePassRenderTarget.js.map +1 -1
- package/Materials/Textures/refractionTexture.d.ts +1 -1
- package/Materials/Textures/refractionTexture.js +2 -2
- package/Materials/Textures/refractionTexture.js.map +1 -1
- package/Materials/Textures/renderTargetTexture.d.ts +1 -1
- package/Materials/Textures/renderTargetTexture.js.map +1 -1
- package/Materials/Textures/texture.d.ts +1 -1
- package/Materials/Textures/texture.js.map +1 -1
- package/Materials/material.d.ts +1 -1
- package/Materials/material.js +7 -2
- package/Materials/material.js.map +1 -1
- package/Materials/materialHelper.js +3 -0
- package/Materials/materialHelper.js.map +1 -1
- package/Materials/multiMaterial.d.ts +1 -1
- package/Materials/multiMaterial.js +1 -1
- package/Materials/multiMaterial.js.map +1 -1
- package/Materials/pushMaterial.d.ts +1 -1
- package/Materials/pushMaterial.js.map +1 -1
- package/Materials/shaderMaterial.js +7 -3
- package/Materials/shaderMaterial.js.map +1 -1
- package/Materials/shadowDepthWrapper.d.ts +1 -1
- package/Materials/shadowDepthWrapper.js +2 -2
- package/Materials/shadowDepthWrapper.js.map +1 -1
- package/Materials/standardMaterial.d.ts +2 -1
- package/Materials/standardMaterial.js +4 -0
- package/Materials/standardMaterial.js.map +1 -1
- package/Maths/math.vector.d.ts +4 -2
- package/Maths/math.vector.js +30 -28
- package/Maths/math.vector.js.map +1 -1
- package/Meshes/abstractMesh.js +4 -2
- package/Meshes/abstractMesh.js.map +1 -1
- package/Meshes/geometry.d.ts +1 -1
- package/Meshes/geometry.js +7 -3
- package/Meshes/geometry.js.map +1 -1
- package/Meshes/groundMesh.d.ts +1 -1
- package/Meshes/groundMesh.js.map +1 -1
- package/Meshes/polygonMesh.js +2 -2
- package/Meshes/polygonMesh.js.map +1 -1
- package/Meshes/subMesh.js +1 -2
- package/Meshes/subMesh.js.map +1 -1
- package/Meshes/subMesh.project.js +1 -2
- package/Meshes/subMesh.project.js.map +1 -1
- package/Meshes/thinInstanceMesh.js +5 -0
- package/Meshes/thinInstanceMesh.js.map +1 -1
- package/Meshes/trailMesh.d.ts +1 -1
- package/Meshes/trailMesh.js.map +1 -1
- package/Meshes/transformNode.js +40 -13
- package/Meshes/transformNode.js.map +1 -1
- package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.d.ts +5 -0
- package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +13 -2
- package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js.map +1 -1
- package/Misc/assetsManager.d.ts +1 -1
- package/Misc/assetsManager.js +2 -1
- package/Misc/assetsManager.js.map +1 -1
- package/Misc/brdfTextureTools.js +4 -1
- package/Misc/brdfTextureTools.js.map +1 -1
- package/Misc/dds.js +7 -0
- package/Misc/dds.js.map +1 -1
- package/Shaders/ShadersInclude/instancesDeclaration.js +1 -1
- package/Shaders/ShadersInclude/instancesDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js.map +1 -1
- package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js +1 -1
- package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js.map +1 -1
- package/Shaders/color.fragment.js +1 -1
- package/Shaders/color.fragment.js.map +1 -1
- package/Shaders/color.vertex.js +1 -1
- package/Shaders/color.vertex.js.map +1 -1
- package/Shaders/default.fragment.js +1 -1
- package/Shaders/default.fragment.js.map +1 -1
- package/Shaders/default.vertex.js +1 -1
- package/Shaders/default.vertex.js.map +1 -1
- package/Shaders/pbr.vertex.js +1 -1
- package/Shaders/pbr.vertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/instancesDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/instancesDeclaration.js.map +1 -1
- package/Sprites/spriteManager.js +4 -4
- package/Sprites/spriteManager.js.map +1 -1
- package/XR/features/WebXRHandTracking.js +3 -3
- package/XR/features/WebXRHandTracking.js.map +1 -1
- package/XR/webXRDefaultExperience.js +3 -0
- package/XR/webXRDefaultExperience.js.map +1 -1
- package/XR/webXRExperienceHelper.js +3 -2
- package/XR/webXRExperienceHelper.js.map +1 -1
- package/XR/webXRSessionManager.d.ts +1 -0
- package/XR/webXRSessionManager.js +6 -1
- package/XR/webXRSessionManager.js.map +1 -1
- package/assetContainer.d.ts +1 -1
- package/assetContainer.js +4 -0
- package/assetContainer.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"followCamera.js","sourceRoot":"","sources":["../../../sourceES6/core/Cameras/followCamera.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"../types\";\r\nimport { serialize, serializeAsMeshReference } from \"../Misc/decorators\";\r\nimport { Tools } from \"../Misc/tools\";\r\nimport { TargetCamera } from \"./targetCamera\";\r\nimport { Scene } from \"../scene\";\r\nimport { TmpVectors, Vector3 } from \"../Maths/math.vector\";\r\nimport { Node } from \"../node\";\r\nimport { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport { FollowCameraInputsManager } from './followCameraInputsManager';\r\nNode.AddNodeConstructor(\"FollowCamera\", (name, scene) => {\r\n return () => new FollowCamera(name, Vector3.Zero(), scene);\r\n});\r\n\r\nNode.AddNodeConstructor(\"ArcFollowCamera\", (name, scene) => {\r\n return () => new ArcFollowCamera(name, 0, 0, 1.0, null, scene);\r\n});\r\n\r\n/**\r\n * A follow camera takes a mesh as a target and follows it as it moves. Both a free camera version followCamera and\r\n * an arc rotate version arcFollowCamera are available.\r\n * @see https://doc.babylonjs.com/features/cameras#follow-camera\r\n */\r\nexport class FollowCamera extends TargetCamera {\r\n /**\r\n * Distance the follow camera should follow an object at\r\n */\r\n @serialize()\r\n public radius: number = 12;\r\n\r\n /**\r\n * Minimum allowed distance of the camera to the axis of rotation\r\n * (The camera can not get closer).\r\n * This can help limiting how the Camera is able to move in the scene.\r\n */\r\n @serialize()\r\n public lowerRadiusLimit: Nullable<number> = null;\r\n\r\n /**\r\n * Maximum allowed distance of the camera to the axis of rotation\r\n * (The camera can not get further).\r\n * This can help limiting how the Camera is able to move in the scene.\r\n */\r\n @serialize()\r\n public upperRadiusLimit: Nullable<number> = null;\r\n\r\n /**\r\n * Define a rotation offset between the camera and the object it follows\r\n */\r\n @serialize()\r\n public rotationOffset: number = 0;\r\n\r\n /**\r\n * Minimum allowed angle to camera position relative to target object.\r\n * This can help limiting how the Camera is able to move in the scene.\r\n */\r\n @serialize()\r\n public lowerRotationOffsetLimit: Nullable<number> = null;\r\n\r\n /**\r\n * Maximum allowed angle to camera position relative to target object.\r\n * This can help limiting how the Camera is able to move in the scene.\r\n */\r\n @serialize()\r\n public upperRotationOffsetLimit: Nullable<number> = null;\r\n\r\n /**\r\n * Define a height offset between the camera and the object it follows.\r\n * It can help following an object from the top (like a car chasing a plane)\r\n */\r\n @serialize()\r\n public heightOffset: number = 4;\r\n\r\n /**\r\n * Minimum allowed height of camera position relative to target object.\r\n * This can help limiting how the Camera is able to move in the scene.\r\n */\r\n @serialize()\r\n public lowerHeightOffsetLimit: Nullable<number> = null;\r\n\r\n /**\r\n * Maximum allowed height of camera position relative to target object.\r\n * This can help limiting how the Camera is able to move in the scene.\r\n */\r\n @serialize()\r\n public upperHeightOffsetLimit: Nullable<number> = null;\r\n\r\n /**\r\n * Define how fast the camera can accelerate to follow it s target.\r\n */\r\n @serialize()\r\n public cameraAcceleration: number = 0.05;\r\n\r\n /**\r\n * Define the speed limit of the camera following an object.\r\n */\r\n @serialize()\r\n public maxCameraSpeed: number = 20;\r\n\r\n /**\r\n * Define the target of the camera.\r\n */\r\n @serializeAsMeshReference(\"lockedTargetId\")\r\n public lockedTarget: Nullable<AbstractMesh>;\r\n\r\n /**\r\n * Defines the input associated with the camera.\r\n */\r\n public inputs: FollowCameraInputsManager;\r\n\r\n /**\r\n * Instantiates the follow camera.\r\n * @see https://doc.babylonjs.com/features/cameras#follow-camera\r\n * @param name Define the name of the camera in the scene\r\n * @param position Define the position of the camera\r\n * @param scene Define the scene the camera belong to\r\n * @param lockedTarget Define the target of the camera\r\n */\r\n constructor(name: string, position: Vector3, scene: Scene, lockedTarget: Nullable<AbstractMesh> = null) {\r\n super(name, position, scene);\r\n\r\n this.lockedTarget = lockedTarget;\r\n this.inputs = new FollowCameraInputsManager(this);\r\n this.inputs.addKeyboard().addMouseWheel().addPointers();\r\n // Uncomment the following line when the relevant handlers have been implemented.\r\n // this.inputs.addKeyboard().addMouseWheel().addPointers().addVRDeviceOrientation();\r\n }\r\n\r\n private _follow(cameraTarget: AbstractMesh) {\r\n if (!cameraTarget) {\r\n return;\r\n }\r\n\r\n var rotMatrix = TmpVectors.Matrix[0];\r\n cameraTarget.absoluteRotationQuaternion.toRotationMatrix(rotMatrix);\r\n var yRotation = Math.atan2(rotMatrix.m[8], rotMatrix.m[10]);\r\n\r\n var radians = Tools.ToRadians(this.rotationOffset) + yRotation;\r\n var targetPosition = cameraTarget.getAbsolutePosition();\r\n var targetX: number = targetPosition.x + Math.sin(radians) * this.radius;\r\n\r\n var targetZ: number = targetPosition.z + Math.cos(radians) * this.radius;\r\n var dx: number = targetX - this.position.x;\r\n var dy: number = (targetPosition.y + this.heightOffset) - this.position.y;\r\n var dz: number = (targetZ) - this.position.z;\r\n var vx: number = dx * this.cameraAcceleration * 2; //this is set to .05\r\n var vy: number = dy * this.cameraAcceleration;\r\n var vz: number = dz * this.cameraAcceleration * 2;\r\n\r\n if (vx > this.maxCameraSpeed || vx < -this.maxCameraSpeed) {\r\n vx = vx < 1 ? -this.maxCameraSpeed : this.maxCameraSpeed;\r\n }\r\n\r\n if (vy > this.maxCameraSpeed || vy < -this.maxCameraSpeed) {\r\n vy = vy < 1 ? -this.maxCameraSpeed : this.maxCameraSpeed;\r\n }\r\n\r\n if (vz > this.maxCameraSpeed || vz < -this.maxCameraSpeed) {\r\n vz = vz < 1 ? -this.maxCameraSpeed : this.maxCameraSpeed;\r\n }\r\n\r\n this.position = new Vector3(this.position.x + vx, this.position.y + vy, this.position.z + vz);\r\n this.setTarget(targetPosition);\r\n }\r\n\r\n /**\r\n * Attach the input controls to a specific dom element to get the input from.\r\n * @param noPreventDefault Defines whether event caught by the controls should call preventdefault() (https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault)\r\n */\r\n public attachControl(noPreventDefault?: boolean): void;\r\n /**\r\n * Attached controls to the current camera.\r\n * @param ignored defines an ignored parameter kept for backward compatibility. If you want to define the source input element, you can set engine.inputElement before calling camera.attachControl\r\n * @param noPreventDefault Defines whether event caught by the controls should call preventdefault() (https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault)\r\n */\r\n public attachControl(ignored: any, noPreventDefault?: boolean): void {\r\n noPreventDefault = Tools.BackCompatCameraNoPreventDefault(arguments);\r\n this.inputs.attachElement(noPreventDefault);\r\n\r\n this._reset = () => {\r\n };\r\n }\r\n\r\n /**\r\n * Detach the current controls from the specified dom element.\r\n */\r\n public detachControl(): void;\r\n\r\n /**\r\n * Detach the current controls from the specified dom element.\r\n * @param ignored defines an ignored parameter kept for backward compatibility. If you want to define the source input element, you can set engine.inputElement before calling camera.attachControl\r\n */\r\n public detachControl(ignored?: any): void {\r\n this.inputs.detachElement();\r\n\r\n if (this._reset) {\r\n this._reset();\r\n }\r\n }\r\n\r\n /** @hidden */\r\n public _checkInputs(): void {\r\n this.inputs.checkInputs();\r\n this._checkLimits();\r\n super._checkInputs();\r\n if (this.lockedTarget) {\r\n this._follow(this.lockedTarget);\r\n }\r\n }\r\n\r\n private _checkLimits() {\r\n if (this.lowerRadiusLimit !== null && this.radius < this.lowerRadiusLimit) {\r\n this.radius = this.lowerRadiusLimit;\r\n }\r\n if (this.upperRadiusLimit !== null && this.radius > this.upperRadiusLimit) {\r\n this.radius = this.upperRadiusLimit;\r\n }\r\n\r\n if (this.lowerHeightOffsetLimit !== null &&\r\n this.heightOffset < this.lowerHeightOffsetLimit) {\r\n this.heightOffset = this.lowerHeightOffsetLimit;\r\n }\r\n if (this.upperHeightOffsetLimit !== null &&\r\n this.heightOffset > this.upperHeightOffsetLimit) {\r\n this.heightOffset = this.upperHeightOffsetLimit;\r\n }\r\n\r\n if (this.lowerRotationOffsetLimit !== null &&\r\n this.rotationOffset < this.lowerRotationOffsetLimit) {\r\n this.rotationOffset = this.lowerRotationOffsetLimit;\r\n }\r\n if (this.upperRotationOffsetLimit !== null &&\r\n this.rotationOffset > this.upperRotationOffsetLimit) {\r\n this.rotationOffset = this.upperRotationOffsetLimit;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the camera class name.\r\n * @returns the class name\r\n */\r\n public getClassName(): string {\r\n return \"FollowCamera\";\r\n }\r\n}\r\n\r\n/**\r\n * Arc Rotate version of the follow camera.\r\n * It still follows a Defined mesh but in an Arc Rotate Camera fashion.\r\n * @see https://doc.babylonjs.com/features/cameras#follow-camera\r\n */\r\nexport class ArcFollowCamera extends TargetCamera {\r\n\r\n private _cartesianCoordinates: Vector3 = Vector3.Zero();\r\n\r\n /** Define the camera target (the mesh it should follow) */\r\n private _meshTarget: Nullable<AbstractMesh>;\r\n\r\n /**\r\n * Instantiates a new ArcFollowCamera\r\n * @see https://doc.babylonjs.com/features/cameras#follow-camera\r\n * @param name Define the name of the camera\r\n * @param alpha Define the rotation angle of the camera around the longitudinal axis\r\n * @param beta Define the rotation angle of the camera around the elevation axis\r\n * @param radius Define the radius of the camera from its target point\r\n * @param target Define the target of the camera\r\n * @param scene Define the scene the camera belongs to\r\n */\r\n constructor(name: string,\r\n /** The longitudinal angle of the camera */\r\n public alpha: number,\r\n /** The latitudinal angle of the camera */\r\n public beta: number,\r\n /** The radius of the camera from its target */\r\n public radius: number,\r\n /** Define the camera target (the mesh it should follow) */\r\n target: Nullable<AbstractMesh>,\r\n scene: Scene) {\r\n super(name, Vector3.Zero(), scene);\r\n this.setMeshTarget(target);\r\n }\r\n\r\n /**\r\n * Sets the mesh to follow with this camera.\r\n * @param target the target to follow\r\n */\r\n public setMeshTarget(target: Nullable<AbstractMesh>) {\r\n this._meshTarget = target;\r\n this._follow();\r\n }\r\n\r\n private _follow(): void {\r\n if (!this._meshTarget) {\r\n return;\r\n }\r\n this._cartesianCoordinates.x = this.radius * Math.cos(this.alpha) * Math.cos(this.beta);\r\n this._cartesianCoordinates.y = this.radius * Math.sin(this.beta);\r\n this._cartesianCoordinates.z = this.radius * Math.sin(this.alpha) * Math.cos(this.beta);\r\n\r\n var targetPosition = this._meshTarget.getAbsolutePosition();\r\n this.position = targetPosition.add(this._cartesianCoordinates);\r\n this.setTarget(targetPosition);\r\n }\r\n\r\n /** @hidden */\r\n public _checkInputs(): void {\r\n super._checkInputs();\r\n this._follow();\r\n }\r\n\r\n /**\r\n * Returns the class name of the object.\r\n * It is mostly used internally for serialization purposes.\r\n */\r\n public getClassName(): string {\r\n return \"ArcFollowCamera\";\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"followCamera.js","sourceRoot":"","sources":["../../../sourceES6/core/Cameras/followCamera.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"../types\";\r\nimport { serialize, serializeAsMeshReference } from \"../Misc/decorators\";\r\nimport { Tools } from \"../Misc/tools\";\r\nimport { TargetCamera } from \"./targetCamera\";\r\nimport { Scene } from \"../scene\";\r\nimport { TmpVectors, Vector3 } from \"../Maths/math.vector\";\r\nimport { Node } from \"../node\";\r\nimport { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport { FollowCameraInputsManager } from './followCameraInputsManager';\r\nNode.AddNodeConstructor(\"FollowCamera\", (name, scene) => {\r\n return () => new FollowCamera(name, Vector3.Zero(), scene);\r\n});\r\n\r\nNode.AddNodeConstructor(\"ArcFollowCamera\", (name, scene) => {\r\n return () => new ArcFollowCamera(name, 0, 0, 1.0, null, scene);\r\n});\r\n\r\n/**\r\n * A follow camera takes a mesh as a target and follows it as it moves. Both a free camera version followCamera and\r\n * an arc rotate version arcFollowCamera are available.\r\n * @see https://doc.babylonjs.com/features/cameras#follow-camera\r\n */\r\nexport class FollowCamera extends TargetCamera {\r\n /**\r\n * Distance the follow camera should follow an object at\r\n */\r\n @serialize()\r\n public radius: number = 12;\r\n\r\n /**\r\n * Minimum allowed distance of the camera to the axis of rotation\r\n * (The camera can not get closer).\r\n * This can help limiting how the Camera is able to move in the scene.\r\n */\r\n @serialize()\r\n public lowerRadiusLimit: Nullable<number> = null;\r\n\r\n /**\r\n * Maximum allowed distance of the camera to the axis of rotation\r\n * (The camera can not get further).\r\n * This can help limiting how the Camera is able to move in the scene.\r\n */\r\n @serialize()\r\n public upperRadiusLimit: Nullable<number> = null;\r\n\r\n /**\r\n * Define a rotation offset between the camera and the object it follows\r\n */\r\n @serialize()\r\n public rotationOffset: number = 0;\r\n\r\n /**\r\n * Minimum allowed angle to camera position relative to target object.\r\n * This can help limiting how the Camera is able to move in the scene.\r\n */\r\n @serialize()\r\n public lowerRotationOffsetLimit: Nullable<number> = null;\r\n\r\n /**\r\n * Maximum allowed angle to camera position relative to target object.\r\n * This can help limiting how the Camera is able to move in the scene.\r\n */\r\n @serialize()\r\n public upperRotationOffsetLimit: Nullable<number> = null;\r\n\r\n /**\r\n * Define a height offset between the camera and the object it follows.\r\n * It can help following an object from the top (like a car chasing a plane)\r\n */\r\n @serialize()\r\n public heightOffset: number = 4;\r\n\r\n /**\r\n * Minimum allowed height of camera position relative to target object.\r\n * This can help limiting how the Camera is able to move in the scene.\r\n */\r\n @serialize()\r\n public lowerHeightOffsetLimit: Nullable<number> = null;\r\n\r\n /**\r\n * Maximum allowed height of camera position relative to target object.\r\n * This can help limiting how the Camera is able to move in the scene.\r\n */\r\n @serialize()\r\n public upperHeightOffsetLimit: Nullable<number> = null;\r\n\r\n /**\r\n * Define how fast the camera can accelerate to follow it s target.\r\n */\r\n @serialize()\r\n public cameraAcceleration: number = 0.05;\r\n\r\n /**\r\n * Define the speed limit of the camera following an object.\r\n */\r\n @serialize()\r\n public maxCameraSpeed: number = 20;\r\n\r\n /**\r\n * Define the target of the camera.\r\n */\r\n @serializeAsMeshReference(\"lockedTargetId\")\r\n public lockedTarget: Nullable<AbstractMesh>;\r\n\r\n /**\r\n * Defines the input associated with the camera.\r\n */\r\n public inputs: FollowCameraInputsManager;\r\n\r\n /**\r\n * Instantiates the follow camera.\r\n * @see https://doc.babylonjs.com/features/cameras#follow-camera\r\n * @param name Define the name of the camera in the scene\r\n * @param position Define the position of the camera\r\n * @param scene Define the scene the camera belong to\r\n * @param lockedTarget Define the target of the camera\r\n */\r\n constructor(name: string, position: Vector3, scene?: Scene, lockedTarget: Nullable<AbstractMesh> = null) {\r\n super(name, position, scene);\r\n\r\n this.lockedTarget = lockedTarget;\r\n this.inputs = new FollowCameraInputsManager(this);\r\n this.inputs.addKeyboard().addMouseWheel().addPointers();\r\n // Uncomment the following line when the relevant handlers have been implemented.\r\n // this.inputs.addKeyboard().addMouseWheel().addPointers().addVRDeviceOrientation();\r\n }\r\n\r\n private _follow(cameraTarget: AbstractMesh) {\r\n if (!cameraTarget) {\r\n return;\r\n }\r\n\r\n var rotMatrix = TmpVectors.Matrix[0];\r\n cameraTarget.absoluteRotationQuaternion.toRotationMatrix(rotMatrix);\r\n var yRotation = Math.atan2(rotMatrix.m[8], rotMatrix.m[10]);\r\n\r\n var radians = Tools.ToRadians(this.rotationOffset) + yRotation;\r\n var targetPosition = cameraTarget.getAbsolutePosition();\r\n var targetX: number = targetPosition.x + Math.sin(radians) * this.radius;\r\n\r\n var targetZ: number = targetPosition.z + Math.cos(radians) * this.radius;\r\n var dx: number = targetX - this.position.x;\r\n var dy: number = (targetPosition.y + this.heightOffset) - this.position.y;\r\n var dz: number = (targetZ) - this.position.z;\r\n var vx: number = dx * this.cameraAcceleration * 2; //this is set to .05\r\n var vy: number = dy * this.cameraAcceleration;\r\n var vz: number = dz * this.cameraAcceleration * 2;\r\n\r\n if (vx > this.maxCameraSpeed || vx < -this.maxCameraSpeed) {\r\n vx = vx < 1 ? -this.maxCameraSpeed : this.maxCameraSpeed;\r\n }\r\n\r\n if (vy > this.maxCameraSpeed || vy < -this.maxCameraSpeed) {\r\n vy = vy < 1 ? -this.maxCameraSpeed : this.maxCameraSpeed;\r\n }\r\n\r\n if (vz > this.maxCameraSpeed || vz < -this.maxCameraSpeed) {\r\n vz = vz < 1 ? -this.maxCameraSpeed : this.maxCameraSpeed;\r\n }\r\n\r\n this.position = new Vector3(this.position.x + vx, this.position.y + vy, this.position.z + vz);\r\n this.setTarget(targetPosition);\r\n }\r\n\r\n /**\r\n * Attach the input controls to a specific dom element to get the input from.\r\n * @param noPreventDefault Defines whether event caught by the controls should call preventdefault() (https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault)\r\n */\r\n public attachControl(noPreventDefault?: boolean): void;\r\n /**\r\n * Attached controls to the current camera.\r\n * @param ignored defines an ignored parameter kept for backward compatibility. If you want to define the source input element, you can set engine.inputElement before calling camera.attachControl\r\n * @param noPreventDefault Defines whether event caught by the controls should call preventdefault() (https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault)\r\n */\r\n public attachControl(ignored: any, noPreventDefault?: boolean): void {\r\n noPreventDefault = Tools.BackCompatCameraNoPreventDefault(arguments);\r\n this.inputs.attachElement(noPreventDefault);\r\n\r\n this._reset = () => {\r\n };\r\n }\r\n\r\n /**\r\n * Detach the current controls from the specified dom element.\r\n */\r\n public detachControl(): void;\r\n\r\n /**\r\n * Detach the current controls from the specified dom element.\r\n * @param ignored defines an ignored parameter kept for backward compatibility. If you want to define the source input element, you can set engine.inputElement before calling camera.attachControl\r\n */\r\n public detachControl(ignored?: any): void {\r\n this.inputs.detachElement();\r\n\r\n if (this._reset) {\r\n this._reset();\r\n }\r\n }\r\n\r\n /** @hidden */\r\n public _checkInputs(): void {\r\n this.inputs.checkInputs();\r\n this._checkLimits();\r\n super._checkInputs();\r\n if (this.lockedTarget) {\r\n this._follow(this.lockedTarget);\r\n }\r\n }\r\n\r\n private _checkLimits() {\r\n if (this.lowerRadiusLimit !== null && this.radius < this.lowerRadiusLimit) {\r\n this.radius = this.lowerRadiusLimit;\r\n }\r\n if (this.upperRadiusLimit !== null && this.radius > this.upperRadiusLimit) {\r\n this.radius = this.upperRadiusLimit;\r\n }\r\n\r\n if (this.lowerHeightOffsetLimit !== null &&\r\n this.heightOffset < this.lowerHeightOffsetLimit) {\r\n this.heightOffset = this.lowerHeightOffsetLimit;\r\n }\r\n if (this.upperHeightOffsetLimit !== null &&\r\n this.heightOffset > this.upperHeightOffsetLimit) {\r\n this.heightOffset = this.upperHeightOffsetLimit;\r\n }\r\n\r\n if (this.lowerRotationOffsetLimit !== null &&\r\n this.rotationOffset < this.lowerRotationOffsetLimit) {\r\n this.rotationOffset = this.lowerRotationOffsetLimit;\r\n }\r\n if (this.upperRotationOffsetLimit !== null &&\r\n this.rotationOffset > this.upperRotationOffsetLimit) {\r\n this.rotationOffset = this.upperRotationOffsetLimit;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the camera class name.\r\n * @returns the class name\r\n */\r\n public getClassName(): string {\r\n return \"FollowCamera\";\r\n }\r\n}\r\n\r\n/**\r\n * Arc Rotate version of the follow camera.\r\n * It still follows a Defined mesh but in an Arc Rotate Camera fashion.\r\n * @see https://doc.babylonjs.com/features/cameras#follow-camera\r\n */\r\nexport class ArcFollowCamera extends TargetCamera {\r\n\r\n private _cartesianCoordinates: Vector3 = Vector3.Zero();\r\n\r\n /** Define the camera target (the mesh it should follow) */\r\n private _meshTarget: Nullable<AbstractMesh>;\r\n\r\n /**\r\n * Instantiates a new ArcFollowCamera\r\n * @see https://doc.babylonjs.com/features/cameras#follow-camera\r\n * @param name Define the name of the camera\r\n * @param alpha Define the rotation angle of the camera around the longitudinal axis\r\n * @param beta Define the rotation angle of the camera around the elevation axis\r\n * @param radius Define the radius of the camera from its target point\r\n * @param target Define the target of the camera\r\n * @param scene Define the scene the camera belongs to\r\n */\r\n constructor(name: string,\r\n /** The longitudinal angle of the camera */\r\n public alpha: number,\r\n /** The latitudinal angle of the camera */\r\n public beta: number,\r\n /** The radius of the camera from its target */\r\n public radius: number,\r\n /** Define the camera target (the mesh it should follow) */\r\n target: Nullable<AbstractMesh>,\r\n scene: Scene) {\r\n super(name, Vector3.Zero(), scene);\r\n this.setMeshTarget(target);\r\n }\r\n\r\n /**\r\n * Sets the mesh to follow with this camera.\r\n * @param target the target to follow\r\n */\r\n public setMeshTarget(target: Nullable<AbstractMesh>) {\r\n this._meshTarget = target;\r\n this._follow();\r\n }\r\n\r\n private _follow(): void {\r\n if (!this._meshTarget) {\r\n return;\r\n }\r\n this._cartesianCoordinates.x = this.radius * Math.cos(this.alpha) * Math.cos(this.beta);\r\n this._cartesianCoordinates.y = this.radius * Math.sin(this.beta);\r\n this._cartesianCoordinates.z = this.radius * Math.sin(this.alpha) * Math.cos(this.beta);\r\n\r\n var targetPosition = this._meshTarget.getAbsolutePosition();\r\n this.position = targetPosition.add(this._cartesianCoordinates);\r\n this.setTarget(targetPosition);\r\n }\r\n\r\n /** @hidden */\r\n public _checkInputs(): void {\r\n super._checkInputs();\r\n this._follow();\r\n }\r\n\r\n /**\r\n * Returns the class name of the object.\r\n * It is mostly used internally for serialization purposes.\r\n */\r\n public getClassName(): string {\r\n return \"ArcFollowCamera\";\r\n }\r\n}\r\n"]}
|
package/Cameras/freeCamera.d.ts
CHANGED
|
@@ -106,7 +106,7 @@ export declare class FreeCamera extends TargetCamera {
|
|
|
106
106
|
* @param scene Define the scene the camera belongs to
|
|
107
107
|
* @param setActiveOnSceneIfNoneActive Defines whether the camera should be marked as active if not other active cameras have been defined
|
|
108
108
|
*/
|
|
109
|
-
constructor(name: string, position: Vector3, scene
|
|
109
|
+
constructor(name: string, position: Vector3, scene?: Scene, setActiveOnSceneIfNoneActive?: boolean);
|
|
110
110
|
/**
|
|
111
111
|
* Attach the input controls to a specific dom element to get the input from.
|
|
112
112
|
* @param noPreventDefault Defines whether event caught by the controls should call preventdefault() (https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"freeCamera.js","sourceRoot":"","sources":["../../../sourceES6/core/Cameras/freeCamera.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"../types\";\r\nimport { serializeAsVector3, serialize } from \"../Misc/decorators\";\r\nimport { Vector3, Vector2 } from \"../Maths/math.vector\";\r\nimport { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport { Scene } from \"../scene\";\r\nimport { Engine } from \"../Engines/engine\";\r\nimport { TargetCamera } from \"./targetCamera\";\r\nimport { FreeCameraInputsManager } from \"./freeCameraInputsManager\";\r\nimport { FreeCameraMouseInput } from \"../Cameras/Inputs/freeCameraMouseInput\";\r\nimport { FreeCameraKeyboardMoveInput } from \"../Cameras/Inputs/freeCameraKeyboardMoveInput\";\r\nimport { Tools } from '../Misc/tools';\r\n\r\ndeclare type Collider = import(\"../Collisions/collider\").Collider;\r\n\r\n/**\r\n * This represents a free type of camera. It can be useful in First Person Shooter game for instance.\r\n * Please consider using the new UniversalCamera instead as it adds more functionality like the gamepad.\r\n * @see https://doc.babylonjs.com/features/cameras#universal-camera\r\n */\r\nexport class FreeCamera extends TargetCamera {\r\n /**\r\n * Define the collision ellipsoid of the camera.\r\n * This is helpful to simulate a camera body like the player body around the camera\r\n * @see https://doc.babylonjs.com/babylon101/cameras,_mesh_collisions_and_gravity#arcrotatecamera\r\n */\r\n @serializeAsVector3()\r\n public ellipsoid = new Vector3(0.5, 1, 0.5);\r\n\r\n /**\r\n * Define an offset for the position of the ellipsoid around the camera.\r\n * This can be helpful to determine the center of the body near the gravity center of the body\r\n * instead of its head.\r\n */\r\n @serializeAsVector3()\r\n public ellipsoidOffset = new Vector3(0, 0, 0);\r\n\r\n /**\r\n * Enable or disable collisions of the camera with the rest of the scene objects.\r\n */\r\n @serialize()\r\n public checkCollisions = false;\r\n\r\n /**\r\n * Enable or disable gravity on the camera.\r\n */\r\n @serialize()\r\n public applyGravity = false;\r\n\r\n /**\r\n * Define the input manager associated to the camera.\r\n */\r\n public inputs: FreeCameraInputsManager;\r\n\r\n /**\r\n * Gets the input sensibility for a mouse input. (default is 2000.0)\r\n * Higher values reduce sensitivity.\r\n */\r\n public get angularSensibility(): number {\r\n var mouse = <FreeCameraMouseInput>this.inputs.attached[\"mouse\"];\r\n if (mouse) {\r\n return mouse.angularSensibility;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n /**\r\n * Sets the input sensibility for a mouse input. (default is 2000.0)\r\n * Higher values reduce sensitivity.\r\n */\r\n public set angularSensibility(value: number) {\r\n var mouse = <FreeCameraMouseInput>this.inputs.attached[\"mouse\"];\r\n if (mouse) {\r\n mouse.angularSensibility = value;\r\n }\r\n }\r\n\r\n /**\r\n * Gets or Set the list of keyboard keys used to control the forward move of the camera.\r\n */\r\n public get keysUp(): number[] {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n return keyboard.keysUp;\r\n }\r\n\r\n return [];\r\n }\r\n\r\n public set keysUp(value: number[]) {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n keyboard.keysUp = value;\r\n }\r\n }\r\n\r\n /**\r\n * Gets or Set the list of keyboard keys used to control the upward move of the camera.\r\n */\r\n public get keysUpward(): number[] {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n return keyboard.keysUpward;\r\n }\r\n\r\n return [];\r\n }\r\n\r\n public set keysUpward(value: number[]) {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n keyboard.keysUpward = value;\r\n }\r\n }\r\n\r\n /**\r\n * Gets or Set the list of keyboard keys used to control the backward move of the camera.\r\n */\r\n public get keysDown(): number[] {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n return keyboard.keysDown;\r\n }\r\n\r\n return [];\r\n }\r\n\r\n public set keysDown(value: number[]) {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n keyboard.keysDown = value;\r\n }\r\n }\r\n\r\n /**\r\n * Gets or Set the list of keyboard keys used to control the downward move of the camera.\r\n */\r\n public get keysDownward(): number[] {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n return keyboard.keysDownward;\r\n }\r\n\r\n return [];\r\n }\r\n\r\n public set keysDownward(value: number[]) {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n keyboard.keysDownward = value;\r\n }\r\n }\r\n\r\n /**\r\n * Gets or Set the list of keyboard keys used to control the left strafe move of the camera.\r\n */\r\n public get keysLeft(): number[] {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n return keyboard.keysLeft;\r\n }\r\n\r\n return [];\r\n }\r\n\r\n public set keysLeft(value: number[]) {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n keyboard.keysLeft = value;\r\n }\r\n }\r\n\r\n /**\r\n * Gets or Set the list of keyboard keys used to control the right strafe move of the camera.\r\n */\r\n public get keysRight(): number[] {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n return keyboard.keysRight;\r\n }\r\n\r\n return [];\r\n }\r\n\r\n public set keysRight(value: number[]) {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n keyboard.keysRight = value;\r\n }\r\n }\r\n\r\n /**\r\n * Gets or Set the list of keyboard keys used to control the left rotation move of the camera.\r\n */\r\n public get keysRotateLeft(): number[] {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n return keyboard.keysRotateLeft;\r\n }\r\n\r\n return [];\r\n }\r\n\r\n public set keysRotateLeft(value: number[]) {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n keyboard.keysRotateLeft = value;\r\n }\r\n }\r\n\r\n /**\r\n * Gets or Set the list of keyboard keys used to control the right rotation move of the camera.\r\n */\r\n public get keysRotateRight(): number[] {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n return keyboard.keysRotateRight;\r\n }\r\n\r\n return [];\r\n }\r\n\r\n public set keysRotateRight(value: number[]) {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n keyboard.keysRotateRight = value;\r\n }\r\n }\r\n\r\n /**\r\n * Event raised when the camera collide with a mesh in the scene.\r\n */\r\n public onCollide: (collidedMesh: AbstractMesh) => void;\r\n\r\n private _collider: Collider;\r\n private _needMoveForGravity = false;\r\n private _oldPosition = Vector3.Zero();\r\n private _diffPosition = Vector3.Zero();\r\n private _newPosition = Vector3.Zero();\r\n\r\n /** @hidden */\r\n public _localDirection: Vector3;\r\n /** @hidden */\r\n public _transformedDirection: Vector3;\r\n\r\n /**\r\n * Instantiates a Free Camera.\r\n * This represents a free type of camera. It can be useful in First Person Shooter game for instance.\r\n * Please consider using the new UniversalCamera instead as it adds more functionality like touch to this camera.\r\n * @see https://doc.babylonjs.com/features/cameras#universal-camera\r\n * @param name Define the name of the camera in the scene\r\n * @param position Define the start position of the camera in the scene\r\n * @param scene Define the scene the camera belongs to\r\n * @param setActiveOnSceneIfNoneActive Defines whether the camera should be marked as active if not other active cameras have been defined\r\n */\r\n constructor(name: string, position: Vector3, scene: Scene, setActiveOnSceneIfNoneActive = true) {\r\n super(name, position, scene, setActiveOnSceneIfNoneActive);\r\n this.inputs = new FreeCameraInputsManager(this);\r\n this.inputs.addKeyboard().addMouse();\r\n }\r\n\r\n /**\r\n * Attach the input controls to a specific dom element to get the input from.\r\n * @param noPreventDefault Defines whether event caught by the controls should call preventdefault() (https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault)\r\n */\r\n public attachControl(noPreventDefault?: boolean): void;\r\n /**\r\n * Attach the input controls to a specific dom element to get the input from.\r\n * @param ignored defines an ignored parameter kept for backward compatibility. If you want to define the source input element, you can set engine.inputElement before calling camera.attachControl\r\n * @param noPreventDefault Defines whether event caught by the controls should call preventdefault() (https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault)\r\n * BACK COMPAT SIGNATURE ONLY.\r\n */\r\n public attachControl(ignored: any, noPreventDefault?: boolean): void;\r\n /**\r\n * Attached controls to the current camera.\r\n * @param ignored defines an ignored parameter kept for backward compatibility. If you want to define the source input element, you can set engine.inputElement before calling camera.attachControl\r\n * @param noPreventDefault Defines whether event caught by the controls should call preventdefault() (https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault)\r\n */\r\n public attachControl(ignored?: any, noPreventDefault?: boolean): void {\r\n noPreventDefault = Tools.BackCompatCameraNoPreventDefault(arguments);\r\n this.inputs.attachElement(noPreventDefault);\r\n }\r\n\r\n /**\r\n * Detach the current controls from the specified dom element.\r\n */\r\n public detachControl(): void;\r\n /**\r\n * Detach the current controls from the specified dom element.\r\n * @param ignored defines an ignored parameter kept for backward compatibility. If you want to define the source input element, you can set engine.inputElement before calling camera.attachControl\r\n */\r\n public detachControl(ignored: any): void;\r\n /**\r\n * Detach the current controls from the specified dom element.\r\n * @param ignored defines an ignored parameter kept for backward compatibility. If you want to define the source input element, you can set engine.inputElement before calling camera.attachControl\r\n */\r\n public detachControl(ignored?: any): void {\r\n this.inputs.detachElement();\r\n\r\n this.cameraDirection = new Vector3(0, 0, 0);\r\n this.cameraRotation = new Vector2(0, 0);\r\n }\r\n\r\n // Collisions\r\n private _collisionMask = -1;\r\n\r\n /**\r\n * Define a collision mask to limit the list of object the camera can collide with\r\n */\r\n public get collisionMask(): number {\r\n return this._collisionMask;\r\n }\r\n\r\n public set collisionMask(mask: number) {\r\n this._collisionMask = !isNaN(mask) ? mask : -1;\r\n }\r\n\r\n /** @hidden */\r\n public _collideWithWorld(displacement: Vector3): void {\r\n var globalPosition: Vector3;\r\n\r\n if (this.parent) {\r\n globalPosition = Vector3.TransformCoordinates(this.position, this.parent.getWorldMatrix());\r\n } else {\r\n globalPosition = this.position;\r\n }\r\n\r\n globalPosition.subtractFromFloatsToRef(0, this.ellipsoid.y, 0, this._oldPosition);\r\n this._oldPosition.addInPlace(this.ellipsoidOffset);\r\n\r\n let coordinator = this.getScene().collisionCoordinator;\r\n if (!this._collider) {\r\n this._collider = coordinator.createCollider();\r\n }\r\n\r\n this._collider._radius = this.ellipsoid;\r\n this._collider.collisionMask = this._collisionMask;\r\n\r\n //no need for clone, as long as gravity is not on.\r\n var actualDisplacement = displacement;\r\n\r\n //add gravity to the direction to prevent the dual-collision checking\r\n if (this.applyGravity) {\r\n //this prevents mending with cameraDirection, a global variable of the free camera class.\r\n actualDisplacement = displacement.add(this.getScene().gravity);\r\n }\r\n\r\n coordinator.getNewPosition(this._oldPosition, actualDisplacement, this._collider, 3, null, this._onCollisionPositionChange, this.uniqueId);\r\n\r\n }\r\n\r\n private _onCollisionPositionChange = (collisionId: number, newPosition: Vector3, collidedMesh: Nullable<AbstractMesh> = null) => {\r\n\r\n var updatePosition = (newPos: Vector3) => {\r\n this._newPosition.copyFrom(newPos);\r\n\r\n this._newPosition.subtractToRef(this._oldPosition, this._diffPosition);\r\n\r\n if (this._diffPosition.length() > Engine.CollisionsEpsilon) {\r\n this.position.addInPlace(this._diffPosition);\r\n if (this.onCollide && collidedMesh) {\r\n this.onCollide(collidedMesh);\r\n }\r\n }\r\n };\r\n\r\n updatePosition(newPosition);\r\n }\r\n\r\n /** @hidden */\r\n public _checkInputs(): void {\r\n if (!this._localDirection) {\r\n this._localDirection = Vector3.Zero();\r\n this._transformedDirection = Vector3.Zero();\r\n }\r\n\r\n this.inputs.checkInputs();\r\n\r\n super._checkInputs();\r\n }\r\n\r\n /** @hidden */\r\n public _decideIfNeedsToMove(): boolean {\r\n return this._needMoveForGravity || Math.abs(this.cameraDirection.x) > 0 || Math.abs(this.cameraDirection.y) > 0 || Math.abs(this.cameraDirection.z) > 0;\r\n }\r\n\r\n /** @hidden */\r\n public _updatePosition(): void {\r\n if (this.checkCollisions && this.getScene().collisionsEnabled) {\r\n this._collideWithWorld(this.cameraDirection);\r\n } else {\r\n super._updatePosition();\r\n }\r\n }\r\n\r\n /**\r\n * Destroy the camera and release the current resources hold by it.\r\n */\r\n public dispose(): void {\r\n this.inputs.clear();\r\n super.dispose();\r\n }\r\n\r\n /**\r\n * Gets the current object class name.\r\n * @return the class name\r\n */\r\n public getClassName(): string {\r\n return \"FreeCamera\";\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"freeCamera.js","sourceRoot":"","sources":["../../../sourceES6/core/Cameras/freeCamera.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"../types\";\r\nimport { serializeAsVector3, serialize } from \"../Misc/decorators\";\r\nimport { Vector3, Vector2 } from \"../Maths/math.vector\";\r\nimport { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport { Scene } from \"../scene\";\r\nimport { Engine } from \"../Engines/engine\";\r\nimport { TargetCamera } from \"./targetCamera\";\r\nimport { FreeCameraInputsManager } from \"./freeCameraInputsManager\";\r\nimport { FreeCameraMouseInput } from \"../Cameras/Inputs/freeCameraMouseInput\";\r\nimport { FreeCameraKeyboardMoveInput } from \"../Cameras/Inputs/freeCameraKeyboardMoveInput\";\r\nimport { Tools } from '../Misc/tools';\r\n\r\ndeclare type Collider = import(\"../Collisions/collider\").Collider;\r\n\r\n/**\r\n * This represents a free type of camera. It can be useful in First Person Shooter game for instance.\r\n * Please consider using the new UniversalCamera instead as it adds more functionality like the gamepad.\r\n * @see https://doc.babylonjs.com/features/cameras#universal-camera\r\n */\r\nexport class FreeCamera extends TargetCamera {\r\n /**\r\n * Define the collision ellipsoid of the camera.\r\n * This is helpful to simulate a camera body like the player body around the camera\r\n * @see https://doc.babylonjs.com/babylon101/cameras,_mesh_collisions_and_gravity#arcrotatecamera\r\n */\r\n @serializeAsVector3()\r\n public ellipsoid = new Vector3(0.5, 1, 0.5);\r\n\r\n /**\r\n * Define an offset for the position of the ellipsoid around the camera.\r\n * This can be helpful to determine the center of the body near the gravity center of the body\r\n * instead of its head.\r\n */\r\n @serializeAsVector3()\r\n public ellipsoidOffset = new Vector3(0, 0, 0);\r\n\r\n /**\r\n * Enable or disable collisions of the camera with the rest of the scene objects.\r\n */\r\n @serialize()\r\n public checkCollisions = false;\r\n\r\n /**\r\n * Enable or disable gravity on the camera.\r\n */\r\n @serialize()\r\n public applyGravity = false;\r\n\r\n /**\r\n * Define the input manager associated to the camera.\r\n */\r\n public inputs: FreeCameraInputsManager;\r\n\r\n /**\r\n * Gets the input sensibility for a mouse input. (default is 2000.0)\r\n * Higher values reduce sensitivity.\r\n */\r\n public get angularSensibility(): number {\r\n var mouse = <FreeCameraMouseInput>this.inputs.attached[\"mouse\"];\r\n if (mouse) {\r\n return mouse.angularSensibility;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n /**\r\n * Sets the input sensibility for a mouse input. (default is 2000.0)\r\n * Higher values reduce sensitivity.\r\n */\r\n public set angularSensibility(value: number) {\r\n var mouse = <FreeCameraMouseInput>this.inputs.attached[\"mouse\"];\r\n if (mouse) {\r\n mouse.angularSensibility = value;\r\n }\r\n }\r\n\r\n /**\r\n * Gets or Set the list of keyboard keys used to control the forward move of the camera.\r\n */\r\n public get keysUp(): number[] {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n return keyboard.keysUp;\r\n }\r\n\r\n return [];\r\n }\r\n\r\n public set keysUp(value: number[]) {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n keyboard.keysUp = value;\r\n }\r\n }\r\n\r\n /**\r\n * Gets or Set the list of keyboard keys used to control the upward move of the camera.\r\n */\r\n public get keysUpward(): number[] {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n return keyboard.keysUpward;\r\n }\r\n\r\n return [];\r\n }\r\n\r\n public set keysUpward(value: number[]) {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n keyboard.keysUpward = value;\r\n }\r\n }\r\n\r\n /**\r\n * Gets or Set the list of keyboard keys used to control the backward move of the camera.\r\n */\r\n public get keysDown(): number[] {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n return keyboard.keysDown;\r\n }\r\n\r\n return [];\r\n }\r\n\r\n public set keysDown(value: number[]) {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n keyboard.keysDown = value;\r\n }\r\n }\r\n\r\n /**\r\n * Gets or Set the list of keyboard keys used to control the downward move of the camera.\r\n */\r\n public get keysDownward(): number[] {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n return keyboard.keysDownward;\r\n }\r\n\r\n return [];\r\n }\r\n\r\n public set keysDownward(value: number[]) {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n keyboard.keysDownward = value;\r\n }\r\n }\r\n\r\n /**\r\n * Gets or Set the list of keyboard keys used to control the left strafe move of the camera.\r\n */\r\n public get keysLeft(): number[] {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n return keyboard.keysLeft;\r\n }\r\n\r\n return [];\r\n }\r\n\r\n public set keysLeft(value: number[]) {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n keyboard.keysLeft = value;\r\n }\r\n }\r\n\r\n /**\r\n * Gets or Set the list of keyboard keys used to control the right strafe move of the camera.\r\n */\r\n public get keysRight(): number[] {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n return keyboard.keysRight;\r\n }\r\n\r\n return [];\r\n }\r\n\r\n public set keysRight(value: number[]) {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n keyboard.keysRight = value;\r\n }\r\n }\r\n\r\n /**\r\n * Gets or Set the list of keyboard keys used to control the left rotation move of the camera.\r\n */\r\n public get keysRotateLeft(): number[] {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n return keyboard.keysRotateLeft;\r\n }\r\n\r\n return [];\r\n }\r\n\r\n public set keysRotateLeft(value: number[]) {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n keyboard.keysRotateLeft = value;\r\n }\r\n }\r\n\r\n /**\r\n * Gets or Set the list of keyboard keys used to control the right rotation move of the camera.\r\n */\r\n public get keysRotateRight(): number[] {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n return keyboard.keysRotateRight;\r\n }\r\n\r\n return [];\r\n }\r\n\r\n public set keysRotateRight(value: number[]) {\r\n var keyboard = <FreeCameraKeyboardMoveInput>this.inputs.attached[\"keyboard\"];\r\n if (keyboard) {\r\n keyboard.keysRotateRight = value;\r\n }\r\n }\r\n\r\n /**\r\n * Event raised when the camera collide with a mesh in the scene.\r\n */\r\n public onCollide: (collidedMesh: AbstractMesh) => void;\r\n\r\n private _collider: Collider;\r\n private _needMoveForGravity = false;\r\n private _oldPosition = Vector3.Zero();\r\n private _diffPosition = Vector3.Zero();\r\n private _newPosition = Vector3.Zero();\r\n\r\n /** @hidden */\r\n public _localDirection: Vector3;\r\n /** @hidden */\r\n public _transformedDirection: Vector3;\r\n\r\n /**\r\n * Instantiates a Free Camera.\r\n * This represents a free type of camera. It can be useful in First Person Shooter game for instance.\r\n * Please consider using the new UniversalCamera instead as it adds more functionality like touch to this camera.\r\n * @see https://doc.babylonjs.com/features/cameras#universal-camera\r\n * @param name Define the name of the camera in the scene\r\n * @param position Define the start position of the camera in the scene\r\n * @param scene Define the scene the camera belongs to\r\n * @param setActiveOnSceneIfNoneActive Defines whether the camera should be marked as active if not other active cameras have been defined\r\n */\r\n constructor(name: string, position: Vector3, scene?: Scene, setActiveOnSceneIfNoneActive = true) {\r\n super(name, position, scene, setActiveOnSceneIfNoneActive);\r\n this.inputs = new FreeCameraInputsManager(this);\r\n this.inputs.addKeyboard().addMouse();\r\n }\r\n\r\n /**\r\n * Attach the input controls to a specific dom element to get the input from.\r\n * @param noPreventDefault Defines whether event caught by the controls should call preventdefault() (https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault)\r\n */\r\n public attachControl(noPreventDefault?: boolean): void;\r\n /**\r\n * Attach the input controls to a specific dom element to get the input from.\r\n * @param ignored defines an ignored parameter kept for backward compatibility. If you want to define the source input element, you can set engine.inputElement before calling camera.attachControl\r\n * @param noPreventDefault Defines whether event caught by the controls should call preventdefault() (https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault)\r\n * BACK COMPAT SIGNATURE ONLY.\r\n */\r\n public attachControl(ignored: any, noPreventDefault?: boolean): void;\r\n /**\r\n * Attached controls to the current camera.\r\n * @param ignored defines an ignored parameter kept for backward compatibility. If you want to define the source input element, you can set engine.inputElement before calling camera.attachControl\r\n * @param noPreventDefault Defines whether event caught by the controls should call preventdefault() (https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault)\r\n */\r\n public attachControl(ignored?: any, noPreventDefault?: boolean): void {\r\n noPreventDefault = Tools.BackCompatCameraNoPreventDefault(arguments);\r\n this.inputs.attachElement(noPreventDefault);\r\n }\r\n\r\n /**\r\n * Detach the current controls from the specified dom element.\r\n */\r\n public detachControl(): void;\r\n /**\r\n * Detach the current controls from the specified dom element.\r\n * @param ignored defines an ignored parameter kept for backward compatibility. If you want to define the source input element, you can set engine.inputElement before calling camera.attachControl\r\n */\r\n public detachControl(ignored: any): void;\r\n /**\r\n * Detach the current controls from the specified dom element.\r\n * @param ignored defines an ignored parameter kept for backward compatibility. If you want to define the source input element, you can set engine.inputElement before calling camera.attachControl\r\n */\r\n public detachControl(ignored?: any): void {\r\n this.inputs.detachElement();\r\n\r\n this.cameraDirection = new Vector3(0, 0, 0);\r\n this.cameraRotation = new Vector2(0, 0);\r\n }\r\n\r\n // Collisions\r\n private _collisionMask = -1;\r\n\r\n /**\r\n * Define a collision mask to limit the list of object the camera can collide with\r\n */\r\n public get collisionMask(): number {\r\n return this._collisionMask;\r\n }\r\n\r\n public set collisionMask(mask: number) {\r\n this._collisionMask = !isNaN(mask) ? mask : -1;\r\n }\r\n\r\n /** @hidden */\r\n public _collideWithWorld(displacement: Vector3): void {\r\n var globalPosition: Vector3;\r\n\r\n if (this.parent) {\r\n globalPosition = Vector3.TransformCoordinates(this.position, this.parent.getWorldMatrix());\r\n } else {\r\n globalPosition = this.position;\r\n }\r\n\r\n globalPosition.subtractFromFloatsToRef(0, this.ellipsoid.y, 0, this._oldPosition);\r\n this._oldPosition.addInPlace(this.ellipsoidOffset);\r\n\r\n let coordinator = this.getScene().collisionCoordinator;\r\n if (!this._collider) {\r\n this._collider = coordinator.createCollider();\r\n }\r\n\r\n this._collider._radius = this.ellipsoid;\r\n this._collider.collisionMask = this._collisionMask;\r\n\r\n //no need for clone, as long as gravity is not on.\r\n var actualDisplacement = displacement;\r\n\r\n //add gravity to the direction to prevent the dual-collision checking\r\n if (this.applyGravity) {\r\n //this prevents mending with cameraDirection, a global variable of the free camera class.\r\n actualDisplacement = displacement.add(this.getScene().gravity);\r\n }\r\n\r\n coordinator.getNewPosition(this._oldPosition, actualDisplacement, this._collider, 3, null, this._onCollisionPositionChange, this.uniqueId);\r\n\r\n }\r\n\r\n private _onCollisionPositionChange = (collisionId: number, newPosition: Vector3, collidedMesh: Nullable<AbstractMesh> = null) => {\r\n\r\n var updatePosition = (newPos: Vector3) => {\r\n this._newPosition.copyFrom(newPos);\r\n\r\n this._newPosition.subtractToRef(this._oldPosition, this._diffPosition);\r\n\r\n if (this._diffPosition.length() > Engine.CollisionsEpsilon) {\r\n this.position.addInPlace(this._diffPosition);\r\n if (this.onCollide && collidedMesh) {\r\n this.onCollide(collidedMesh);\r\n }\r\n }\r\n };\r\n\r\n updatePosition(newPosition);\r\n }\r\n\r\n /** @hidden */\r\n public _checkInputs(): void {\r\n if (!this._localDirection) {\r\n this._localDirection = Vector3.Zero();\r\n this._transformedDirection = Vector3.Zero();\r\n }\r\n\r\n this.inputs.checkInputs();\r\n\r\n super._checkInputs();\r\n }\r\n\r\n /** @hidden */\r\n public _decideIfNeedsToMove(): boolean {\r\n return this._needMoveForGravity || Math.abs(this.cameraDirection.x) > 0 || Math.abs(this.cameraDirection.y) > 0 || Math.abs(this.cameraDirection.z) > 0;\r\n }\r\n\r\n /** @hidden */\r\n public _updatePosition(): void {\r\n if (this.checkCollisions && this.getScene().collisionsEnabled) {\r\n this._collideWithWorld(this.cameraDirection);\r\n } else {\r\n super._updatePosition();\r\n }\r\n }\r\n\r\n /**\r\n * Destroy the camera and release the current resources hold by it.\r\n */\r\n public dispose(): void {\r\n this.inputs.clear();\r\n super.dispose();\r\n }\r\n\r\n /**\r\n * Gets the current object class name.\r\n * @return the class name\r\n */\r\n public getClassName(): string {\r\n return \"FreeCamera\";\r\n }\r\n}\r\n"]}
|
|
@@ -16,7 +16,7 @@ export declare class GamepadCamera extends UniversalCamera {
|
|
|
16
16
|
* @param position Define the start position of the camera in the scene
|
|
17
17
|
* @param scene Define the scene the camera belongs to
|
|
18
18
|
*/
|
|
19
|
-
constructor(name: string, position: Vector3, scene
|
|
19
|
+
constructor(name: string, position: Vector3, scene?: Scene);
|
|
20
20
|
/**
|
|
21
21
|
* Gets the current object class name.
|
|
22
22
|
* @return the class name
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gamepadCamera.js","sourceRoot":"","sources":["../../../sourceES6/core/Cameras/gamepadCamera.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,UAAC,IAAI,EAAE,KAAK;IACjD,OAAO,cAAM,OAAA,IAAI,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,EAA9C,CAA8C,CAAC;AAChE,CAAC,CAAC,CAAC;AAEH;;;;GAIG;AACH;IAAmC,iCAAe;IAC9C;;;;;;;;OAQG;IACH,uBAAY,IAAY,EAAE,QAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"gamepadCamera.js","sourceRoot":"","sources":["../../../sourceES6/core/Cameras/gamepadCamera.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,UAAC,IAAI,EAAE,KAAK;IACjD,OAAO,cAAM,OAAA,IAAI,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,EAA9C,CAA8C,CAAC;AAChE,CAAC,CAAC,CAAC;AAEH;;;;GAIG;AACH;IAAmC,iCAAe;IAC9C;;;;;;;;OAQG;IACH,uBAAY,IAAY,EAAE,QAAiB,EAAE,KAAa;eACtD,kBAAM,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;IAChC,CAAC;IAED;;;OAGG;IACI,oCAAY,GAAnB;QACI,OAAO,eAAe,CAAC;IAC3B,CAAC;IACL,oBAAC;AAAD,CAAC,AArBD,CAAmC,eAAe,GAqBjD","sourcesContent":["import { UniversalCamera } from \"./universalCamera\";\r\nimport { Scene } from \"../scene\";\r\nimport { Vector3 } from \"../Maths/math.vector\";\r\nimport { Node } from \"../node\";\r\nNode.AddNodeConstructor(\"GamepadCamera\", (name, scene) => {\r\n return () => new GamepadCamera(name, Vector3.Zero(), scene);\r\n});\r\n\r\n/**\r\n * This represents a FPS type of camera. This is only here for back compat purpose.\r\n * Please use the UniversalCamera instead as both are identical.\r\n * @see https://doc.babylonjs.com/features/cameras#universal-camera\r\n */\r\nexport class GamepadCamera extends UniversalCamera {\r\n /**\r\n * Instantiates a new Gamepad Camera\r\n * This represents a FPS type of camera. This is only here for back compat purpose.\r\n * Please use the UniversalCamera instead as both are identical.\r\n * @see https://doc.babylonjs.com/features/cameras#universal-camera\r\n * @param name Define the name of the camera in the scene\r\n * @param position Define the start position of the camera in the scene\r\n * @param scene Define the scene the camera belongs to\r\n */\r\n constructor(name: string, position: Vector3, scene?: Scene) {\r\n super(name, position, scene);\r\n }\r\n\r\n /**\r\n * Gets the current object class name.\r\n * @return the class name\r\n */\r\n public getClassName(): string {\r\n return \"GamepadCamera\";\r\n }\r\n}\r\n"]}
|
|
@@ -86,7 +86,7 @@ export declare class TargetCamera extends Camera {
|
|
|
86
86
|
* @param scene Defines the scene the camera belongs to
|
|
87
87
|
* @param setActiveOnSceneIfNoneActive Defines whether the camera should be marked as active if not other active cameras have been defined
|
|
88
88
|
*/
|
|
89
|
-
constructor(name: string, position: Vector3, scene
|
|
89
|
+
constructor(name: string, position: Vector3, scene?: Scene, setActiveOnSceneIfNoneActive?: boolean);
|
|
90
90
|
/**
|
|
91
91
|
* Gets the position in front of the camera at a given distance.
|
|
92
92
|
* @param distance The distance from the camera we want the position to be
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"targetCamera.js","sourceRoot":"","sources":["../../../sourceES6/core/Cameras/targetCamera.ts"],"names":[],"mappings":"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","sourcesContent":["import { serialize, serializeAsVector3, serializeAsMeshReference } from \"../Misc/decorators\";\nimport { Nullable } from \"../types\";\nimport { Camera } from \"./camera\";\nimport { Scene } from \"../scene\";\nimport { Quaternion, Matrix, Vector3, Vector2, TmpVectors } from \"../Maths/math.vector\";\nimport { Epsilon } from '../Maths/math.constants';\nimport { Axis } from '../Maths/math.axis';\n/**\n * A target camera takes a mesh or position as a target and continues to look at it while it moves.\n * This is the base of the follow, arc rotate cameras and Free camera\n * @see https://doc.babylonjs.com/features/cameras\n */\nexport class TargetCamera extends Camera {\n private static _RigCamTransformMatrix = new Matrix();\n private static _TargetTransformMatrix = new Matrix();\n private static _TargetFocalPoint = new Vector3();\n\n private _tmpUpVector = Vector3.Zero();\n private _tmpTargetVector = Vector3.Zero();\n\n /**\n * Define the current direction the camera is moving to\n */\n public cameraDirection = new Vector3(0, 0, 0);\n /**\n * Define the current rotation the camera is rotating to\n */\n public cameraRotation = new Vector2(0, 0);\n\n /** Gets or sets a boolean indicating that the scaling of the parent hierarchy will not be taken in account by the camera */\n public ignoreParentScaling = false;\n\n /**\n * When set, the up vector of the camera will be updated by the rotation of the camera\n */\n public updateUpVectorFromRotation = false;\n private _tmpQuaternion = new Quaternion();\n\n /**\n * Define the current rotation of the camera\n */\n @serializeAsVector3()\n public rotation = new Vector3(0, 0, 0);\n\n /**\n * Define the current rotation of the camera as a quaternion to prevent Gimbal lock\n */\n public rotationQuaternion: Quaternion;\n\n /**\n * Define the current speed of the camera\n */\n @serialize()\n public speed = 2.0;\n\n /**\n * Add constraint to the camera to prevent it to move freely in all directions and\n * around all axis.\n */\n public noRotationConstraint = false;\n\n /**\n * Reverses mouselook direction to 'natural' panning as opposed to traditional direct\n * panning\n */\n public invertRotation = false;\n\n /**\n * Speed multiplier for inverse camera panning\n */\n public inverseRotationSpeed = 0.2;\n\n /**\n * Define the current target of the camera as an object or a position.\n */\n @serializeAsMeshReference(\"lockedTargetId\")\n public lockedTarget: any = null;\n\n /** @hidden */\n public _currentTarget = Vector3.Zero();\n /** @hidden */\n public _initialFocalDistance = 1;\n /** @hidden */\n public _viewMatrix = Matrix.Zero();\n /** @hidden */\n public _camMatrix = Matrix.Zero();\n /** @hidden */\n public _cameraTransformMatrix = Matrix.Zero();\n /** @hidden */\n public _cameraRotationMatrix = Matrix.Zero();\n\n /** @hidden */\n public _referencePoint = new Vector3(0, 0, 1);\n /** @hidden */\n public _transformedReferencePoint = Vector3.Zero();\n\n /** @hidden */\n public _reset: () => void;\n\n private _defaultUp = Vector3.Up();\n\n /**\n * Instantiates a target camera that takes a mesh or position as a target and continues to look at it while it moves.\n * This is the base of the follow, arc rotate cameras and Free camera\n * @see https://doc.babylonjs.com/features/cameras\n * @param name Defines the name of the camera in the scene\n * @param position Defines the start position of the camera in the scene\n * @param scene Defines the scene the camera belongs to\n * @param setActiveOnSceneIfNoneActive Defines whether the camera should be marked as active if not other active cameras have been defined\n */\n constructor(name: string, position: Vector3, scene: Scene, setActiveOnSceneIfNoneActive = true) {\n super(name, position, scene, setActiveOnSceneIfNoneActive);\n }\n\n /**\n * Gets the position in front of the camera at a given distance.\n * @param distance The distance from the camera we want the position to be\n * @returns the position\n */\n public getFrontPosition(distance: number): Vector3 {\n this.getWorldMatrix();\n var direction = this.getTarget().subtract(this.position);\n direction.normalize();\n direction.scaleInPlace(distance);\n return this.globalPosition.add(direction);\n }\n\n /** @hidden */\n public _getLockedTargetPosition(): Nullable<Vector3> {\n if (!this.lockedTarget) {\n return null;\n }\n\n if (this.lockedTarget.absolutePosition) {\n this.lockedTarget.computeWorldMatrix();\n }\n\n return this.lockedTarget.absolutePosition || this.lockedTarget;\n }\n\n private _storedPosition: Vector3;\n private _storedRotation: Vector3;\n private _storedRotationQuaternion: Quaternion;\n\n /**\n * Store current camera state of the camera (fov, position, rotation, etc..)\n * @returns the camera\n */\n public storeState(): Camera {\n this._storedPosition = this.position.clone();\n this._storedRotation = this.rotation.clone();\n if (this.rotationQuaternion) {\n this._storedRotationQuaternion = this.rotationQuaternion.clone();\n }\n\n return super.storeState();\n }\n\n /**\n * Restored camera state. You must call storeState() first\n * @returns whether it was successful or not\n * @hidden\n */\n public _restoreStateValues(): boolean {\n if (!super._restoreStateValues()) {\n return false;\n }\n\n this.position = this._storedPosition.clone();\n this.rotation = this._storedRotation.clone();\n\n if (this.rotationQuaternion) {\n this.rotationQuaternion = this._storedRotationQuaternion.clone();\n }\n\n this.cameraDirection.copyFromFloats(0, 0, 0);\n this.cameraRotation.copyFromFloats(0, 0);\n\n return true;\n }\n\n /** @hidden */\n public _initCache() {\n super._initCache();\n this._cache.lockedTarget = new Vector3(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\n this._cache.rotation = new Vector3(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\n this._cache.rotationQuaternion = new Quaternion(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\n }\n\n /** @hidden */\n public _updateCache(ignoreParentClass?: boolean): void {\n if (!ignoreParentClass) {\n super._updateCache();\n }\n\n var lockedTargetPosition = this._getLockedTargetPosition();\n if (!lockedTargetPosition) {\n this._cache.lockedTarget = null;\n }\n else {\n if (!this._cache.lockedTarget) {\n this._cache.lockedTarget = lockedTargetPosition.clone();\n }\n else {\n this._cache.lockedTarget.copyFrom(lockedTargetPosition);\n }\n }\n\n this._cache.rotation.copyFrom(this.rotation);\n if (this.rotationQuaternion) {\n this._cache.rotationQuaternion.copyFrom(this.rotationQuaternion);\n }\n }\n\n // Synchronized\n /** @hidden */\n public _isSynchronizedViewMatrix(): boolean {\n if (!super._isSynchronizedViewMatrix()) {\n return false;\n }\n\n var lockedTargetPosition = this._getLockedTargetPosition();\n\n return (this._cache.lockedTarget ? this._cache.lockedTarget.equals(lockedTargetPosition) : !lockedTargetPosition)\n && (this.rotationQuaternion ? this.rotationQuaternion.equals(this._cache.rotationQuaternion) : this._cache.rotation.equals(this.rotation));\n }\n\n // Methods\n /** @hidden */\n public _computeLocalCameraSpeed(): number {\n var engine = this.getEngine();\n return this.speed * Math.sqrt((engine.getDeltaTime() / (engine.getFps() * 100.0)));\n }\n\n // Target\n\n /**\n * Defines the target the camera should look at.\n * @param target Defines the new target as a Vector\n */\n public setTarget(target: Vector3): void {\n this.upVector.normalize();\n\n this._initialFocalDistance = target.subtract(this.position).length();\n\n if (this.position.z === target.z) {\n this.position.z += Epsilon;\n }\n\n this._referencePoint.normalize().scaleInPlace(this._initialFocalDistance);\n\n Matrix.LookAtLHToRef(this.position, target, this._defaultUp, this._camMatrix);\n this._camMatrix.invert();\n\n this.rotation.x = Math.atan(this._camMatrix.m[6] / this._camMatrix.m[10]);\n\n var vDir = target.subtract(this.position);\n\n if (vDir.x >= 0.0) {\n this.rotation.y = (-Math.atan(vDir.z / vDir.x) + Math.PI / 2.0);\n } else {\n this.rotation.y = (-Math.atan(vDir.z / vDir.x) - Math.PI / 2.0);\n }\n\n this.rotation.z = 0;\n\n if (isNaN(this.rotation.x)) {\n this.rotation.x = 0;\n }\n\n if (isNaN(this.rotation.y)) {\n this.rotation.y = 0;\n }\n\n if (isNaN(this.rotation.z)) {\n this.rotation.z = 0;\n }\n\n if (this.rotationQuaternion) {\n Quaternion.RotationYawPitchRollToRef(this.rotation.y, this.rotation.x, this.rotation.z, this.rotationQuaternion);\n }\n }\n\n /**\n * Defines the target point of the camera.\n * The camera looks towards it form the radius distance.\n */\n public get target(): Vector3 {\n return this.getTarget();\n }\n public set target(value: Vector3) {\n this.setTarget(value);\n }\n\n /**\n * Return the current target position of the camera. This value is expressed in local space.\n * @returns the target position\n */\n public getTarget(): Vector3 {\n return this._currentTarget;\n }\n\n /** @hidden */\n public _decideIfNeedsToMove(): boolean {\n return Math.abs(this.cameraDirection.x) > 0 || Math.abs(this.cameraDirection.y) > 0 || Math.abs(this.cameraDirection.z) > 0;\n }\n\n /** @hidden */\n public _updatePosition(): void {\n if (this.parent) {\n this.parent.getWorldMatrix().invertToRef(TmpVectors.Matrix[0]);\n Vector3.TransformNormalToRef(this.cameraDirection, TmpVectors.Matrix[0], TmpVectors.Vector3[0]);\n this.position.addInPlace(TmpVectors.Vector3[0]);\n return;\n }\n this.position.addInPlace(this.cameraDirection);\n }\n\n /** @hidden */\n public _checkInputs(): void {\n var directionMultiplier = this.invertRotation ? -this.inverseRotationSpeed : 1.0;\n var needToMove = this._decideIfNeedsToMove();\n var needToRotate = Math.abs(this.cameraRotation.x) > 0 || Math.abs(this.cameraRotation.y) > 0;\n\n // Move\n if (needToMove) {\n this._updatePosition();\n }\n\n // Rotate\n if (needToRotate) {\n //rotate, if quaternion is set and rotation was used\n if (this.rotationQuaternion) {\n this.rotationQuaternion.toEulerAnglesToRef(this.rotation);\n }\n\n this.rotation.x += this.cameraRotation.x * directionMultiplier;\n this.rotation.y += this.cameraRotation.y * directionMultiplier;\n\n // Apply constraints\n if (!this.noRotationConstraint) {\n var limit = 1.570796;\n\n if (this.rotation.x > limit) {\n this.rotation.x = limit;\n }\n if (this.rotation.x < -limit) {\n this.rotation.x = -limit;\n }\n }\n\n //rotate, if quaternion is set and rotation was used\n if (this.rotationQuaternion) {\n var len = this.rotation.lengthSquared();\n if (len) {\n Quaternion.RotationYawPitchRollToRef(this.rotation.y, this.rotation.x, this.rotation.z, this.rotationQuaternion);\n }\n }\n }\n\n // Inertia\n if (needToMove) {\n if (Math.abs(this.cameraDirection.x) < this.speed * Epsilon) {\n this.cameraDirection.x = 0;\n }\n\n if (Math.abs(this.cameraDirection.y) < this.speed * Epsilon) {\n this.cameraDirection.y = 0;\n }\n\n if (Math.abs(this.cameraDirection.z) < this.speed * Epsilon) {\n this.cameraDirection.z = 0;\n }\n\n this.cameraDirection.scaleInPlace(this.inertia);\n }\n if (needToRotate) {\n if (Math.abs(this.cameraRotation.x) < this.speed * Epsilon) {\n this.cameraRotation.x = 0;\n }\n\n if (Math.abs(this.cameraRotation.y) < this.speed * Epsilon) {\n this.cameraRotation.y = 0;\n }\n this.cameraRotation.scaleInPlace(this.inertia);\n }\n\n super._checkInputs();\n }\n\n protected _updateCameraRotationMatrix() {\n if (this.rotationQuaternion) {\n this.rotationQuaternion.toRotationMatrix(this._cameraRotationMatrix);\n } else {\n Matrix.RotationYawPitchRollToRef(this.rotation.y, this.rotation.x, this.rotation.z, this._cameraRotationMatrix);\n }\n }\n\n /**\n * Update the up vector to apply the rotation of the camera (So if you changed the camera rotation.z this will let you update the up vector as well)\n * @returns the current camera\n */\n private _rotateUpVectorWithCameraRotationMatrix(): TargetCamera {\n Vector3.TransformNormalToRef(this._defaultUp, this._cameraRotationMatrix, this.upVector);\n return this;\n }\n\n private _cachedRotationZ = 0;\n private _cachedQuaternionRotationZ = 0;\n /** @hidden */\n public _getViewMatrix(): Matrix {\n if (this.lockedTarget) {\n this.setTarget(this._getLockedTargetPosition()!);\n }\n\n // Compute\n this._updateCameraRotationMatrix();\n\n // Apply the changed rotation to the upVector\n if (this.rotationQuaternion && this._cachedQuaternionRotationZ != this.rotationQuaternion.z) {\n this._rotateUpVectorWithCameraRotationMatrix();\n this._cachedQuaternionRotationZ = this.rotationQuaternion.z;\n } else if (this._cachedRotationZ !== this.rotation.z) {\n this._rotateUpVectorWithCameraRotationMatrix();\n this._cachedRotationZ = this.rotation.z;\n }\n\n Vector3.TransformCoordinatesToRef(this._referencePoint, this._cameraRotationMatrix, this._transformedReferencePoint);\n\n // Computing target and final matrix\n this.position.addToRef(this._transformedReferencePoint, this._currentTarget);\n if (this.updateUpVectorFromRotation) {\n if (this.rotationQuaternion) {\n Axis.Y.rotateByQuaternionToRef(this.rotationQuaternion, this.upVector);\n } else {\n Quaternion.FromEulerVectorToRef(this.rotation, this._tmpQuaternion);\n Axis.Y.rotateByQuaternionToRef(this._tmpQuaternion, this.upVector);\n }\n }\n this._computeViewMatrix(this.position, this._currentTarget, this.upVector);\n return this._viewMatrix;\n }\n\n protected _computeViewMatrix(position: Vector3, target: Vector3, up: Vector3): void {\n if (this.ignoreParentScaling) {\n if (this.parent) {\n const parentWorldMatrix = this.parent.getWorldMatrix();\n Vector3.TransformCoordinatesToRef(position, parentWorldMatrix, this._globalPosition);\n Vector3.TransformCoordinatesToRef(target, parentWorldMatrix, this._tmpTargetVector);\n Vector3.TransformNormalToRef(up, parentWorldMatrix, this._tmpUpVector);\n this._markSyncedWithParent();\n } else {\n this._globalPosition.copyFrom(position);\n this._tmpTargetVector.copyFrom(target);\n this._tmpUpVector.copyFrom(up);\n }\n\n if (this.getScene().useRightHandedSystem) {\n Matrix.LookAtRHToRef(this._globalPosition, this._tmpTargetVector, this._tmpUpVector, this._viewMatrix);\n } else {\n Matrix.LookAtLHToRef(this._globalPosition, this._tmpTargetVector, this._tmpUpVector, this._viewMatrix);\n }\n return;\n }\n\n if (this.getScene().useRightHandedSystem) {\n Matrix.LookAtRHToRef(position, target, up, this._viewMatrix);\n } else {\n Matrix.LookAtLHToRef(position, target, up, this._viewMatrix);\n }\n\n if (this.parent) {\n const parentWorldMatrix = this.parent.getWorldMatrix();\n this._viewMatrix.invert();\n this._viewMatrix.multiplyToRef(parentWorldMatrix, this._viewMatrix);\n this._viewMatrix.getTranslationToRef(this._globalPosition);\n this._viewMatrix.invert();\n this._markSyncedWithParent();\n } else {\n this._globalPosition.copyFrom(position);\n }\n }\n\n /**\n * @hidden\n */\n public createRigCamera(name: string, cameraIndex: number): Nullable<Camera> {\n if (this.cameraRigMode !== Camera.RIG_MODE_NONE) {\n var rigCamera = new TargetCamera(name, this.position.clone(), this.getScene());\n rigCamera.isRigCamera = true;\n rigCamera.rigParent = this;\n if (this.cameraRigMode === Camera.RIG_MODE_VR || this.cameraRigMode === Camera.RIG_MODE_WEBVR) {\n if (!this.rotationQuaternion) {\n this.rotationQuaternion = new Quaternion();\n }\n rigCamera._cameraRigParams = {};\n rigCamera.rotationQuaternion = new Quaternion();\n }\n return rigCamera;\n }\n return null;\n }\n\n /**\n * @hidden\n */\n public _updateRigCameras() {\n var camLeft = <TargetCamera>this._rigCameras[0];\n var camRight = <TargetCamera>this._rigCameras[1];\n\n this.computeWorldMatrix();\n\n switch (this.cameraRigMode) {\n case Camera.RIG_MODE_STEREOSCOPIC_ANAGLYPH:\n case Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL:\n case Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED:\n case Camera.RIG_MODE_STEREOSCOPIC_OVERUNDER:\n case Camera.RIG_MODE_STEREOSCOPIC_INTERLACED:\n //provisionnaly using _cameraRigParams.stereoHalfAngle instead of calculations based on _cameraRigParams.interaxialDistance:\n var leftSign = (this.cameraRigMode === Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED) ? 1 : -1;\n var rightSign = (this.cameraRigMode === Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED) ? -1 : 1;\n this._getRigCamPositionAndTarget(this._cameraRigParams.stereoHalfAngle * leftSign, camLeft);\n this._getRigCamPositionAndTarget(this._cameraRigParams.stereoHalfAngle * rightSign, camRight);\n break;\n\n case Camera.RIG_MODE_VR:\n if (camLeft.rotationQuaternion) {\n camLeft.rotationQuaternion.copyFrom(this.rotationQuaternion);\n camRight.rotationQuaternion.copyFrom(this.rotationQuaternion);\n } else {\n camLeft.rotation.copyFrom(this.rotation);\n camRight.rotation.copyFrom(this.rotation);\n }\n camLeft.position.copyFrom(this.position);\n camRight.position.copyFrom(this.position);\n\n break;\n }\n super._updateRigCameras();\n }\n\n private _getRigCamPositionAndTarget(halfSpace: number, rigCamera: TargetCamera) {\n var target = this.getTarget();\n target.subtractToRef(this.position, TargetCamera._TargetFocalPoint);\n\n TargetCamera._TargetFocalPoint.normalize().scaleInPlace(this._initialFocalDistance);\n var newFocalTarget = TargetCamera._TargetFocalPoint.addInPlace(this.position);\n\n Matrix.TranslationToRef(-newFocalTarget.x, -newFocalTarget.y, -newFocalTarget.z, TargetCamera._TargetTransformMatrix);\n TargetCamera._TargetTransformMatrix.multiplyToRef(Matrix.RotationAxis(rigCamera.upVector, halfSpace), TargetCamera._RigCamTransformMatrix);\n Matrix.TranslationToRef(newFocalTarget.x, newFocalTarget.y, newFocalTarget.z, TargetCamera._TargetTransformMatrix);\n\n TargetCamera._RigCamTransformMatrix.multiplyToRef(TargetCamera._TargetTransformMatrix, TargetCamera._RigCamTransformMatrix);\n\n Vector3.TransformCoordinatesToRef(this.position, TargetCamera._RigCamTransformMatrix, rigCamera.position);\n rigCamera.setTarget(newFocalTarget);\n }\n\n /**\n * Gets the current object class name.\n * @return the class name\n */\n public getClassName(): string {\n return \"TargetCamera\";\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"targetCamera.js","sourceRoot":"","sources":["../../../sourceES6/core/Cameras/targetCamera.ts"],"names":[],"mappings":"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","sourcesContent":["import { serialize, serializeAsVector3, serializeAsMeshReference } from \"../Misc/decorators\";\nimport { Nullable } from \"../types\";\nimport { Camera } from \"./camera\";\nimport { Scene } from \"../scene\";\nimport { Quaternion, Matrix, Vector3, Vector2, TmpVectors } from \"../Maths/math.vector\";\nimport { Epsilon } from '../Maths/math.constants';\nimport { Axis } from '../Maths/math.axis';\n/**\n * A target camera takes a mesh or position as a target and continues to look at it while it moves.\n * This is the base of the follow, arc rotate cameras and Free camera\n * @see https://doc.babylonjs.com/features/cameras\n */\nexport class TargetCamera extends Camera {\n private static _RigCamTransformMatrix = new Matrix();\n private static _TargetTransformMatrix = new Matrix();\n private static _TargetFocalPoint = new Vector3();\n\n private _tmpUpVector = Vector3.Zero();\n private _tmpTargetVector = Vector3.Zero();\n\n /**\n * Define the current direction the camera is moving to\n */\n public cameraDirection = new Vector3(0, 0, 0);\n /**\n * Define the current rotation the camera is rotating to\n */\n public cameraRotation = new Vector2(0, 0);\n\n /** Gets or sets a boolean indicating that the scaling of the parent hierarchy will not be taken in account by the camera */\n public ignoreParentScaling = false;\n\n /**\n * When set, the up vector of the camera will be updated by the rotation of the camera\n */\n public updateUpVectorFromRotation = false;\n private _tmpQuaternion = new Quaternion();\n\n /**\n * Define the current rotation of the camera\n */\n @serializeAsVector3()\n public rotation = new Vector3(0, 0, 0);\n\n /**\n * Define the current rotation of the camera as a quaternion to prevent Gimbal lock\n */\n public rotationQuaternion: Quaternion;\n\n /**\n * Define the current speed of the camera\n */\n @serialize()\n public speed = 2.0;\n\n /**\n * Add constraint to the camera to prevent it to move freely in all directions and\n * around all axis.\n */\n public noRotationConstraint = false;\n\n /**\n * Reverses mouselook direction to 'natural' panning as opposed to traditional direct\n * panning\n */\n public invertRotation = false;\n\n /**\n * Speed multiplier for inverse camera panning\n */\n public inverseRotationSpeed = 0.2;\n\n /**\n * Define the current target of the camera as an object or a position.\n */\n @serializeAsMeshReference(\"lockedTargetId\")\n public lockedTarget: any = null;\n\n /** @hidden */\n public _currentTarget = Vector3.Zero();\n /** @hidden */\n public _initialFocalDistance = 1;\n /** @hidden */\n public _viewMatrix = Matrix.Zero();\n /** @hidden */\n public _camMatrix = Matrix.Zero();\n /** @hidden */\n public _cameraTransformMatrix = Matrix.Zero();\n /** @hidden */\n public _cameraRotationMatrix = Matrix.Zero();\n\n /** @hidden */\n public _referencePoint = new Vector3(0, 0, 1);\n /** @hidden */\n public _transformedReferencePoint = Vector3.Zero();\n\n /** @hidden */\n public _reset: () => void;\n\n private _defaultUp = Vector3.Up();\n\n /**\n * Instantiates a target camera that takes a mesh or position as a target and continues to look at it while it moves.\n * This is the base of the follow, arc rotate cameras and Free camera\n * @see https://doc.babylonjs.com/features/cameras\n * @param name Defines the name of the camera in the scene\n * @param position Defines the start position of the camera in the scene\n * @param scene Defines the scene the camera belongs to\n * @param setActiveOnSceneIfNoneActive Defines whether the camera should be marked as active if not other active cameras have been defined\n */\n constructor(name: string, position: Vector3, scene?: Scene, setActiveOnSceneIfNoneActive = true) {\n super(name, position, scene, setActiveOnSceneIfNoneActive);\n }\n\n /**\n * Gets the position in front of the camera at a given distance.\n * @param distance The distance from the camera we want the position to be\n * @returns the position\n */\n public getFrontPosition(distance: number): Vector3 {\n this.getWorldMatrix();\n var direction = this.getTarget().subtract(this.position);\n direction.normalize();\n direction.scaleInPlace(distance);\n return this.globalPosition.add(direction);\n }\n\n /** @hidden */\n public _getLockedTargetPosition(): Nullable<Vector3> {\n if (!this.lockedTarget) {\n return null;\n }\n\n if (this.lockedTarget.absolutePosition) {\n this.lockedTarget.computeWorldMatrix();\n }\n\n return this.lockedTarget.absolutePosition || this.lockedTarget;\n }\n\n private _storedPosition: Vector3;\n private _storedRotation: Vector3;\n private _storedRotationQuaternion: Quaternion;\n\n /**\n * Store current camera state of the camera (fov, position, rotation, etc..)\n * @returns the camera\n */\n public storeState(): Camera {\n this._storedPosition = this.position.clone();\n this._storedRotation = this.rotation.clone();\n if (this.rotationQuaternion) {\n this._storedRotationQuaternion = this.rotationQuaternion.clone();\n }\n\n return super.storeState();\n }\n\n /**\n * Restored camera state. You must call storeState() first\n * @returns whether it was successful or not\n * @hidden\n */\n public _restoreStateValues(): boolean {\n if (!super._restoreStateValues()) {\n return false;\n }\n\n this.position = this._storedPosition.clone();\n this.rotation = this._storedRotation.clone();\n\n if (this.rotationQuaternion) {\n this.rotationQuaternion = this._storedRotationQuaternion.clone();\n }\n\n this.cameraDirection.copyFromFloats(0, 0, 0);\n this.cameraRotation.copyFromFloats(0, 0);\n\n return true;\n }\n\n /** @hidden */\n public _initCache() {\n super._initCache();\n this._cache.lockedTarget = new Vector3(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\n this._cache.rotation = new Vector3(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\n this._cache.rotationQuaternion = new Quaternion(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\n }\n\n /** @hidden */\n public _updateCache(ignoreParentClass?: boolean): void {\n if (!ignoreParentClass) {\n super._updateCache();\n }\n\n var lockedTargetPosition = this._getLockedTargetPosition();\n if (!lockedTargetPosition) {\n this._cache.lockedTarget = null;\n }\n else {\n if (!this._cache.lockedTarget) {\n this._cache.lockedTarget = lockedTargetPosition.clone();\n }\n else {\n this._cache.lockedTarget.copyFrom(lockedTargetPosition);\n }\n }\n\n this._cache.rotation.copyFrom(this.rotation);\n if (this.rotationQuaternion) {\n this._cache.rotationQuaternion.copyFrom(this.rotationQuaternion);\n }\n }\n\n // Synchronized\n /** @hidden */\n public _isSynchronizedViewMatrix(): boolean {\n if (!super._isSynchronizedViewMatrix()) {\n return false;\n }\n\n var lockedTargetPosition = this._getLockedTargetPosition();\n\n return (this._cache.lockedTarget ? this._cache.lockedTarget.equals(lockedTargetPosition) : !lockedTargetPosition)\n && (this.rotationQuaternion ? this.rotationQuaternion.equals(this._cache.rotationQuaternion) : this._cache.rotation.equals(this.rotation));\n }\n\n // Methods\n /** @hidden */\n public _computeLocalCameraSpeed(): number {\n var engine = this.getEngine();\n return this.speed * Math.sqrt((engine.getDeltaTime() / (engine.getFps() * 100.0)));\n }\n\n // Target\n\n /**\n * Defines the target the camera should look at.\n * @param target Defines the new target as a Vector\n */\n public setTarget(target: Vector3): void {\n this.upVector.normalize();\n\n this._initialFocalDistance = target.subtract(this.position).length();\n\n if (this.position.z === target.z) {\n this.position.z += Epsilon;\n }\n\n this._referencePoint.normalize().scaleInPlace(this._initialFocalDistance);\n\n Matrix.LookAtLHToRef(this.position, target, this._defaultUp, this._camMatrix);\n this._camMatrix.invert();\n\n this.rotation.x = Math.atan(this._camMatrix.m[6] / this._camMatrix.m[10]);\n\n var vDir = target.subtract(this.position);\n\n if (vDir.x >= 0.0) {\n this.rotation.y = (-Math.atan(vDir.z / vDir.x) + Math.PI / 2.0);\n } else {\n this.rotation.y = (-Math.atan(vDir.z / vDir.x) - Math.PI / 2.0);\n }\n\n this.rotation.z = 0;\n\n if (isNaN(this.rotation.x)) {\n this.rotation.x = 0;\n }\n\n if (isNaN(this.rotation.y)) {\n this.rotation.y = 0;\n }\n\n if (isNaN(this.rotation.z)) {\n this.rotation.z = 0;\n }\n\n if (this.rotationQuaternion) {\n Quaternion.RotationYawPitchRollToRef(this.rotation.y, this.rotation.x, this.rotation.z, this.rotationQuaternion);\n }\n }\n\n /**\n * Defines the target point of the camera.\n * The camera looks towards it form the radius distance.\n */\n public get target(): Vector3 {\n return this.getTarget();\n }\n public set target(value: Vector3) {\n this.setTarget(value);\n }\n\n /**\n * Return the current target position of the camera. This value is expressed in local space.\n * @returns the target position\n */\n public getTarget(): Vector3 {\n return this._currentTarget;\n }\n\n /** @hidden */\n public _decideIfNeedsToMove(): boolean {\n return Math.abs(this.cameraDirection.x) > 0 || Math.abs(this.cameraDirection.y) > 0 || Math.abs(this.cameraDirection.z) > 0;\n }\n\n /** @hidden */\n public _updatePosition(): void {\n if (this.parent) {\n this.parent.getWorldMatrix().invertToRef(TmpVectors.Matrix[0]);\n Vector3.TransformNormalToRef(this.cameraDirection, TmpVectors.Matrix[0], TmpVectors.Vector3[0]);\n this.position.addInPlace(TmpVectors.Vector3[0]);\n return;\n }\n this.position.addInPlace(this.cameraDirection);\n }\n\n /** @hidden */\n public _checkInputs(): void {\n var directionMultiplier = this.invertRotation ? -this.inverseRotationSpeed : 1.0;\n var needToMove = this._decideIfNeedsToMove();\n var needToRotate = Math.abs(this.cameraRotation.x) > 0 || Math.abs(this.cameraRotation.y) > 0;\n\n // Move\n if (needToMove) {\n this._updatePosition();\n }\n\n // Rotate\n if (needToRotate) {\n //rotate, if quaternion is set and rotation was used\n if (this.rotationQuaternion) {\n this.rotationQuaternion.toEulerAnglesToRef(this.rotation);\n }\n\n this.rotation.x += this.cameraRotation.x * directionMultiplier;\n this.rotation.y += this.cameraRotation.y * directionMultiplier;\n\n // Apply constraints\n if (!this.noRotationConstraint) {\n var limit = 1.570796;\n\n if (this.rotation.x > limit) {\n this.rotation.x = limit;\n }\n if (this.rotation.x < -limit) {\n this.rotation.x = -limit;\n }\n }\n\n //rotate, if quaternion is set and rotation was used\n if (this.rotationQuaternion) {\n var len = this.rotation.lengthSquared();\n if (len) {\n Quaternion.RotationYawPitchRollToRef(this.rotation.y, this.rotation.x, this.rotation.z, this.rotationQuaternion);\n }\n }\n }\n\n // Inertia\n if (needToMove) {\n if (Math.abs(this.cameraDirection.x) < this.speed * Epsilon) {\n this.cameraDirection.x = 0;\n }\n\n if (Math.abs(this.cameraDirection.y) < this.speed * Epsilon) {\n this.cameraDirection.y = 0;\n }\n\n if (Math.abs(this.cameraDirection.z) < this.speed * Epsilon) {\n this.cameraDirection.z = 0;\n }\n\n this.cameraDirection.scaleInPlace(this.inertia);\n }\n if (needToRotate) {\n if (Math.abs(this.cameraRotation.x) < this.speed * Epsilon) {\n this.cameraRotation.x = 0;\n }\n\n if (Math.abs(this.cameraRotation.y) < this.speed * Epsilon) {\n this.cameraRotation.y = 0;\n }\n this.cameraRotation.scaleInPlace(this.inertia);\n }\n\n super._checkInputs();\n }\n\n protected _updateCameraRotationMatrix() {\n if (this.rotationQuaternion) {\n this.rotationQuaternion.toRotationMatrix(this._cameraRotationMatrix);\n } else {\n Matrix.RotationYawPitchRollToRef(this.rotation.y, this.rotation.x, this.rotation.z, this._cameraRotationMatrix);\n }\n }\n\n /**\n * Update the up vector to apply the rotation of the camera (So if you changed the camera rotation.z this will let you update the up vector as well)\n * @returns the current camera\n */\n private _rotateUpVectorWithCameraRotationMatrix(): TargetCamera {\n Vector3.TransformNormalToRef(this._defaultUp, this._cameraRotationMatrix, this.upVector);\n return this;\n }\n\n private _cachedRotationZ = 0;\n private _cachedQuaternionRotationZ = 0;\n /** @hidden */\n public _getViewMatrix(): Matrix {\n if (this.lockedTarget) {\n this.setTarget(this._getLockedTargetPosition()!);\n }\n\n // Compute\n this._updateCameraRotationMatrix();\n\n // Apply the changed rotation to the upVector\n if (this.rotationQuaternion && this._cachedQuaternionRotationZ != this.rotationQuaternion.z) {\n this._rotateUpVectorWithCameraRotationMatrix();\n this._cachedQuaternionRotationZ = this.rotationQuaternion.z;\n } else if (this._cachedRotationZ !== this.rotation.z) {\n this._rotateUpVectorWithCameraRotationMatrix();\n this._cachedRotationZ = this.rotation.z;\n }\n\n Vector3.TransformCoordinatesToRef(this._referencePoint, this._cameraRotationMatrix, this._transformedReferencePoint);\n\n // Computing target and final matrix\n this.position.addToRef(this._transformedReferencePoint, this._currentTarget);\n if (this.updateUpVectorFromRotation) {\n if (this.rotationQuaternion) {\n Axis.Y.rotateByQuaternionToRef(this.rotationQuaternion, this.upVector);\n } else {\n Quaternion.FromEulerVectorToRef(this.rotation, this._tmpQuaternion);\n Axis.Y.rotateByQuaternionToRef(this._tmpQuaternion, this.upVector);\n }\n }\n this._computeViewMatrix(this.position, this._currentTarget, this.upVector);\n return this._viewMatrix;\n }\n\n protected _computeViewMatrix(position: Vector3, target: Vector3, up: Vector3): void {\n if (this.ignoreParentScaling) {\n if (this.parent) {\n const parentWorldMatrix = this.parent.getWorldMatrix();\n Vector3.TransformCoordinatesToRef(position, parentWorldMatrix, this._globalPosition);\n Vector3.TransformCoordinatesToRef(target, parentWorldMatrix, this._tmpTargetVector);\n Vector3.TransformNormalToRef(up, parentWorldMatrix, this._tmpUpVector);\n this._markSyncedWithParent();\n } else {\n this._globalPosition.copyFrom(position);\n this._tmpTargetVector.copyFrom(target);\n this._tmpUpVector.copyFrom(up);\n }\n\n if (this.getScene().useRightHandedSystem) {\n Matrix.LookAtRHToRef(this._globalPosition, this._tmpTargetVector, this._tmpUpVector, this._viewMatrix);\n } else {\n Matrix.LookAtLHToRef(this._globalPosition, this._tmpTargetVector, this._tmpUpVector, this._viewMatrix);\n }\n return;\n }\n\n if (this.getScene().useRightHandedSystem) {\n Matrix.LookAtRHToRef(position, target, up, this._viewMatrix);\n } else {\n Matrix.LookAtLHToRef(position, target, up, this._viewMatrix);\n }\n\n if (this.parent) {\n const parentWorldMatrix = this.parent.getWorldMatrix();\n this._viewMatrix.invert();\n this._viewMatrix.multiplyToRef(parentWorldMatrix, this._viewMatrix);\n this._viewMatrix.getTranslationToRef(this._globalPosition);\n this._viewMatrix.invert();\n this._markSyncedWithParent();\n } else {\n this._globalPosition.copyFrom(position);\n }\n }\n\n /**\n * @hidden\n */\n public createRigCamera(name: string, cameraIndex: number): Nullable<Camera> {\n if (this.cameraRigMode !== Camera.RIG_MODE_NONE) {\n var rigCamera = new TargetCamera(name, this.position.clone(), this.getScene());\n rigCamera.isRigCamera = true;\n rigCamera.rigParent = this;\n if (this.cameraRigMode === Camera.RIG_MODE_VR || this.cameraRigMode === Camera.RIG_MODE_WEBVR) {\n if (!this.rotationQuaternion) {\n this.rotationQuaternion = new Quaternion();\n }\n rigCamera._cameraRigParams = {};\n rigCamera.rotationQuaternion = new Quaternion();\n }\n return rigCamera;\n }\n return null;\n }\n\n /**\n * @hidden\n */\n public _updateRigCameras() {\n var camLeft = <TargetCamera>this._rigCameras[0];\n var camRight = <TargetCamera>this._rigCameras[1];\n\n this.computeWorldMatrix();\n\n switch (this.cameraRigMode) {\n case Camera.RIG_MODE_STEREOSCOPIC_ANAGLYPH:\n case Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL:\n case Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED:\n case Camera.RIG_MODE_STEREOSCOPIC_OVERUNDER:\n case Camera.RIG_MODE_STEREOSCOPIC_INTERLACED:\n //provisionnaly using _cameraRigParams.stereoHalfAngle instead of calculations based on _cameraRigParams.interaxialDistance:\n var leftSign = (this.cameraRigMode === Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED) ? 1 : -1;\n var rightSign = (this.cameraRigMode === Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED) ? -1 : 1;\n this._getRigCamPositionAndTarget(this._cameraRigParams.stereoHalfAngle * leftSign, camLeft);\n this._getRigCamPositionAndTarget(this._cameraRigParams.stereoHalfAngle * rightSign, camRight);\n break;\n\n case Camera.RIG_MODE_VR:\n if (camLeft.rotationQuaternion) {\n camLeft.rotationQuaternion.copyFrom(this.rotationQuaternion);\n camRight.rotationQuaternion.copyFrom(this.rotationQuaternion);\n } else {\n camLeft.rotation.copyFrom(this.rotation);\n camRight.rotation.copyFrom(this.rotation);\n }\n camLeft.position.copyFrom(this.position);\n camRight.position.copyFrom(this.position);\n\n break;\n }\n super._updateRigCameras();\n }\n\n private _getRigCamPositionAndTarget(halfSpace: number, rigCamera: TargetCamera) {\n var target = this.getTarget();\n target.subtractToRef(this.position, TargetCamera._TargetFocalPoint);\n\n TargetCamera._TargetFocalPoint.normalize().scaleInPlace(this._initialFocalDistance);\n var newFocalTarget = TargetCamera._TargetFocalPoint.addInPlace(this.position);\n\n Matrix.TranslationToRef(-newFocalTarget.x, -newFocalTarget.y, -newFocalTarget.z, TargetCamera._TargetTransformMatrix);\n TargetCamera._TargetTransformMatrix.multiplyToRef(Matrix.RotationAxis(rigCamera.upVector, halfSpace), TargetCamera._RigCamTransformMatrix);\n Matrix.TranslationToRef(newFocalTarget.x, newFocalTarget.y, newFocalTarget.z, TargetCamera._TargetTransformMatrix);\n\n TargetCamera._RigCamTransformMatrix.multiplyToRef(TargetCamera._TargetTransformMatrix, TargetCamera._RigCamTransformMatrix);\n\n Vector3.TransformCoordinatesToRef(this.position, TargetCamera._RigCamTransformMatrix, rigCamera.position);\n rigCamera.setTarget(newFocalTarget);\n }\n\n /**\n * Gets the current object class name.\n * @return the class name\n */\n public getClassName(): string {\n return \"TargetCamera\";\n }\n}\n"]}
|
package/Cameras/touchCamera.d.ts
CHANGED
|
@@ -28,7 +28,7 @@ export declare class TouchCamera extends FreeCamera {
|
|
|
28
28
|
* @param position Define the start position of the camera in the scene
|
|
29
29
|
* @param scene Define the scene the camera belongs to
|
|
30
30
|
*/
|
|
31
|
-
constructor(name: string, position: Vector3, scene
|
|
31
|
+
constructor(name: string, position: Vector3, scene?: Scene);
|
|
32
32
|
/**
|
|
33
33
|
* Gets the current object class name.
|
|
34
34
|
* @return the class name
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"touchCamera.js","sourceRoot":"","sources":["../../../sourceES6/core/Cameras/touchCamera.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,UAAC,IAAI,EAAE,KAAK;IAC/C,OAAO,cAAM,OAAA,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,EAA5C,CAA4C,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEH;;;;GAIG;AACH;IAAiC,+BAAU;IAyCvC;;;;;;;;OAQG;IACH,qBAAY,IAAY,EAAE,QAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"touchCamera.js","sourceRoot":"","sources":["../../../sourceES6/core/Cameras/touchCamera.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,UAAC,IAAI,EAAE,KAAK;IAC/C,OAAO,cAAM,OAAA,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,EAA5C,CAA4C,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEH;;;;GAIG;AACH;IAAiC,+BAAU;IAyCvC;;;;;;;;OAQG;IACH,qBAAY,IAAY,EAAE,QAAiB,EAAE,KAAa;QAA1D,YACI,kBAAM,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,SAI/B;QAHG,KAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAEvB,KAAI,CAAC,YAAY,EAAE,CAAC;;IACxB,CAAC;IAlDD,sBAAW,gDAAuB;QAJlC;;;WAGG;aACH;YACI,IAAI,KAAK,GAAyB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChE,IAAI,KAAK,EAAE;gBACP,OAAO,KAAK,CAAC,uBAAuB,CAAC;aACxC;YAED,OAAO,CAAC,CAAC;QACb,CAAC;aAED,UAAmC,KAAa;YAC5C,IAAI,KAAK,GAAyB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChE,IAAI,KAAK,EAAE;gBACP,KAAK,CAAC,uBAAuB,GAAG,KAAK,CAAC;aACzC;QACL,CAAC;;;OAPA;IAaD,sBAAW,6CAAoB;QAJ/B;;;WAGG;aACH;YACI,IAAI,KAAK,GAAyB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChE,IAAI,KAAK,EAAE;gBACP,OAAO,KAAK,CAAC,oBAAoB,CAAC;aACrC;YAED,OAAO,CAAC,CAAC;QACb,CAAC;aAED,UAAgC,KAAa;YACzC,IAAI,KAAK,GAAyB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChE,IAAI,KAAK,EAAE;gBACP,KAAK,CAAC,oBAAoB,GAAG,KAAK,CAAC;aACtC;QACL,CAAC;;;OAPA;IAyBD;;;OAGG;IACI,kCAAY,GAAnB;QACI,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,cAAc;IACP,kCAAY,GAAnB;QACI,IAAI,KAAK,GAAyB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAChE,IAAI,KAAK,GAAyB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAChE,IAAI,KAAK,EAAE;YACP,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;SAC9B;aAAM;YACH,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;SAC3B;IACL,CAAC;IACL,kBAAC;AAAD,CAAC,AA3ED,CAAiC,UAAU,GA2E1C","sourcesContent":["import { FreeCamera } from \"./freeCamera\";\r\nimport { FreeCameraTouchInput } from \"../Cameras/Inputs/freeCameraTouchInput\";\r\nimport { FreeCameraMouseInput } from \"../Cameras/Inputs/freeCameraMouseInput\";\r\nimport { Scene } from \"../scene\";\r\nimport { Vector3 } from \"../Maths/math.vector\";\r\nimport { Node } from \"../node\";\r\n\r\nNode.AddNodeConstructor(\"TouchCamera\", (name, scene) => {\r\n return () => new TouchCamera(name, Vector3.Zero(), scene);\r\n});\r\n\r\n/**\r\n * This represents a FPS type of camera controlled by touch.\r\n * This is like a universal camera minus the Gamepad controls.\r\n * @see https://doc.babylonjs.com/features/cameras#universal-camera\r\n */\r\nexport class TouchCamera extends FreeCamera {\r\n /**\r\n * Defines the touch sensibility for rotation.\r\n * The higher the faster.\r\n */\r\n public get touchAngularSensibility(): number {\r\n var touch = <FreeCameraTouchInput>this.inputs.attached[\"touch\"];\r\n if (touch) {\r\n return touch.touchAngularSensibility;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n public set touchAngularSensibility(value: number) {\r\n var touch = <FreeCameraTouchInput>this.inputs.attached[\"touch\"];\r\n if (touch) {\r\n touch.touchAngularSensibility = value;\r\n }\r\n }\r\n\r\n /**\r\n * Defines the touch sensibility for move.\r\n * The higher the faster.\r\n */\r\n public get touchMoveSensibility(): number {\r\n var touch = <FreeCameraTouchInput>this.inputs.attached[\"touch\"];\r\n if (touch) {\r\n return touch.touchMoveSensibility;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n public set touchMoveSensibility(value: number) {\r\n var touch = <FreeCameraTouchInput>this.inputs.attached[\"touch\"];\r\n if (touch) {\r\n touch.touchMoveSensibility = value;\r\n }\r\n }\r\n\r\n /**\r\n * Instantiates a new touch camera.\r\n * This represents a FPS type of camera controlled by touch.\r\n * This is like a universal camera minus the Gamepad controls.\r\n * @see https://doc.babylonjs.com/features/cameras#universal-camera\r\n * @param name Define the name of the camera in the scene\r\n * @param position Define the start position of the camera in the scene\r\n * @param scene Define the scene the camera belongs to\r\n */\r\n constructor(name: string, position: Vector3, scene?: Scene) {\r\n super(name, position, scene);\r\n this.inputs.addTouch();\r\n\r\n this._setupInputs();\r\n }\r\n\r\n /**\r\n * Gets the current object class name.\r\n * @return the class name\r\n */\r\n public getClassName(): string {\r\n return \"TouchCamera\";\r\n }\r\n\r\n /** @hidden */\r\n public _setupInputs() {\r\n var touch = <FreeCameraTouchInput>this.inputs.attached[\"touch\"];\r\n var mouse = <FreeCameraMouseInput>this.inputs.attached[\"mouse\"];\r\n if (mouse) {\r\n mouse.touchEnabled = false;\r\n } else {\r\n touch.allowMouse = true;\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -28,7 +28,7 @@ export declare class UniversalCamera extends TouchCamera {
|
|
|
28
28
|
* @param position Define the start position of the camera in the scene
|
|
29
29
|
* @param scene Define the scene the camera belongs to
|
|
30
30
|
*/
|
|
31
|
-
constructor(name: string, position: Vector3, scene
|
|
31
|
+
constructor(name: string, position: Vector3, scene?: Scene);
|
|
32
32
|
/**
|
|
33
33
|
* Gets the current object class name.
|
|
34
34
|
* @return the class name
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"universalCamera.js","sourceRoot":"","sources":["../../../sourceES6/core/Cameras/universalCamera.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG/B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,mCAAmC,CAAC;AAE3C,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,UAAC,IAAI,EAAE,KAAK;IAC9C,sCAAsC;IACtC,OAAO,cAAM,OAAA,IAAI,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,EAAhD,CAAgD,CAAC;AAClE,CAAC,CAAC,CAAC;AAEH;;;;GAIG;AACH;IAAqC,mCAAW;IAyC5C;;;;;;;OAOG;IACH,yBAAY,IAAY,EAAE,QAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"universalCamera.js","sourceRoot":"","sources":["../../../sourceES6/core/Cameras/universalCamera.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG/B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,mCAAmC,CAAC;AAE3C,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,UAAC,IAAI,EAAE,KAAK;IAC9C,sCAAsC;IACtC,OAAO,cAAM,OAAA,IAAI,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,EAAhD,CAAgD,CAAC;AAClE,CAAC,CAAC,CAAC;AAEH;;;;GAIG;AACH;IAAqC,mCAAW;IAyC5C;;;;;;;OAOG;IACH,yBAAY,IAAY,EAAE,QAAiB,EAAE,KAAa;QAA1D,YACI,kBAAM,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,SAE/B;QADG,KAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;;IAC7B,CAAC;IA/CD,sBAAW,sDAAyB;QAJpC;;;WAGG;aACH;YACI,IAAI,OAAO,GAA2B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACtE,IAAI,OAAO,EAAE;gBACT,OAAO,OAAO,CAAC,yBAAyB,CAAC;aAC5C;YAED,OAAO,CAAC,CAAC;QACb,CAAC;aAED,UAAqC,KAAa;YAC9C,IAAI,OAAO,GAA2B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACtE,IAAI,OAAO,EAAE;gBACT,OAAO,CAAC,yBAAyB,GAAG,KAAK,CAAC;aAC7C;QACL,CAAC;;;OAPA;IAaD,sBAAW,mDAAsB;QAJjC;;;WAGG;aACH;YACI,IAAI,OAAO,GAA2B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACtE,IAAI,OAAO,EAAE;gBACT,OAAO,OAAO,CAAC,sBAAsB,CAAC;aACzC;YAED,OAAO,CAAC,CAAC;QACb,CAAC;aAED,UAAkC,KAAa;YAC3C,IAAI,OAAO,GAA2B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACtE,IAAI,OAAO,EAAE;gBACT,OAAO,CAAC,sBAAsB,GAAG,KAAK,CAAC;aAC1C;QACL,CAAC;;;OAPA;IAsBD;;;OAGG;IACI,sCAAY,GAAnB;QACI,OAAO,iBAAiB,CAAC;IAC7B,CAAC;IACL,sBAAC;AAAD,CAAC,AA7DD,CAAqC,WAAW,GA6D/C;;AAED,MAAM,CAAC,0BAA0B,GAAG,UAAC,IAAY,EAAE,KAAY;IAC3D,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;AAC5D,CAAC,CAAC","sourcesContent":["import { TouchCamera } from \"./touchCamera\";\r\nimport { Node } from \"../node\";\r\nimport { FreeCameraGamepadInput } from \"../Cameras/Inputs/freeCameraGamepadInput\";\r\nimport { Scene } from \"../scene\";\r\nimport { Vector3 } from \"../Maths/math.vector\";\r\nimport { Camera } from \"./camera\";\r\n\r\nimport \"../Gamepads/gamepadSceneComponent\";\r\n\r\nNode.AddNodeConstructor(\"FreeCamera\", (name, scene) => {\r\n // Forcing to use the Universal camera\r\n return () => new UniversalCamera(name, Vector3.Zero(), scene);\r\n});\r\n\r\n/**\r\n * The Universal Camera is the one to choose for first person shooter type games, and works with all the keyboard, mouse, touch and gamepads. This replaces the earlier Free Camera,\r\n * which still works and will still be found in many Playgrounds.\r\n * @see https://doc.babylonjs.com/features/cameras#universal-camera\r\n */\r\nexport class UniversalCamera extends TouchCamera {\r\n /**\r\n * Defines the gamepad rotation sensiblity.\r\n * This is the threshold from when rotation starts to be accounted for to prevent jittering.\r\n */\r\n public get gamepadAngularSensibility(): number {\r\n var gamepad = <FreeCameraGamepadInput>this.inputs.attached[\"gamepad\"];\r\n if (gamepad) {\r\n return gamepad.gamepadAngularSensibility;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n public set gamepadAngularSensibility(value: number) {\r\n var gamepad = <FreeCameraGamepadInput>this.inputs.attached[\"gamepad\"];\r\n if (gamepad) {\r\n gamepad.gamepadAngularSensibility = value;\r\n }\r\n }\r\n\r\n /**\r\n * Defines the gamepad move sensiblity.\r\n * This is the threshold from when moving starts to be accounted for for to prevent jittering.\r\n */\r\n public get gamepadMoveSensibility(): number {\r\n var gamepad = <FreeCameraGamepadInput>this.inputs.attached[\"gamepad\"];\r\n if (gamepad) {\r\n return gamepad.gamepadMoveSensibility;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n public set gamepadMoveSensibility(value: number) {\r\n var gamepad = <FreeCameraGamepadInput>this.inputs.attached[\"gamepad\"];\r\n if (gamepad) {\r\n gamepad.gamepadMoveSensibility = value;\r\n }\r\n }\r\n\r\n /**\r\n * The Universal Camera is the one to choose for first person shooter type games, and works with all the keyboard, mouse, touch and gamepads. This replaces the earlier Free Camera,\r\n * which still works and will still be found in many Playgrounds.\r\n * @see https://doc.babylonjs.com/features/cameras#universal-camera\r\n * @param name Define the name of the camera in the scene\r\n * @param position Define the start position of the camera in the scene\r\n * @param scene Define the scene the camera belongs to\r\n */\r\n constructor(name: string, position: Vector3, scene?: Scene) {\r\n super(name, position, scene);\r\n this.inputs.addGamepad();\r\n }\r\n\r\n /**\r\n * Gets the current object class name.\r\n * @return the class name\r\n */\r\n public getClassName(): string {\r\n return \"UniversalCamera\";\r\n }\r\n}\r\n\r\nCamera._createDefaultParsedCamera = (name: string, scene: Scene) => {\r\n return new UniversalCamera(name, Vector3.Zero(), scene);\r\n};\r\n"]}
|
|
@@ -18,7 +18,7 @@ export declare class VirtualJoysticksCamera extends FreeCamera {
|
|
|
18
18
|
* @param position Define the start position of the camera in the scene
|
|
19
19
|
* @param scene Define the scene the camera belongs to
|
|
20
20
|
*/
|
|
21
|
-
constructor(name: string, position: Vector3, scene
|
|
21
|
+
constructor(name: string, position: Vector3, scene?: Scene);
|
|
22
22
|
/**
|
|
23
23
|
* Gets the current object class name.
|
|
24
24
|
* @return the class name
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtualJoysticksCamera.js","sourceRoot":"","sources":["../../../sourceES6/core/Cameras/virtualJoysticksCamera.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,OAAO,yCAAyC,CAAC;AAEjD,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,EAAE,UAAC,IAAI,EAAE,KAAK;IAC1D,OAAO,cAAM,OAAA,IAAI,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,EAAvD,CAAuD,CAAC;AACzE,CAAC,CAAC,CAAC;AAEH;;;;;GAKG;AACH;IAA4C,0CAAU;IAElD;;;;;;;;OAQG;IACH,gCAAY,IAAY,EAAE,QAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"virtualJoysticksCamera.js","sourceRoot":"","sources":["../../../sourceES6/core/Cameras/virtualJoysticksCamera.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,OAAO,yCAAyC,CAAC;AAEjD,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,EAAE,UAAC,IAAI,EAAE,KAAK;IAC1D,OAAO,cAAM,OAAA,IAAI,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,EAAvD,CAAuD,CAAC;AACzE,CAAC,CAAC,CAAC;AAEH;;;;;GAKG;AACH;IAA4C,0CAAU;IAElD;;;;;;;;OAQG;IACH,gCAAY,IAAY,EAAE,QAAiB,EAAE,KAAa;QAA1D,YACI,kBAAM,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,SAE/B;QADG,KAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;;IACrC,CAAC;IAED;;;OAGG;IACI,6CAAY,GAAnB;QACI,OAAO,wBAAwB,CAAC;IACpC,CAAC;IACL,6BAAC;AAAD,CAAC,AAvBD,CAA4C,UAAU,GAuBrD","sourcesContent":["import { FreeCamera } from \"./freeCamera\";\r\nimport { Scene } from \"../scene\";\r\nimport { Vector3 } from \"../Maths/math.vector\";\r\nimport { Node } from \"../node\";\r\n\r\nimport \"./Inputs/freeCameraVirtualJoystickInput\";\r\n\r\nNode.AddNodeConstructor(\"VirtualJoysticksCamera\", (name, scene) => {\r\n return () => new VirtualJoysticksCamera(name, Vector3.Zero(), scene);\r\n});\r\n\r\n/**\r\n * This represents a free type of camera. It can be useful in First Person Shooter game for instance.\r\n * It is identical to the Free Camera and simply adds by default a virtual joystick.\r\n * Virtual Joysticks are on-screen 2D graphics that are used to control the camera or other scene items.\r\n * @see https://doc.babylonjs.com/features/cameras#virtual-joysticks-camera\r\n */\r\nexport class VirtualJoysticksCamera extends FreeCamera {\r\n\r\n /**\r\n * Instantiates a VirtualJoysticksCamera. It can be useful in First Person Shooter game for instance.\r\n * It is identical to the Free Camera and simply adds by default a virtual joystick.\r\n * Virtual Joysticks are on-screen 2D graphics that are used to control the camera or other scene items.\r\n * @see https://doc.babylonjs.com/features/cameras#virtual-joysticks-camera\r\n * @param name Define the name of the camera in the scene\r\n * @param position Define the start position of the camera in the scene\r\n * @param scene Define the scene the camera belongs to\r\n */\r\n constructor(name: string, position: Vector3, scene?: Scene) {\r\n super(name, position, scene);\r\n this.inputs.addVirtualJoystick();\r\n }\r\n\r\n /**\r\n * Gets the current object class name.\r\n * @return the class name\r\n */\r\n public getClassName(): string {\r\n return \"VirtualJoysticksCamera\";\r\n }\r\n}\r\n"]}
|
package/Collisions/collider.d.ts
CHANGED
|
@@ -61,7 +61,7 @@ export declare class Collider {
|
|
|
61
61
|
/** @hidden */
|
|
62
62
|
_testTriangle(faceIndex: number, trianglePlaneArray: Array<Plane>, p1: Vector3, p2: Vector3, p3: Vector3, hasMaterial: boolean, hostMesh: AbstractMesh): void;
|
|
63
63
|
/** @hidden */
|
|
64
|
-
_collide(trianglePlaneArray: Array<Plane>, pts: Vector3[], indices: IndicesArray, indexStart: number, indexEnd: number, decal: number, hasMaterial: boolean, hostMesh: AbstractMesh, invertTriangles?: boolean): void;
|
|
64
|
+
_collide(trianglePlaneArray: Array<Plane>, pts: Vector3[], indices: IndicesArray, indexStart: number, indexEnd: number, decal: number, hasMaterial: boolean, hostMesh: AbstractMesh, invertTriangles?: boolean, triangleStrip?: boolean): void;
|
|
65
65
|
/** @hidden */
|
|
66
66
|
_getResponse(pos: Vector3, vel: Vector3): void;
|
|
67
67
|
}
|