mirror of
https://github.com/thilo-behnke/wasm-pong.git
synced 2026-07-12 11:09:38 +00:00
add todo
This commit is contained in:
21
src/lib.rs
21
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<Collision> {
|
||||
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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user