use super::*;
#[derive(Clone, Data, Debug, New, PartialEq)]
pub struct SpatialHashGrid2D {
#[get(type(copy))]
pub(crate) cell_size: f64,
#[get(type(copy))]
#[set(pub(crate))]
#[new(skip)]
pub(crate) inverse_cell_size: f64,
#[get_mut(pub(crate))]
#[new(skip)]
pub(crate) cells: SpatialCellMap2D,
}
#[derive(Clone, Data, Debug, New, PartialEq)]
pub struct SpatialHashGrid3D {
#[get(type(copy))]
pub(crate) cell_size: f64,
#[get(type(copy))]
#[set(pub(crate))]
#[new(skip)]
pub(crate) inverse_cell_size: f64,
#[get_mut(pub(crate))]
#[new(skip)]
pub(crate) cells: SpatialCellMap3D,
}
#[derive(Clone, Copy, Data, Debug, New, PartialEq)]
pub struct QuadTreeEntry2D {
#[get(type(copy))]
pub(crate) index: usize,
#[get(type(copy))]
pub(crate) min: Vector2D,
#[get(type(copy))]
pub(crate) max: Vector2D,
}
#[derive(Clone, Data, Debug, New, PartialEq)]
pub struct QuadTreeNode2D {
#[get(type(copy))]
pub(crate) min: Vector2D,
#[get(type(copy))]
pub(crate) max: Vector2D,
#[get(type(copy))]
pub(crate) depth: usize,
#[set(pub(crate))]
pub(crate) children: QuadTreeChildren2D,
#[get(type(copy))]
#[set(pub(crate))]
pub(crate) leaf: bool,
#[get(type(copy))]
#[set(pub(crate))]
pub(crate) loose: bool,
pub(crate) entries: QuadTreeEntryList2D,
}
#[derive(Clone, Data, Debug, PartialEq)]
pub struct QuadTree2D {
pub(crate) nodes: QuadTreeNodeList2D,
#[get(type(copy))]
pub(crate) capacity: usize,
#[get(type(copy))]
pub(crate) max_depth: usize,
#[get(type(copy))]
#[set(pub(crate))]
pub(crate) count: usize,
}