Fix mass property update when adding a collider.
This commit is contained in:
@@ -225,6 +225,28 @@ impl PhysxWorld {
|
||||
}
|
||||
}
|
||||
|
||||
// Update mass properties.
|
||||
for (rapier_handle, physx_handle) in rapier2physx.iter() {
|
||||
let rb = &bodies[*rapier_handle];
|
||||
if let Some(mut ra) = scene.get_dynamic_mut(*physx_handle) {
|
||||
let densities: Vec<_> = rb
|
||||
.colliders()
|
||||
.iter()
|
||||
.map(|h| colliders[*h].density())
|
||||
.collect();
|
||||
|
||||
unsafe {
|
||||
physx_sys::PxRigidBodyExt_updateMassAndInertia_mut(
|
||||
ra.as_ptr_mut().ptr as *mut physx_sys::PxRigidBody,
|
||||
densities.as_ptr(),
|
||||
densities.len() as u32,
|
||||
std::ptr::null(),
|
||||
false,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let mut res = Self {
|
||||
physics,
|
||||
cooking,
|
||||
@@ -390,7 +412,7 @@ impl PhysxWorld {
|
||||
|
||||
for coll_handle in rb.colliders() {
|
||||
let collider = &mut colliders[*coll_handle];
|
||||
collider.set_position_debug(iso * collider.delta());
|
||||
collider.set_position_debug(iso * collider.position_wrt_parent());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user