/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ import { Object3D, Vector3 } from 'three'; import { EnvironmentType } from '../types/environment-types.js'; export { EnvironmentType }; export interface LocomotorConfig { initialPlayerPosition?: Vector3; updateFrequency?: number; rayGravity?: number; maxDropDistance?: number; jumpHeight?: number; jumpCooldown?: number; useWorker?: boolean; } export interface PositionUpdate { position: Vector3; isGrounded: boolean; } export interface RaycastResult { hit: boolean; point?: Vector3; normal?: Vector3; distance?: number; } /** * Main thread interface for locomotion physics engine * Supports both web worker mode (default) and inline mode * * - Worker mode: Runs physics engine in a separate thread for better performance * - Inline mode: Runs physics engine in the same thread for snappier controls * * Use LocomotorConfig.useWorker to control the mode (default: true) */ export declare class Locomotor { hitTestTarget: Object3D; hitTestNormal: Vector3; isGrounded: boolean; position: Vector3; private worker?; private engine?; private useWorker; private initialized; private config; private staticEnvs; private kinematicEnvs; private nextEnvironmentHandle; private targetPosition; private tempVec1; private tempVec2; private tempQuat; private tempMatrix; private tempMatrix2; private requestArr; private kinematicUpdateArr; constructor(config?: LocomotorConfig); initialize(): Promise; terminate(): void; updateConfig(config: Partial): void; private applyConfigToEngine; /** * Update method for inline mode (when useWorker is false) * This method must be called every frame when using inline mode. * In worker mode, this method does nothing as updates are handled automatically. * * @param delta Time in seconds since last update */ update(delta: number): void; addEnvironment(object3D: Object3D, type?: string): number; removeEnvironment(envHandle: number): void; updateKinematicEnvironments(envHandles?: number[]): void; slide(direction: Vector3): void; teleport(position: Vector3): void; requestHitTest(origin: Vector3, direction: Vector3): void; jump(): void; isInitialized(): boolean; private processEnvironment; private handleWorkerMessage; private handleHitTestResult; } //# sourceMappingURL=locomotor.d.ts.map