use crate::algorithms::lifelong_planning_astar::LifelongPlanningAStar;
use crate::{
grid::{Grid, GridEditError},
point::Point,
replanning::GridReplanner,
search::{SearchRequest, SearchResult},
};
pub struct DStarLite {
replanner: LifelongPlanningAStar,
}
impl Default for DStarLite {
fn default() -> Self {
Self::new()
}
}
impl DStarLite {
#[must_use]
pub fn new() -> Self {
Self {
replanner: LifelongPlanningAStar::new(),
}
}
}
impl GridReplanner for DStarLite {
fn name(&self) -> &'static str {
"d-star-lite"
}
fn initialize(&mut self, grid: &Grid, request: SearchRequest) -> SearchResult {
self.replanner.initialize(grid, request)
}
fn update_cell(&mut self, point: Point, cell: crate::grid::Cell) {
self.replanner.update_cell(point, cell)
}
fn update_cost(&mut self, point: Point, cost: usize) -> Result<(), GridEditError> {
self.replanner.update_cost(point, cost)
}
fn replan(&mut self) -> SearchResult {
self.replanner.replan()
}
}