Skip to content

Commit

Permalink
put back physics & clippy
Browse files Browse the repository at this point in the history
  • Loading branch information
fabienjuif committed Nov 24, 2023
1 parent f4543d1 commit 9b55faf
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 57 deletions.
3 changes: 1 addition & 2 deletions camera/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@ use bevy::{
system::{Commands, Res, ResMut},
},
gizmos::{gizmos::Gizmos, GizmoConfig},
log::{debug, warn},
math::{self, Vec2, Vec3},
math::{Vec2, Vec3},
prelude::{
default, App, Camera2dBundle, Entity, Plugin, PostUpdate, Query, Time, Timer, TimerMode,
Transform, With, Without,
Expand Down
2 changes: 1 addition & 1 deletion src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ use bevy::{
prelude::*,
DefaultPlugins,
};
use bevy_camera::{CameraDebugPlugin, CameraPlugin};
use bevy_camera::CameraPlugin;
use bevy_rapier2d::prelude::*;
use castles::CastlesPlugin;
use health::HealthPlugin;
Expand Down
108 changes: 54 additions & 54 deletions src/physics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -87,58 +87,58 @@ fn check_collisions(
mut event_writer: EventWriter<CollisionEvent>,
query: Query<Entity>,
) {
// let mut before = collisions.clone();
// let mut events = Vec::<CollisionEvent>::new();

// // first pass detects intersections
// for (e1, e2, _) in rapier_context.intersection_pairs() {
// if !query.contains(e1) || !query.contains(e2) {
// // entity are removed from ECS
// // so we are not spawning events for them
// // they will be removed in last loop
// continue;
// }

// let pair = EntityPair::new(e1, e2);
// before.remove(&pair);
// if collisions.contains(&pair) {
// // we already have a started event for this intersection
// continue;
// }

// collisions.add(pair);
// events.push(CollisionEvent::Started(pair.entity1, pair.entity2));
// }

// // second pass detects contacts
// for c in rapier_context.contact_pairs() {
// let e1 = c.collider1();
// let e2 = c.collider2();

// if !query.contains(e1) || !query.contains(e2) {
// // entity are removed from ECS
// // so we are not spawning events for them
// // they will be removed in last loop
// continue;
// }

// let pair = EntityPair::new(e1, e2);
// before.remove(&pair);
// if collisions.contains(&pair) {
// // we already have a started event for this intersection
// continue;
// }

// collisions.add(pair);
// events.push(CollisionEvent::Started(e1, e2));
// }

// // emit ended collisions
// // TODO: implement iter() that return an iterator on the collisions struct
// for (pair, _) in before.pairs {
// collisions.remove(&pair);
// events.push(CollisionEvent::Stopped(pair.entity1, pair.entity2));
// }

// event_writer.send_batch(events);
let mut before = collisions.clone();
let mut events = Vec::<CollisionEvent>::new();

// first pass detects intersections
for (e1, e2, _) in rapier_context.intersection_pairs() {
if !query.contains(e1) || !query.contains(e2) {
// entity are removed from ECS
// so we are not spawning events for them
// they will be removed in last loop
continue;
}

let pair = EntityPair::new(e1, e2);
before.remove(&pair);
if collisions.contains(&pair) {
// we already have a started event for this intersection
continue;
}

collisions.add(pair);
events.push(CollisionEvent::Started(pair.entity1, pair.entity2));
}

// second pass detects contacts
for c in rapier_context.contact_pairs() {
let e1 = c.collider1();
let e2 = c.collider2();

if !query.contains(e1) || !query.contains(e2) {
// entity are removed from ECS
// so we are not spawning events for them
// they will be removed in last loop
continue;
}

let pair = EntityPair::new(e1, e2);
before.remove(&pair);
if collisions.contains(&pair) {
// we already have a started event for this intersection
continue;
}

collisions.add(pair);
events.push(CollisionEvent::Started(e1, e2));
}

// emit ended collisions
// TODO: implement iter() that return an iterator on the collisions struct
for (pair, _) in before.pairs {
collisions.remove(&pair);
events.push(CollisionEvent::Stopped(pair.entity1, pair.entity2));
}

event_writer.send_batch(events);
}

0 comments on commit 9b55faf

Please sign in to comment.