aboutsummaryrefslogtreecommitdiff
path: root/src_testbed
diff options
context:
space:
mode:
Diffstat (limited to 'src_testbed')
-rw-r--r--src_testbed/engine.rs16
-rw-r--r--src_testbed/testbed.rs38
2 files changed, 39 insertions, 15 deletions
diff --git a/src_testbed/engine.rs b/src_testbed/engine.rs
index 62ab37e..27a8510 100644
--- a/src_testbed/engine.rs
+++ b/src_testbed/engine.rs
@@ -609,7 +609,7 @@ impl GraphicsManager {
}
}
- pub fn draw(&mut self, colliders: &ColliderSet, window: &mut Window) {
+ pub fn draw(&mut self, bodies: &RigidBodySet, colliders: &ColliderSet, window: &mut Window) {
// use kiss3d::camera::Camera;
// println!(
// "camera eye {:?}, at: {:?}",
@@ -618,6 +618,20 @@ impl GraphicsManager {
// );
for (_, ns) in self.b2sn.iter_mut() {
for n in ns.iter_mut() {
+ /*
+ if let Some(co) = colliders.get(n.collider()) {
+ let bo = &bodies[co.parent()];
+
+ if bo.is_dynamic() {
+ if bo.is_sleeping() {
+ n.set_color(Point3::new(1.0, 0.0, 0.0));
+ } else {
+ n.set_color(Point3::new(0.0, 1.0, 0.0));
+ }
+ }
+ }
+ */
+
n.update(colliders);
n.draw(window);
}
diff --git a/src_testbed/testbed.rs b/src_testbed/testbed.rs
index ba28a4b..6c03ef4 100644
--- a/src_testbed/testbed.rs
+++ b/src_testbed/testbed.rs
@@ -824,7 +824,7 @@ impl Testbed {
.physics
.bodies
.iter()
- .filter(|e| e.1.is_dynamic())
+ .filter(|e| !e.1.is_static())
.map(|e| e.0)
.collect();
let num_to_delete = (dynamic_bodies.len() / 10).max(1);
@@ -1367,7 +1367,7 @@ impl State for Testbed {
}
} else {
for (_, mut body) in self.physics.bodies.iter_mut() {
- body.wake_up();
+ body.wake_up(true);
body.activation.threshold = -1.0;
}
}
@@ -1571,7 +1571,8 @@ impl State for Testbed {
}
self.highlight_hovered_body(window);
- self.graphics.draw(&self.physics.colliders, window);
+ self.graphics
+ .draw(&self.physics.bodies, &self.physics.colliders, window);
#[cfg(feature = "fluids")]
{
@@ -1648,26 +1649,35 @@ Fluids: {:.2}ms
}
if self.state.flags.contains(TestbedStateFlags::DEBUG) {
- let hash_bf = md5::compute(&bincode::serialize(&self.physics.broad_phase).unwrap());
- let hash_nf = md5::compute(&bincode::serialize(&self.physics.narrow_phase).unwrap());
- let hash_bodies = md5::compute(&bincode::serialize(&self.physics.bodies).unwrap());
- let hash_colliders =
- md5::compute(&bincode::serialize(&self.physics.colliders).unwrap());
- let hash_joints = md5::compute(&bincode::serialize(&self.physics.joints).unwrap());
+ let bf = bincode::serialize(&self.physics.broad_phase).unwrap();
+ let nf = bincode::serialize(&self.physics.narrow_phase).unwrap();
+ let bs = bincode::serialize(&self.physics.bodies).unwrap();
+ let cs = bincode::serialize(&self.physics.colliders).unwrap();
+ let js = bincode::serialize(&self.physics.joints).unwrap();
+ let hash_bf = md5::compute(&bf);
+ let hash_nf = md5::compute(&nf);
+ let hash_bodies = md5::compute(&bs);
+ let hash_colliders = md5::compute(&cs);
+ let hash_joints = md5::compute(&js);
profile = format!(
r#"{}
Hashes at frame: {}
-|_ Broad phase: {:?}
-|_ Narrow phase: {:?}
-|_ Bodies: {:?}
-|_ Colliders: {:?}
-|_ Joints: {:?}"#,
+|_ Broad phase [{:.1}KB]: {:?}
+|_ Narrow phase [{:.1}KB]: {:?}
+|_ Bodies [{:.1}KB]: {:?}
+|_ Colliders [{:.1}KB]: {:?}
+|_ Joints [{:.1}KB]: {:?}"#,
profile,
self.state.timestep_id,
+ bf.len() as f32 / 1000.0,
hash_bf,
+ nf.len() as f32 / 1000.0,
hash_nf,
+ bs.len() as f32 / 1000.0,
hash_bodies,
+ cs.len() as f32 / 1000.0,
hash_colliders,
+ js.len() as f32 / 1000.0,
hash_joints
);
}