import * as THREE from 'three'; import { NavMesh, Crowd, CrowdAgent } from '@recast-navigation/core'; import { NavMeshHelper, CrowdHelper } from '@recast-navigation/three'; import { ECSContext } from '../core/ecs'; export interface NavMeshData { navMesh: NavMesh | null; navMeshHelper: NavMeshHelper | null; crowd: Crowd | null; crowdHelper: CrowdHelper | null; } export declare enum NavMeshGenerationState { UNINITIALIZED = 0, GENERATING = 1, DONE = 2 } export type NavMeshDataKey = number; export type NavMeshDataJob = { state: NavMeshGenerationState; data: NavMeshData | null; }; /** * Generates a nav mesh from static meshes in the scene * @param ctx ECS context * @param scene Three.js scene containing meshes * @returns NavMeshData containing the nav mesh and debug visualization */ export declare function generateNavMesh(ctx: ECSContext, scene: THREE.Scene): { navMesh: any; navMeshHelper: any; crowd: any; crowdHelper: any; }; /** * Initialize nav mesh generation for a world */ export declare function initializeNavMesh(ctx: ECSContext, scene: THREE.Scene): Promise; /** * Get the nav mesh debug mesh for rendering */ export declare function getNavMeshDebugMesh(ctx: ECSContext): THREE.Object3D | null; /** * Get the crowd debug mesh for rendering */ export declare function getCrowdDebugMesh(ctx: ECSContext): THREE.Object3D | null; /** * Get the nav mesh for pathfinding */ export declare function getNavMesh(ctx: ECSContext): NavMesh | null; /** * Get the crowd for pathfinding */ export declare function getCrowd(ctx: ECSContext): Crowd | null; /** * Add an agent to the crowd for pathfinding * @param ctx ECS context * @param position Starting position of the agent * @param agentParams Optional agent parameters * @returns CrowdAgent or null if failed */ export declare function addCrowdAgent(ctx: ECSContext, position: { x: number; y: number; z: number; }, agentParams?: { radius?: number; height?: number; maxSpeed?: number; maxAcceleration?: number; }): CrowdAgent | null; /** * Remove an agent from the crowd * @param ctx ECS context * @param agent Agent to remove */ export declare function removeCrowdAgent(ctx: ECSContext, agent: CrowdAgent): void; /** * Update the crowd simulation * @param ctx ECS context * @param deltaTime Time step for the update */ export declare function updateCrowd(ctx: ECSContext, deltaTime: number): boolean; //# sourceMappingURL=navMesh.d.ts.map