bevy_northstar 0.3.2

A Bevy plugin for Hierarchical Pathfinding
Documentation
# Manual Pathfinding

You don't need to use the pathfinding systems in the `NorthstarPlugin` in order to take advantage of this crate. 

You can use both, or choose to not add the `NorthstarPlugin` and call the pathfinding functions completely manually.

If you don't use `NorthstarPlugin` you'll need to maintain your own `BlockingMap` or `HashMap<UVec3, Entity>` to pass to the `pathfind` function to provide it a list of blocked positions.

All of the pathfinding calls can be done on the `Grid` component.

```rust,no_run
fn manual_pathfind(
    mut commands: Commands,
    player: Single<(Entity, &AgentPos, &MoveAction), With<Player>>,
    grid: Single<&CardinalGrid>,
    // If using the plugin you can use the BlockingMap resource for an auto-updated blocking list.
    blocking: Res<BlockingMap>,
) {
    let grid = grid.into_inner();
    let (player, grid_pos, move_action) = player.into_inner();

    let path = grid.pathfind(grid_pos.0, move_action.0, blocking, false);

    // Setting use_partial to true will allow the pathfinding to return a partial path if a complete path isn't found.

    // If you're not using collision you can pass an empty hashmap for the blocking map.
    let path = grid.pathfind(grid_pos.0, move_action.0, HashMap::new(), true);

    // There are also Coarse and AStar methods
    let path = grid.pathfind_coarse(grid_pos.0, move_action.0, blocking, false);
    let path = grid.pathfind_astar(grid_pos.0, move_action.0, blocking, false);
}
```

The `Grid` pathfinding methods return an `Option<Path>`. `None` will be returned if no viable path is found.