bevy_northstar 0.3.2

A Bevy plugin for Hierarchical Pathfinding
Documentation
# Migrating From v0.2.X to v0.3.X

## GridSettings → GridSettingsBuilder

`GridSettings` has been replaced with `GridSettingsBuilder`.

Replace
```rust,no_run
let grid_settings = GridSettings {
    width: 16,
    height: 16,
    chunk_size: 4,
    collision: true,
    ..Default::default()
}

let grid = CardinalGrid::new(&grid_settings);
```

with

```rust,no_run
let grid_settings = GridSettingsBuilder::new_2d(16, 16)
    .chunk_size(4)
    .enable_collision()
    .build()

let grid = CardinalGrid::new(&grid_settings);
```

## GridPos → AgentPos
`GridPos` has been renamed to `AgentPos`. This is just a simple rename for clarity.

## Point → NavCell, Nav | Wall -> Passable, Impassable
`Point` has been reworked for clarity. `Point` has been renamed to `NavCell` but the API has been updated to remove user's need to interact with `NavCell` for normal use.

`Grid` functions now take the `Nav` enum to definite mobility and movement cost for a `Grid` cell.

Replace
```rust,no_run
// Creates a wall at grid cell 8,8,0
grid.set_point(UVec3::new(8, 8, 0), Point::new(u32::MAX, true));
// Set the cost for a passable grid cell
grid.set_point(UVec3::new(4, 4, 0), Point::new(4, false));
```
with
```rust,no_run
grid.set_nav(UVec3::new(8, 8, 0), Nav::Impassable);
grid.set_nav(UVec3::new(4, 4, 0), Nav::Passable(4));
```

## Pathfind Component Rework, New PathfindMode
The `Pathfind` component has been reworked with chaining setup functions to ensure configuration can be added in the future without breaking changes.

`PathfindMode` enum was added set which pathfinding method is desired.

Before
```rust,no_run
// You may have forced an A* path like this before
.insert(Pathfind {
    goal: UVec3::new(8, 8, 0),
    use_astar: true,
})
// or the shorthand for regular HPA*
.insert(Pathfind::new(UVec3::new(8, 8, 0)))
// shorthand A*
.insert(Pathfind::new_astar(UVec3::new(8, 8, 4)))
```
Is now
```rust,no_run
.insert(Pathfind::new(UVec3::(8, 8, 0).mode(PathfindMode::AStar)))

// You can use the new_2d and new_3d constructors without creating a UVec as well
.insert(Pathfind::new_2d(8, 8))
.insert(Pathfind::new_3d(8, 8, 4).mode(PathfindMode::AStar))
```

## DebugMap → DebugGrid, DebugGridBuilder, & DebugOffset
`DebugMap` has been renamed to `DebugGrid` for clarity and a builder pattern has been added to make it cleaner to configure.

It was recommended before to put `DebugMap` as the child of your `Grid` entity, but it is now **required**.

Change
```rust,no_run
grid_entity.with_child((
    DebugMap {
        tile_width: 8,
        tile_height: 8,
        map_type: DebugMapType::Square,
        draw_chunks: true,
        draw_points: false,
        draw_entrances: true,
        draw_cached_paths: false,
    },
    Transform::from_translation(offset.extend(0.0)),
));
```

to
```rust,no_run
grid_entity.with_child((
    DebugGridBuilder::new(8, 8)
        .enable_chunks()
        .enable_entrances()
        .build(),
    // Add the offset to the debug gizmo so that it aligns with your tilemap.
    DebugOffset(Vec2::new(-360.0, -500.0)),
));
```

`DebugMapType` has been renamed to `DebugTilemapType`. You only need to set it if you're using isometric. `DebugGridBuilder::new(8, 8).isometric().build()`.

## DebugPath

`tile_width`, `tile_height`, and `map_type` has been removed from the `DebugPath` component.

These fields are now determined by getting the attached `DebugGrid` based on the entities relationship to the `Grid` component. Ensure that you add the `AgentOfGrid` relationship to your pathfinding (player/npc etc) entities.

Replace
```rust,no_run
.insert(DebugPath {
    tile_width: 8,
    tile_height: 8,
    map_type: DebugMapType::Square,
    color,
    draw_unrefined: false,
})
```
with
```rust,no_run
.insert(DebugPath::new(color))
.insert(AgentOfGrid(grid_entity))
```