@pmndrs/xr
Version:
VR/AR for threejs
40 lines (39 loc) • 1.7 kB
TypeScript
import { AllowedPointerEvents, AllowedPointerEventsType, PointerOptions, Pointer } from '@pmndrs/pointer-events';
import { MeshLineMaterial } from 'meshline';
import { BufferGeometry, Camera, ColorRepresentation, Mesh, Object3D, Vector3, Vector3Tuple } from 'three';
/**
* marks its children as teleportable
*/
export declare function makeTeleportTarget(root: Object3D, camera: Camera | (() => Camera), onTeleport: (pointer: Vector3, event: PointerEvent) => void): () => void;
/**
* @param space
* @param rayGroup must be placed directly into the scene
*/
export declare function syncTeleportPointerRayGroup(space: Object3D, rayGroup: Object3D, deltaTimeMs: number): void;
/**
* check if the object is marked as teleportable
*/
export declare function isTeleportTarget(object: Object3D): boolean;
export declare function buildTeleportTargetFilter(options?: PointerOptions): (object: Object3D, pointerEvents: AllowedPointerEvents, pointerEventsType: AllowedPointerEventsType, pointerEventsOrder: number) => boolean;
export declare function createTeleportRayLine(): Vector3[];
export type TeleportPointerRayModelOptions = {
/**
* @default white
*/
color?: ColorRepresentation | Vector3Tuple | ((pointer: Pointer) => ColorRepresentation | Vector3Tuple);
/**
* @default 0.4
*/
opacity?: number | ((pointer: Pointer) => number);
/**
* @default 0.01
*/
size?: number;
};
export declare class TeleportPointerRayModel extends Mesh<BufferGeometry, MeshLineMaterial> {
private readonly multiplier;
private lineLengths;
options: TeleportPointerRayModelOptions;
constructor(points: Array<Vector3>);
update(pointer: Pointer): void;
}