aboutsummaryrefslogtreecommitdiff
path: root/src_testbed
diff options
context:
space:
mode:
authorSébastien Crozet <developer@crozet.re>2020-11-20 17:39:28 +0100
committerGitHub <noreply@github.com>2020-11-20 17:39:28 +0100
commit3b9c312fb393e6abdce1afb6dcbeb5e14e1f65c0 (patch)
treed2236a6adfd10a8478f63628c766200b93a97a2a /src_testbed
parent1b0f39073fa5f87ec275fff0125649de123e6fa9 (diff)
parent11e4ccbe930b96a4c04208accd24a4519b783c8c (diff)
downloadrapier-3b9c312fb393e6abdce1afb6dcbeb5e14e1f65c0.tar.gz
rapier-3b9c312fb393e6abdce1afb6dcbeb5e14e1f65c0.tar.bz2
rapier-3b9c312fb393e6abdce1afb6dcbeb5e14e1f65c0.zip
Merge pull request #64 from dimforge/explicit_wake_up
Add more explicit parameters to wake-up a rigid-body
Diffstat (limited to 'src_testbed')
-rw-r--r--src_testbed/box2d_backend.rs10
-rw-r--r--src_testbed/nphysics_backend.rs4
-rw-r--r--src_testbed/physx_backend.rs4
-rw-r--r--src_testbed/testbed.rs10
4 files changed, 16 insertions, 12 deletions
diff --git a/src_testbed/box2d_backend.rs b/src_testbed/box2d_backend.rs
index 213819a..0d0664f 100644
--- a/src_testbed/box2d_backend.rs
+++ b/src_testbed/box2d_backend.rs
@@ -71,10 +71,10 @@ impl Box2dWorld {
let def = b2::BodyDef {
body_type,
- position: na_vec_to_b2_vec(body.position.translation.vector),
- angle: body.position.rotation.angle(),
- linear_velocity: na_vec_to_b2_vec(body.linvel),
- angular_velocity: body.angvel,
+ position: na_vec_to_b2_vec(body.position().translation.vector),
+ angle: body.position().rotation.angle(),
+ linear_velocity: na_vec_to_b2_vec(*body.linvel()),
+ angular_velocity: body.angvel(),
linear_damping,
angular_damping,
..b2::BodyDef::new()
@@ -223,7 +223,7 @@ impl Box2dWorld {
if let Some(pb2_handle) = self.rapier2box2d.get(&handle) {
let b2_body = self.world.body(*pb2_handle);
let pos = b2_transform_to_na_isometry(b2_body.transform().clone());
- body.set_position(pos);
+ body.set_position(pos, false);
for coll_handle in body.colliders() {
let collider = &mut colliders[*coll_handle];
diff --git a/src_testbed/nphysics_backend.rs b/src_testbed/nphysics_backend.rs
index 2896377..0ef3d36 100644
--- a/src_testbed/nphysics_backend.rs
+++ b/src_testbed/nphysics_backend.rs
@@ -46,7 +46,7 @@ impl NPhysicsWorld {
for (rapier_handle, rb) in bodies.iter() {
// let material = physics.create_material(rb.collider.friction, rb.collider.friction, 0.0);
- let nphysics_rb = RigidBodyDesc::new().position(rb.position).build();
+ let nphysics_rb = RigidBodyDesc::new().position(*rb.position()).build();
let nphysics_rb_handle = nphysics_bodies.insert(nphysics_rb);
rapier2nphysics.insert(rapier_handle, nphysics_rb_handle);
@@ -161,7 +161,7 @@ impl NPhysicsWorld {
let mut rb = bodies.get_mut(*rapier_handle).unwrap();
let ra = self.bodies.rigid_body(*nphysics_handle).unwrap();
let pos = *ra.position();
- rb.set_position(pos);
+ rb.set_position(pos, false);
for coll_handle in rb.colliders() {
let collider = &mut colliders[*coll_handle];
diff --git a/src_testbed/physx_backend.rs b/src_testbed/physx_backend.rs
index 74d6af2..7fcb813 100644
--- a/src_testbed/physx_backend.rs
+++ b/src_testbed/physx_backend.rs
@@ -154,7 +154,7 @@ impl PhysxWorld {
use physx::rigid_static::RigidStatic;
use physx::transform;
- let pos = transform::gl_to_px_tf(rb.position.to_homogeneous().into_glam());
+ let pos = transform::gl_to_px_tf(rb.position().to_homogeneous().into_glam());
if rb.is_dynamic() {
let actor = unsafe {
physx_sys::PxPhysics_createRigidDynamic_mut(physics.get_raw_mut(), &pos)
@@ -406,7 +406,7 @@ impl PhysxWorld {
let ra = self.scene.get_rigid_actor(*physx_handle).unwrap();
let pos = ra.get_global_pose().into_na();
let iso = na::convert_unchecked(pos);
- rb.set_position(iso);
+ rb.set_position(iso, false);
if rb.is_kinematic() {}
diff --git a/src_testbed/testbed.rs b/src_testbed/testbed.rs
index fddeabe..1e0dd5e 100644
--- a/src_testbed/testbed.rs
+++ b/src_testbed/testbed.rs
@@ -414,7 +414,7 @@ impl Testbed {
{
if self.state.selected_backend == BOX2D_BACKEND {
self.box2d = Some(Box2dWorld::from_rapier(
- self.gravity,
+ self.physics.gravity,
&self.physics.bodies,
&self.physics.colliders,
&self.physics.joints,
@@ -647,7 +647,7 @@ impl Testbed {
if self.state.selected_backend == BOX2D_BACKEND {
self.box2d.as_mut().unwrap().step(
&mut self.physics.pipeline.counters,
- &self.integration_parameters,
+ &self.physics.integration_parameters,
);
self.box2d.as_mut().unwrap().sync(
&mut self.physics.bodies,
@@ -758,7 +758,7 @@ impl Testbed {
for to_delete in &colliders[..num_to_delete] {
self.physics
.colliders
- .remove(to_delete[0], &mut self.physics.bodies);
+ .remove(to_delete[0], &mut self.physics.bodies, true);
}
}
WindowEvent::Key(Key::D, Action::Release, _) => {
@@ -1576,11 +1576,13 @@ CCD: {:.2}ms
}
if self.state.flags.contains(TestbedStateFlags::DEBUG) {
+ let t = instant::now();
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 serialization_time = instant::now() - t;
let hash_bf = md5::compute(&bf);
let hash_nf = md5::compute(&nf);
let hash_bodies = md5::compute(&bs);
@@ -1588,6 +1590,7 @@ CCD: {:.2}ms
let hash_joints = md5::compute(&js);
profile = format!(
r#"{}
+Serialization time: {:.2}ms
Hashes at frame: {}
|_ Broad phase [{:.1}KB]: {:?}
|_ Narrow phase [{:.1}KB]: {:?}
@@ -1595,6 +1598,7 @@ Hashes at frame: {}
|_ Colliders [{:.1}KB]: {:?}
|_ Joints [{:.1}KB]: {:?}"#,
profile,
+ serialization_time,
self.state.timestep_id,
bf.len() as f32 / 1000.0,
hash_bf,