Recast.js
    Preparing search index...

    Interface RecastModule

    interface RecastModule {
        settings(options: RecastSettings): void;
        set_cellSize(value: number): void;
        set_cellHeight(value: number): void;
        set_agentHeight(value: number): void;
        set_agentRadius(value: number): void;
        set_agentMaxClimb(value: number): void;
        set_agentMaxSlope(value: number): void;
        logger: RecastLogger | null | undefined;
        navmeshType?: "solo" | "tiled";
        OBJLoader(path: string, callback: (module: RecastModule) => void): void;
        OBJLoaderAsync(path: string): Promise<void>;
        OBJDataLoader(
            data: string | ArrayBuffer,
            callback: (module: RecastModule) => void,
        ): void;
        OBJDataLoaderAsync(data: string | ArrayBuffer): Promise<void>;
        buildSolo(): void;
        buildSoloAsync(): Promise<string>;
        buildTiled(): void;
        buildTiledAsync(): Promise<string>;
        rebuildAllTiles(): void;
        findPathAsync(start: Vec3, end: Vec3, max?: number): Promise<Vec3[]>;
        findNearestPointAsync(position: Vec3, extent: Vec3): Promise<Vec3>;
        findNearestPolyAsync(position: Vec3, extent: Vec3): Promise<NavPoly | null>;
        getRandomPointAsync(): Promise<Vec3>;
        queryPolygonsAsync(
            posX: number,
            posY: number,
            posZ: number,
            extX: number,
            extY: number,
            extZ: number,
            maxPolys?: number,
        ): Promise<NavPoly[] | null>;
        setPolyFlags(
            posX: number,
            posY: number,
            posZ: number,
            extX: number,
            extY: number,
            extZ: number,
            flags: number,
        ): void;
        setPolyFlagsByRef(ref: number, flags: number): void;
        FLAG_WALK: 1;
        FLAG_SWIM: 2;
        FLAG_DOOR: 4;
        FLAG_JUMP: 8;
        FLAG_DISABLED: 16;
        FLAG_ALL: 65535;
        saveTileMeshAsync(path: string): Promise<void>;
        loadTileMeshAsync(path: string): Promise<void>;
        saveTileCacheAsync(path: string): Promise<void>;
        loadTileCacheAsync(path: string): Promise<void>;
        initCrowd(maxAgents: number, maxAgentRadius: number): void;
        addAgent(options: AgentOptions): number;
        updateCrowdAgentParameters(
            agentId: number,
            options: Omit<AgentOptions, "position">,
        ): void;
        getCrowdAgentParameters(agentId: number): string;
        mergeCrowdAgentParameters(
            agentId: number,
            options: Partial<Omit<AgentOptions, "position">>,
        ): void;
        removeCrowdAgent(agentId: number): void;
        crowdRequestMoveTarget(
            agentId: number,
            x: number,
            y: number,
            z: number,
        ): void;
        crowdRequestMoveVelocity(
            agentId: number,
            x: number,
            y: number,
            z: number,
        ): void;
        crowdUpdate(dt: number): void;
        crowdGetActiveAgents(callback_id?: number): void;
        CROWD_ANTICIPATE_TURNS: 1;
        CROWD_OBSTACLE_AVOIDANCE: 2;
        CROWD_SEPARATION: 4;
        CROWD_OPTIMIZE_VIS: 8;
        CROWD_OPTIMIZE_TOPO: 16;
        addTempObstacle(x: number, y: number, z: number, radius: number): number;
        removeTempObstacle(obstacleRef: number): void;
        removeAllTempObstacles(): void;
        getAllTempObstaclesAsync(): Promise<TempObstacle[]>;
        addOffMeshConnection(
            startX: number,
            startY: number,
            startZ: number,
            endX: number,
            endY: number,
            endZ: number,
            radius: number,
            bidirectional: boolean,
        ): void;
        zones: Record<string, Zone>;
        setZones(zones: Record<string, ZoneData>): void;
        Zone: typeof Zone;
        withPlugin(PluginClass: RecastPlugin): this;
        FlockGroup?: typeof FlockGroup;
        createFlockGroup?(options?: FlockGroupOptions): FlockGroup;
        Formation?: typeof Formation;
        createFormation?(options?: FormationOptions): Formation;
        events: RecastEventEmitter;
        on(type: string, listener: (...args: any[]) => void): void;
        off(type: string, listener: (...args: any[]) => void): void;
        emit(type: string, ...args: any[]): void;
        setGLContext(glContext: WebGLRenderingContext): void;
        glContext?: WebGLRenderingContext;
        drawObject(objectName: string): void;
    }
    Index

    Setup

    • Set all navmesh build parameters at once.

      Parameters

      Returns void

      recast.settings({
      cellSize: 0.3,
      cellHeight: 0.2,
      agentHeight: 2,
      agentRadius: 0.4,
      agentMaxClimb: 0.9,
      agentMaxSlope: 45,
      });
    • Voxel width/depth of a cell. Smaller = higher resolution.

      Parameters

      • value: number

      Returns void

    • Voxel height.

      Parameters

      • value: number

      Returns void

    • Minimum floor-to-ceiling clearance for a walkable area.

      Parameters

      • value: number

      Returns void

    • Agent clearance radius from walls.

      Parameters

      • value: number

      Returns void

    • Maximum step height an agent can climb.

      Parameters

      • value: number

      Returns void

    • Maximum walkable slope in degrees.

      Parameters

      • value: number

      Returns void

    logger: RecastLogger | null | undefined

    Optional logger instance for diagnostic output. Assign any object with debug, info, and/or error methods. When null or undefined, all internal logging is silenced (default).

    recast.logger = console;
    recast.logger = { info: (msg) => myLogger.log('recast', msg) };
    navmeshType?: "solo" | "tiled"

    The navmesh type last built: solo or tiled. Set after the built event fires.

    Geometry

    • Load geometry from an OBJ file at path. In Node.js reads from disk; in the browser fetches via HTTP.

      Parameters

      Returns void

    • Async version of RecastModule.OBJLoader.

      Parameters

      • path: string

      Returns Promise<void>

    • Load geometry from an OBJ string or buffer already in memory.

      Parameters

      • data: string | ArrayBuffer
      • callback: (module: RecastModule) => void

      Returns void

    • Async version of RecastModule.OBJDataLoader.

      Parameters

      • data: string | ArrayBuffer

      Returns Promise<void>

    Persistence

    • Save the current tiled navmesh to path on disk (Node.js / Emscripten FS).

      Parameters

      • path: string

      Returns Promise<void>

    • Load a previously saved navmesh from path.

      Parameters

      • path: string

      Returns Promise<void>

    • Save the tile cache (dynamic obstacles + navmesh) to path.

      Parameters

      • path: string

      Returns Promise<void>

    • Load a previously saved tile cache from path.

      Parameters

      • path: string

      Returns Promise<void>

    Navmesh

    • Build a single-tile (solo) navmesh from the loaded geometry. Emits built on RecastModule.events when done.

      Returns void

    • Async version of RecastModule.buildSolo. Resolves with the navmesh type string.

      Returns Promise<string>

    • Build a tiled navmesh from the loaded geometry. Emits built on RecastModule.events when done.

      Returns void

    • Async version of RecastModule.buildTiled. Resolves with the navmesh type string.

      Returns Promise<string>

    • Rebuild all tiles in the tiled navmesh (e.g. after adding off-mesh connections or obstacles).

      Returns void

    Pathfinding

    • Async pathfinding between two points. Resolves with an array of waypoints along the path.

      Parameters

      • start: Vec3
      • end: Vec3
      • Optionalmax: number

        Maximum number of waypoints (default: 100).

      Returns Promise<Vec3[]>

    • Find the navmesh point nearest to the given position within an extent box. Resolves with the nearest point.

      Parameters

      Returns Promise<Vec3>

    • Find the polygon nearest to the given position within an extent box. Resolves with the polygon object, or null if none is found.

      Parameters

      Returns Promise<NavPoly | null>

    • Get a random walkable point on the navmesh. Resolves with the point.

      Returns Promise<Vec3>

    • Find all polygons within a bounding-box centred at the given position. Resolves with an array of polygon objects, or null on failure.

      Parameters

      • posX: number
      • posY: number
      • posZ: number
      • extX: number
      • extY: number
      • extZ: number
      • OptionalmaxPolys: number

        Maximum number of polygons to return (default: 1000).

      Returns Promise<NavPoly[] | null>

    • Set traversal flags on all polygons within a bounding-box. Use the FLAG_* constants for the flags bitmask.

      Parameters

      • posX: number
      • posY: number
      • posZ: number
      • extX: number
      • extY: number
      • extZ: number
      • flags: number

      Returns void

    • Set traversal flags on a specific polygon by its reference.

      Parameters

      • ref: number
      • flags: number

      Returns void

    FLAG_WALK: 1

    Poly flag: walkable surface.

    FLAG_SWIM: 2

    Poly flag: swimmable surface.

    FLAG_DOOR: 4

    Poly flag: door (can be opened/closed).

    FLAG_JUMP: 8

    Poly flag: jumpable surface.

    FLAG_DISABLED: 16

    Poly flag: disabled (agents cannot traverse).

    FLAG_ALL: 65535

    Poly flag: all flags set.

    Obstacles

    • Add a cylindrical obstacle to the tile cache. Returns the obstacle reference ID, or -1 on failure.

      Parameters

      • x: number
      • y: number
      • z: number
      • radius: number

      Returns number

    • Remove a temporary obstacle by its reference.

      Parameters

      • obstacleRef: number

      Returns void

    • Remove all temporary obstacles.

      Returns void

    • Async: resolves with all active obstacles.

      Returns Promise<TempObstacle[]>

    Zones

    zones: Record<string, Zone>

    Named zones keyed by zone name. Populated by RecastModule.setZones.

    • Create named zones with initial polygon references and flags.

      Parameters

      Returns void

      recast.setZones({
      water: {
      efs: [polyRef1, polyRef2],
      initialFlags: [recast.FLAG_SWIM]
      }
      });
    Zone: typeof Zone

    The Zone constructor — use to create zones manually.

    Off-Mesh Connections

    • Add a custom off-mesh connection (e.g. a jump or ladder link).

      Parameters

      • startX: number
      • startY: number
      • startZ: number
      • endX: number
      • endY: number
      • endZ: number
      • radius: number
      • bidirectional: boolean

        true for bidirectional, false for one-way.

      Returns void

    Crowd

    • Initialise the crowd system. Must be called once before adding agents.

      Parameters

      • maxAgents: number

        Maximum number of simultaneous agents.

      • maxAgentRadius: number

        Maximum agent radius (used to size internal buffers).

      Returns void

    • Add a crowd agent. Returns the agent index used to identify it in subsequent calls.

      Parameters

      Returns number

      const id = recast.addAgent({
      position: { x: 0, y: 0, z: 0 },
      radius: 0.5, height: 1.8,
      maxAcceleration: 8,
      maxSpeed: 3.5
      });
    • Update behavioral parameters of an existing crowd agent. All fields are required — unspecified fields are reset to 0. Use RecastModule.mergeCrowdAgentParameters to perform a partial update. Position is managed by the crowd simulation and cannot be set directly.

      Parameters

      Returns void

    • Read the current behavioral parameters of a crowd agent as a JSON string. Returns "null" if the agent index is invalid or the agent is inactive.

      Parameters

      • agentId: number

      Returns string

    • Update a subset of crowd agent parameters. Reads the agent's current parameters first and merges with the provided options, so unspecified fields retain their current values.

      Parameters

      • agentId: number
      • options: Partial<Omit<AgentOptions, "position">>

      Returns void

    • Remove a crowd agent by its index.

      Parameters

      • agentId: number

      Returns void

    • Request an agent to move toward a target position.

      Parameters

      • agentId: number
      • x: number
      • y: number
      • z: number

      Returns void

    • Request an agent to move with a specific velocity vector.

      Parameters

      • agentId: number
      • x: number
      • y: number
      • z: number

      Returns void

    • Advance the crowd simulation by dt seconds. Triggers an update event on RecastModule.events with the active agent list.

      Parameters

      • dt: number

      Returns void

    • Retrieve all currently active agents via callback.

      Parameters

      • Optionalcallback_id: number

      Returns void

    CROWD_ANTICIPATE_TURNS: 1

    Crowd update flag: enable anticipation of turns.

    CROWD_OBSTACLE_AVOIDANCE: 2

    Crowd update flag: enable obstacle avoidance.

    CROWD_SEPARATION: 4

    Crowd update flag: enable separation between agents.

    CROWD_OPTIMIZE_VIS: 8

    Crowd update flag: enable path visibility optimisation.

    CROWD_OPTIMIZE_TOPO: 16

    Crowd update flag: enable path topology optimisation.

    Plugins

    • Install a steering behavior plugin on this recast instance. The plugin class must implement a static install(recastInstance) method. Returns the recast instance for chaining.

      Parameters

      Returns this

      import { FlockGroup } from 'recastjs/plugins/flock';
      import { Formation } from 'recastjs/plugins/formation';
      recast.withPlugin(FlockGroup).withPlugin(Formation);

    Flock

    FlockGroup?: typeof FlockGroup

    The FlockGroup constructor, available after recast.withPlugin(FlockGroup).

    Formation

    Formation?: typeof Formation

    The Formation constructor, available after recast.withPlugin(Formation).

    Events

    The underlying event emitter. Emits:

    • built (type: string) — after buildSolo() or buildTiled() completes.
    • update (agents: CrowdAgent[]) — after each crowdUpdate() call.
    • Shorthand for recast.events.on(type, listener).

      Parameters

      • type: string
      • listener: (...args: any[]) => void

      Returns void

    • Shorthand for recast.events.off(type, listener).

      Parameters

      • type: string
      • listener: (...args: any[]) => void

      Returns void

    • Shorthand for recast.events.emit(type, ...args).

      Parameters

      • type: string
      • ...args: any[]

      Returns void

    Rendering

    • Provide a WebGL rendering context for debug drawing.

      Parameters

      • glContext: WebGLRenderingContext

      Returns void

    glContext?: WebGLRenderingContext

    The current WebGL context set via RecastModule.setGLContext.

    • Draw a named GL object using the current RecastModule.glContext.

      Parameters

      • objectName: string

      Returns void