Fast node.js pathfinding on workers for grid-based games.
.
Documentation
.
npm i pathfinding-worker
.
const pathfinding = new Pathfinding(
config: PathfindingConfig
)
config
- Pathfinding configuration
Prop | Description | Default |
---|---|---|
loopRate | Finding loop rate | 200 ms |
resourceLimits | Worker resource limits | - |
pathfinding.destroy()
.
const layer = pathfinding.createLayer(
grid: PathfindingGrid,
)
grid
- Grid with walkable tiles
layer.remove()
.
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
layer.cancel(id: number)
id
- Task id
.
layer.setWalkable(
position: PathfindingPosition,
value: number,
)
position
- Tile positionstate
- Walkable state
const walkable = pathfinder.isWalkable(
position: PathfindingPosition,
)
position
- Tile position
.
layer.setWeight(
position: PathfindingPosition,
value: number,
)
position
- Tile positionvalue
- New weight
layer.resetWeight(
position: PathfindingPosition,
)
position
- Tile position
const weight = layer.getWeight(
position: PathfindingPosition,
)
position
- Tile position
.
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);
})