From 52ed27e16f35eea0abf07a390e6e3e2f69afc3da Mon Sep 17 00:00:00 2001 From: Thilo Behnke Date: Mon, 18 Apr 2022 19:30:26 +0200 Subject: [PATCH] add todo --- src/lib.rs | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 6d765b5..dc797b7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -346,6 +346,9 @@ impl Field { let mut collisions = self.detect_collisions(); for mut collision in collisions.iter_mut() { + let players = &self.players; + let balls = &self.balls; + // TODO: Find obj by id. if !collision.obj_a.is_static { collision.obj_a.vel.invert(); } @@ -357,32 +360,32 @@ impl Field { fn detect_collisions(&mut self) -> Vec { let balls = self.balls(); + let players = self.players(); let mut collisions = vec![]; for ball in balls.into_iter() { - let players = self.players(); let collision_opt = players.into_iter().find(|p| p.obj.bounding_box().overlaps(&ball.obj.bounding_box())); if let None = collision_opt { continue; } let player = collision_opt.unwrap(); // TODO: This can cause multiple mutable refs of the same player/ball object and therefore does not compile. - collisions.push(Collision {obj_a: &mut player.obj, obj_b: &mut ball.obj}); + collisions.push(Collision {obj_a: player.obj.id, obj_b: ball.obj.id}); } collisions } - pub fn players(&mut self) -> Vec<&mut Player> { - self.players.iter_mut().collect() + pub fn players(&self) -> Vec<&Player> { + self.players().iter().collect() } - pub fn balls(&mut self) -> Vec<&mut Ball> { - self.balls.iter_mut().collect() + pub fn balls(&self) -> Vec<&Ball> { + self.balls.iter().collect() } } #[derive(Debug)] -pub struct Collision<'a> { - obj_a: &'a mut GameObject, - obj_b: &'a mut GameObject +pub struct Collision { + obj_a: u16, + obj_b: u16 }