@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
96 lines (95 loc) • 5.92 kB
TypeScript
/**
* Creates a PointerLockControls
*
* @remarks
* This allows you to create a First-Person navigation, using the WASD keys.
*
*/
import { Camera } from 'three';
import { TypedCameraControlsEventNode } from './_BaseCameraControls';
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { PointerLockControls } from '../../../modules/core/controls/PointerLockControls';
import { CameraControlsNodeType } from '../../poly/NodeContext';
import { CorePlayer } from '../../../core/player/Player';
import { CollisionController } from './collision/CollisionController';
type PointerLockControlsMap = Map<string, PointerLockControls>;
declare class FirstPersonEventParamsConfig extends NodeParamsConfig {
main: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FOLDER>;
/** @param collider object */
colliderObject: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.NODE_PATH>;
/** @param click to lock controls */
lock: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BUTTON>;
/** @param click to unlock controls */
unlock: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BUTTON>;
/** @param collision Capsule Radius */
capsuleRadius: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
/** @param collision Capsule Height */
capsuleHeight: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
physics: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FOLDER>;
/** @param physics Steps */
physicsSteps: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
/** @param gravity */
gravity: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.VECTOR3>;
/** @param translate speed */
translateSpeed: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
/** @param rotate speed */
rotateSpeed: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
/** @param jump Allowed */
jumpAllowed: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
/** @param jump Force */
jumpStrength: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
/** @param run Allowed */
runAllowed: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
/** @param run speed mult */
runSpeedMult: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
/** @param recompute colliding geo */
updateCollider: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BUTTON>;
init: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FOLDER>;
/** @param start Position */
startPosition: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.VECTOR3>;
/** @param start Position */
startRotation: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.VECTOR3>;
/** @param reset */
reset: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BUTTON>;
/** @param min rotation angle */
minPolarAngle: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
/** @param max rotation angle */
maxPolarAngle: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
html: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FOLDER>;
/** @param specify a custom HTML element */
customLockCursorElement: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
/** @param jump HTML element selector */
lockCursorElementSelector: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
}
export declare class FirstPersonControlsEventNode extends TypedCameraControlsEventNode<FirstPersonEventParamsConfig> {
paramsConfig: FirstPersonEventParamsConfig;
static type(): CameraControlsNodeType;
endEventName(): string;
static readonly INPUT_UPDATE_COLLIDER = "updateCollider";
static readonly INPUT_RESET = "reset";
private _collisionController;
collisionController(): CollisionController;
initializeNode(): void;
protected _controls_by_element_id: PointerLockControlsMap;
private _player;
createControlsInstance(camera: Camera, element: HTMLElement): Promise<PointerLockControls>;
private _initPlayer;
private _playerOptions;
player(): CorePlayer | undefined;
private _updatePlayerParams;
private _resetPlayer;
private _updateCollider;
protected _bind_listeners_to_controls_instance(controls: PointerLockControls): void;
updateRequired(): boolean;
setupControls(controls: PointerLockControls): void;
disposeControlsForHtmlElementId(htmlElementId: string): void;
unlockControls(): void;
private lockControls;
private _firstControls;
static PARAM_CALLBACK_lockControls(node: FirstPersonControlsEventNode): void;
static PARAM_CALLBACK_unlockControls(node: FirstPersonControlsEventNode): void;
static PARAM_CALLBACK_updateCollider(node: FirstPersonControlsEventNode): void;
static PARAM_CALLBACK_updatePlayerParams(node: FirstPersonControlsEventNode): void;
static PARAM_CALLBACK_resetPlayer(node: FirstPersonControlsEventNode): void;
}
export {};