navmesh
Version:
A library for fast pathfinding using navigation meshes in JS
42 lines (32 loc) • 950 B
text/typescript
import { Point } from "../common-types";
/**
* Internal helper class to manage a queue of points when parsing a square map.
*/
export class PointQueue {
private data: Point[] = [];
add(point: Point) {
this.data.push(point);
}
shift() {
return this.data.shift();
}
isEmpty() {
return this.data.length === 0;
}
containsPoint(point: Point) {
return this.data.find((p) => p.x === point.x && p.y === point.y) !== undefined ? true : false;
}
containsAllPoints(points: Point[]) {
return points.every((p) => this.containsPoint(p));
}
getIndexOfPoint(point: Point) {
return this.data.findIndex((p) => p.x == point.x && p.y == point.y);
}
removePoint(point: Point) {
const index = this.getIndexOfPoint(point);
if (index !== -1) this.data.splice(index, 1);
}
removePoints(points: Point[]) {
points.forEach((p) => this.removePoint(p));
}
}