import { Vector2 } from "three/src/Three"; import type { ReadonlyVector2 } from "../../../math/ReadonlyVector2"; import type { IGridCollidable } from "../../grid_physics2d/IGridCollidable"; /** * Pathfinder that uses the A* algorithm to find the shortest path between two points. * it works in grid coordinates. * it has iteration limits to prevent infinite loops. */ export declare class Pathfinder { private readonly _checkCollisionWidth; private readonly _checkCollisionHeight; private readonly _iterationLimit; private readonly _collideMaps; /** * * @param collideMaps collide maps to use for collision detection * @param checkCollisioWidth width of the collision check, * this value should be set to "gridCellWidth / 2", * if character is bigger than one grid cell you can increase the value accordingly. * @param checkCollisionHeight height of the collision check, * this value should be set to "gridCellHeight / 2", * if character is bigger than one grid cell you can increase the value accordingly. * @param iterationLimit maximum number of pathfinding iterations, If you want to passfind further, you need to increase the value */ constructor(collideMaps?: IGridCollidable[], checkCollisionWidth?: number, checkCollisionHeight?: number, iterationLimit?: number); /** * adds a new collide map to the list of collide maps * @param collideMap */ addCollideMap(collideMap: IGridCollidable): void; /** * removes a collide map from the list of collide maps * @param collideMap */ removeCollideMap(collideMap: IGridCollidable): void; /** * removes all collide maps */ removeAllCollideMaps(): void; /** * finds the shortest path between two points * @param startGridPosition start position in grid coordinates (integers value) * @param endGridPosition end position in grid coordinates (integers value) * @returns the shortest path between the two points */ findPath(startGridPosition: ReadonlyVector2, endGridPosition: ReadonlyVector2): Vector2[] | null; private getNeighbors; private calculatePath; private calculateDistanceCost; private getLowestFcostNode; private checkCollision; }