rust/hwphysics/src/collision.rs
changeset 15827 64b0a5cead86
parent 15380 6e3e5be8b2e2
child 15828 44b49f255e31
equal deleted inserted replaced
15826:325c03494444 15827:64b0a5cead86
   112             detected_collisions: DetectedCollisions::new(0),
   112             detected_collisions: DetectedCollisions::new(0),
   113         }
   113         }
   114     }
   114     }
   115 
   115 
   116     pub fn add(&mut self, gear_id: GearId, gear_data: CollisionData) {
   116     pub fn add(&mut self, gear_id: GearId, gear_data: CollisionData) {
   117         self.grid.insert_static(gear_id, &gear_data.bounds);
   117         self.grid.insert(gear_id, &gear_data.bounds);
   118     }
   118     }
   119 
   119 
   120     pub fn remove(&mut self, gear_id: GearId) {
   120     pub fn remove(&mut self, gear_id: GearId) {
   121         self.grid.remove(gear_id);
   121         self.grid.remove(gear_id, None);
   122     }
   122     }
   123 
   123 
   124     pub fn get(&mut self, gear_id: GearId) -> Option<CollisionData> {
   124     pub fn get(&mut self, gear_id: GearId) -> Option<CollisionData> {
   125         None
   125         None
   126     }
   126     }
   129         &mut self,
   129         &mut self,
   130         land: &Land2D<u32>,
   130         land: &Land2D<u32>,
   131         updates: &crate::physics::PositionUpdates,
   131         updates: &crate::physics::PositionUpdates,
   132     ) -> &DetectedCollisions {
   132     ) -> &DetectedCollisions {
   133         self.detected_collisions.clear();
   133         self.detected_collisions.clear();
   134         for (id, old_position, new_position) in updates.iter() {
       
   135             self.grid.update_position(id, old_position, new_position)
       
   136         }
       
   137 
       
   138         self.grid.check_collisions(&mut self.detected_collisions);
   134         self.grid.check_collisions(&mut self.detected_collisions);
   139 
   135 
   140         for (gear_id, collision) in self.enabled_collisions.iter() {
   136         for (gear_id, collision) in self.enabled_collisions.iter() {
   141             if collision
   137             if collision
   142                 .bounds
   138                 .bounds