From 036a24614171eff0f99495b8b6f1c09e58cb4f9a Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Tue, 3 Nov 2020 14:29:47 +0100 Subject: Make cloning rigid-bodies and colliders more idiomatic. Fix #53 --- src/dynamics/rigid_body_set.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/dynamics/rigid_body_set.rs') diff --git a/src/dynamics/rigid_body_set.rs b/src/dynamics/rigid_body_set.rs index 83f1c51..2efc2cf 100644 --- a/src/dynamics/rigid_body_set.rs +++ b/src/dynamics/rigid_body_set.rs @@ -154,7 +154,11 @@ impl RigidBodySet { } /// Insert a rigid body into this set and retrieve its handle. - pub fn insert(&mut self, rb: RigidBody) -> RigidBodyHandle { + pub fn insert(&mut self, mut rb: RigidBody) -> RigidBodyHandle { + // Make sure the internal links are reset, they may not be + // if this rigid-body was obtained by cloning another one. + rb.reset_internal_links(); + let handle = self.bodies.insert(rb); let rb = &mut self.bodies[handle]; -- cgit From 0cf59d78bda1669226f861e438d43a08b099d747 Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Tue, 3 Nov 2020 14:43:21 +0100 Subject: Implement Clone for everything that can be cloned. --- src/dynamics/rigid_body_set.rs | 1 + 1 file changed, 1 insertion(+) (limited to 'src/dynamics/rigid_body_set.rs') diff --git a/src/dynamics/rigid_body_set.rs b/src/dynamics/rigid_body_set.rs index 2efc2cf..f7064ed 100644 --- a/src/dynamics/rigid_body_set.rs +++ b/src/dynamics/rigid_body_set.rs @@ -75,6 +75,7 @@ impl BodyPair { } #[cfg_attr(feature = "serde-serialize", derive(Serialize, Deserialize))] +#[derive(Clone)] /// A set of rigid bodies that can be handled by a physics pipeline. pub struct RigidBodySet { // NOTE: the pub(crate) are needed by the broad phase -- cgit From c6af248e66c86c900d7703bcefeb1e6d185ffedf Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Tue, 3 Nov 2020 14:45:50 +0100 Subject: Rename reset_internal_links -> reset_internal_references. --- src/dynamics/rigid_body_set.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/dynamics/rigid_body_set.rs') diff --git a/src/dynamics/rigid_body_set.rs b/src/dynamics/rigid_body_set.rs index f7064ed..b857173 100644 --- a/src/dynamics/rigid_body_set.rs +++ b/src/dynamics/rigid_body_set.rs @@ -158,7 +158,7 @@ impl RigidBodySet { pub fn insert(&mut self, mut rb: RigidBody) -> RigidBodyHandle { // Make sure the internal links are reset, they may not be // if this rigid-body was obtained by cloning another one. - rb.reset_internal_links(); + rb.reset_internal_references(); let handle = self.bodies.insert(rb); let rb = &mut self.bodies[handle]; -- cgit