123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- import { Vector3 } from "../Maths/math.vector";
- import type { AbstractMesh } from "../Meshes/abstractMesh";
- import type { Scene } from "../scene";
- import { TargetCamera } from "./targetCamera";
- import { FreeCameraInputsManager } from "./freeCameraInputsManager";
- /**
- * This represents a free type of camera. It can be useful in First Person Shooter game for instance.
- * Please consider using the new UniversalCamera instead as it adds more functionality like the gamepad.
- * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/camera_introduction#universal-camera
- */
- export declare class FreeCamera extends TargetCamera {
- /**
- * Define the collision ellipsoid of the camera.
- * This is helpful to simulate a camera body like the player body around the camera
- * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/camera_collisions#arcrotatecamera
- */
- ellipsoid: Vector3;
- /**
- * Define an offset for the position of the ellipsoid around the camera.
- * This can be helpful to determine the center of the body near the gravity center of the body
- * instead of its head.
- */
- ellipsoidOffset: Vector3;
- /**
- * Enable or disable collisions of the camera with the rest of the scene objects.
- */
- checkCollisions: boolean;
- /**
- * Enable or disable gravity on the camera.
- */
- applyGravity: boolean;
- /**
- * Define the input manager associated to the camera.
- */
- inputs: FreeCameraInputsManager;
- /**
- * Gets the input sensibility for a mouse input. (default is 2000.0)
- * Higher values reduce sensitivity.
- */
- get angularSensibility(): number;
- /**
- * Sets the input sensibility for a mouse input. (default is 2000.0)
- * Higher values reduce sensitivity.
- */
- set angularSensibility(value: number);
- /**
- * Gets or Set the list of keyboard keys used to control the forward move of the camera.
- */
- get keysUp(): number[];
- set keysUp(value: number[]);
- /**
- * Gets or Set the list of keyboard keys used to control the upward move of the camera.
- */
- get keysUpward(): number[];
- set keysUpward(value: number[]);
- /**
- * Gets or Set the list of keyboard keys used to control the backward move of the camera.
- */
- get keysDown(): number[];
- set keysDown(value: number[]);
- /**
- * Gets or Set the list of keyboard keys used to control the downward move of the camera.
- */
- get keysDownward(): number[];
- set keysDownward(value: number[]);
- /**
- * Gets or Set the list of keyboard keys used to control the left strafe move of the camera.
- */
- get keysLeft(): number[];
- set keysLeft(value: number[]);
- /**
- * Gets or Set the list of keyboard keys used to control the right strafe move of the camera.
- */
- get keysRight(): number[];
- set keysRight(value: number[]);
- /**
- * Gets or Set the list of keyboard keys used to control the left rotation move of the camera.
- */
- get keysRotateLeft(): number[];
- set keysRotateLeft(value: number[]);
- /**
- * Gets or Set the list of keyboard keys used to control the right rotation move of the camera.
- */
- get keysRotateRight(): number[];
- set keysRotateRight(value: number[]);
- /**
- * Gets or Set the list of keyboard keys used to control the up rotation move of the camera.
- */
- get keysRotateUp(): number[];
- set keysRotateUp(value: number[]);
- /**
- * Gets or Set the list of keyboard keys used to control the down rotation move of the camera.
- */
- get keysRotateDown(): number[];
- set keysRotateDown(value: number[]);
- /**
- * Event raised when the camera collide with a mesh in the scene.
- */
- onCollide: (collidedMesh: AbstractMesh) => void;
- private _collider;
- private _needMoveForGravity;
- private _oldPosition;
- private _diffPosition;
- private _newPosition;
- /** @internal */
- _localDirection: Vector3;
- /** @internal */
- _transformedDirection: Vector3;
- /**
- * Instantiates a Free Camera.
- * This represents a free type of camera. It can be useful in First Person Shooter game for instance.
- * Please consider using the new UniversalCamera instead as it adds more functionality like touch to this camera.
- * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/camera_introduction#universal-camera
- * @param name Define the name of the camera in the scene
- * @param position Define the start position of the camera in the scene
- * @param scene Define the scene the camera belongs to
- * @param setActiveOnSceneIfNoneActive Defines whether the camera should be marked as active if not other active cameras have been defined
- */
- constructor(name: string, position: Vector3, scene?: Scene, setActiveOnSceneIfNoneActive?: boolean);
- /**
- * 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;
- /**
- * Attach the input controls to a specific dom element to get the input from.
- * @param ignored defines an ignored parameter kept for backward compatibility.
- * @param noPreventDefault Defines whether event caught by the controls should call preventdefault() (https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault)
- * BACK COMPAT SIGNATURE ONLY.
- */
- attachControl(ignored: any, noPreventDefault?: boolean): void;
- /**
- * Detach the current controls from the specified dom element.
- */
- detachControl(): void;
- private _collisionMask;
- /**
- * Define a collision mask to limit the list of object the camera can collide with
- */
- get collisionMask(): number;
- set collisionMask(mask: number);
- /**
- * @internal
- */
- _collideWithWorld(displacement: Vector3): void;
- private _onCollisionPositionChange;
- /** @internal */
- _checkInputs(): void;
- /**
- * Enable movement without a user input. This allows gravity to always be applied.
- */
- set needMoveForGravity(value: boolean);
- /**
- * When true, gravity is applied whether there is user input or not.
- */
- get needMoveForGravity(): boolean;
- /** @internal */
- _decideIfNeedsToMove(): boolean;
- /** @internal */
- _updatePosition(): void;
- /**
- * Destroy the camera and release the current resources hold by it.
- */
- dispose(): void;
- /**
- * Gets the current object class name.
- * @returns the class name
- */
- getClassName(): string;
- }
|