diff --git a/game/units/src/units_spacial_set.rs b/game/units/src/units_spacial_set.rs index 647449a..9f08ade 100644 --- a/game/units/src/units_spacial_set.rs +++ b/game/units/src/units_spacial_set.rs @@ -1,5 +1,5 @@ -use bevy::prelude::Entity; -use quadtree_rs::Quadtree; +use bevy::prelude::*; +use quadtree_rs::{point::Point, Quadtree}; use shared::tags::Faction; use world_generation::hex_utils::HexCoord; @@ -13,11 +13,29 @@ pub struct UnitEntity { } pub struct UnitSpacialSet { - tree: Quadtree, + tree: Quadtree, } impl UnitSpacialSet { - pub fn new() { + pub fn new(map_size: f32) -> Self { + let n = f32::log2(map_size) / f32::log2(2.0); + return Self { + tree: Quadtree::new(n.ceil() as usize), + }; + } + pub fn add_unit(&mut self, unit: UnitEntity, pos: Vec3) -> Option { + let p = pos.xz().as_uvec2(); + return self.tree.insert_pt( + Point { + x: p.x as usize, + y: p.y as usize, + }, + unit, + ); + } + + pub fn move_unit(&mut self, handle: u64) { + todo!(); } }