aboutsummaryrefslogtreecommitdiff
path: root/src/data
diff options
context:
space:
mode:
authorSébastien Crozet <developer@crozet.re>2021-04-01 11:00:27 +0200
committerGitHub <noreply@github.com>2021-04-01 11:00:27 +0200
commitf8536e73fc092da5ded5c793d513c59296949aff (patch)
tree50af9e4312b22ea2c1cabc0e6d80dc73e59b3104 /src/data
parent4b637c66ca40695f97f1ebdc38965e0d83ac5934 (diff)
parentcc3f16eb85f23a86ddd9d182d967cb12acc32354 (diff)
downloadrapier-f8536e73fc092da5ded5c793d513c59296949aff.tar.gz
rapier-f8536e73fc092da5ded5c793d513c59296949aff.tar.bz2
rapier-f8536e73fc092da5ded5c793d513c59296949aff.zip
Merge pull request #157 from dimforge/ccd
Implement Continuous Collision Detection
Diffstat (limited to 'src/data')
-rw-r--r--src/data/coarena.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/data/coarena.rs b/src/data/coarena.rs
index 78cbfa7..c25cc55 100644
--- a/src/data/coarena.rs
+++ b/src/data/coarena.rs
@@ -29,6 +29,20 @@ impl<T> Coarena<T> {
.and_then(|(gg, t)| if g == *gg { Some(t) } else { None })
}
+ /// Inserts an element into this coarena.
+ pub fn insert(&mut self, a: Index, value: T)
+ where
+ T: Clone + Default,
+ {
+ let (i1, g1) = a.into_raw_parts();
+
+ if self.data.len() <= i1 {
+ self.data.resize(i1 + 1, (u32::MAX as u64, T::default()));
+ }
+
+ self.data[i1] = (g1, value);
+ }
+
/// Ensure that elements at the two given indices exist in this coarena, and return their reference.
///
/// Missing elements are created automatically and initialized with the `default` value.