pathfinding-worker
v2.7.1
Published
Fast node.js pathfinding on workers for grid-based games
Maintainers
Readme
🧩 Pathfinding Worker
Fast node.js pathfinding on workers for grid-based games.
.
Documentation
.
Install
npm i pathfinding-worker.
General
⚡️ Create worker thread
const pathfinding = new Pathfinding(
config: PathfindingConfig
)config- Pathfinding configuration
| Prop | Description | Default | | --------------- | ----------------------------------------------------------------------------------------- | ------- | | taskFindingRate | Delay to handle next task after all previous are done | 100 ms | | maxStackSize | Max recursive depth to handle task in one tick | 128 | | resourceLimits | Worker resource limits | - |
⚡️ Terminate worker thread
pathfinding.destroy();.
Layers
⚡️ Create a new layer of grid
const layer = pathfinding.createLayer(
grid: PathfindingGrid,
)grid- Grid with walkable tiles
⚡️ Get list of created layers
pathfinding.getLayers();⚡️ Get layer by id
pathfinding.getLayer(
id: string
)id- Layer id
⚡️ Remove exist layer of grid
layer.remove();.
Finding
⚡️ Create pathfinder task
const idTask = layer.findPath(
config: PathfindingTaskConfig,
callback: PathfindingTaskCallback,
)config- Task configuration
| Prop | Description | Default | | --------- | ------------------------- | ------- | | from | Begin tile position | | | to | End tile position | | | diagonals | Allow diagonal directions | true |
callback- Callback with result
| Prop | Description | Type | | ------ | ------------------- | --------------- | | path | Path to target cell | Array<{ x, y }> | | weight | Total path weight | number |
⚡️ Cancel pathfinder task
layer.cancel(id: number)id- Task id
.
Tile walkable
⚡️ Set walkable state
layer.setWalkable(
position: PathfindingPosition,
value: number,
)position- Tile positionstate- Walkable state
⚡️ Get walkable state
const walkable = pathfinder.isWalkable(
position: PathfindingPosition,
)position- Tile position
.
Tile weight
⚡️ Set weight
layer.setWeight(
position: PathfindingPosition,
value: number,
)position- Tile positionvalue- New weight
⚡️ Reset weight
layer.resetWeight(
position: PathfindingPosition,
)position- Tile position
⚡️ Get weight
const weight = layer.getWeight(
position: PathfindingPosition,
)position- Tile position
.
Example
const pathfinding = new Pathfinding({
loopRate: 500,
});
const layer = pathfinding.createLayer([
[true, true, true, true],
[true, true, false, true],
[true, false, false, true],
[true, false, false, false],
]);
layer.findPath(
{
from: { x: 0, y: 0 },
to: { x: 3, y: 2 },
},
({ path, cost }) => {
console.log("Result path:", path);
console.log("Total cost:", cost);
}
);