import type { Nullable } from "../types"; import { TargetCamera } from "./targetCamera"; import type { Scene } from "../scene"; import { Vector3 } from "../Maths/math.vector"; import type { AbstractMesh } from "../Meshes/abstractMesh"; import { FollowCameraInputsManager } from "./followCameraInputsManager"; /** * A follow camera takes a mesh as a target and follows it as it moves. Both a free camera version followCamera and * an arc rotate version arcFollowCamera are available. * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/camera_introduction#followcamera */ export declare class FollowCamera extends TargetCamera { /** * Distance the follow camera should follow an object at */ radius: number; /** * Minimum allowed distance of the camera to the axis of rotation * (The camera can not get closer). * This can help limiting how the Camera is able to move in the scene. */ lowerRadiusLimit: Nullable; /** * Maximum allowed distance of the camera to the axis of rotation * (The camera can not get further). * This can help limiting how the Camera is able to move in the scene. */ upperRadiusLimit: Nullable; /** * Define a rotation offset between the camera and the object it follows */ rotationOffset: number; /** * Minimum allowed angle to camera position relative to target object. * This can help limiting how the Camera is able to move in the scene. */ lowerRotationOffsetLimit: Nullable; /** * Maximum allowed angle to camera position relative to target object. * This can help limiting how the Camera is able to move in the scene. */ upperRotationOffsetLimit: Nullable; /** * Define a height offset between the camera and the object it follows. * It can help following an object from the top (like a car chasing a plane) */ heightOffset: number; /** * Minimum allowed height of camera position relative to target object. * This can help limiting how the Camera is able to move in the scene. */ lowerHeightOffsetLimit: Nullable; /** * Maximum allowed height of camera position relative to target object. * This can help limiting how the Camera is able to move in the scene. */ upperHeightOffsetLimit: Nullable; /** * Define how fast the camera can accelerate to follow it s target. */ cameraAcceleration: number; /** * Define the speed limit of the camera following an object. */ maxCameraSpeed: number; /** * Define the target of the camera. */ lockedTarget: Nullable; /** * Defines the input associated with the camera. */ inputs: FollowCameraInputsManager; /** * Instantiates the follow camera. * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/camera_introduction#followcamera * @param name Define the name of the camera in the scene * @param position Define the position of the camera * @param scene Define the scene the camera belong to * @param lockedTarget Define the target of the camera */ constructor(name: string, position: Vector3, scene?: Scene, lockedTarget?: Nullable); private _follow; /** * Attach the input controls to a specific dom element to get the input from. * @param noPreventDefault Defines whether event caught by the controls should call preventdefault() (https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault) */ attachControl(noPreventDefault?: boolean): void; /** * Detach the current controls from the specified dom element. */ detachControl(): void; /** @internal */ _checkInputs(): void; private _checkLimits; /** * Gets the camera class name. * @returns the class name */ getClassName(): string; } /** * Arc Rotate version of the follow camera. * It still follows a Defined mesh but in an Arc Rotate Camera fashion. * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/camera_introduction#followcamera */ export declare class ArcFollowCamera extends TargetCamera { /** The longitudinal angle of the camera */ alpha: number; /** The latitudinal angle of the camera */ beta: number; /** The radius of the camera from its target */ radius: number; private _cartesianCoordinates; /** Define the camera target (the mesh it should follow) */ private _meshTarget; /** * Instantiates a new ArcFollowCamera * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/camera_introduction#followcamera * @param name Define the name of the camera * @param alpha Define the rotation angle of the camera around the longitudinal axis * @param beta Define the rotation angle of the camera around the elevation axis * @param radius Define the radius of the camera from its target point * @param target Define the target of the camera * @param scene Define the scene the camera belongs to */ constructor(name: string, /** The longitudinal angle of the camera */ alpha: number, /** The latitudinal angle of the camera */ beta: number, /** The radius of the camera from its target */ radius: number, /** Define the camera target (the mesh it should follow) */ target: Nullable, scene: Scene); /** * Sets the mesh to follow with this camera. * @param target the target to follow */ setMeshTarget(target: Nullable): void; private _follow; /** @internal */ _checkInputs(): void; /** * Returns the class name of the object. * It is mostly used internally for serialization purposes. * @returns the class name */ getClassName(): string; }