From 656bc4605c6157d6e44e7bd7a253be84e2234d1e Mon Sep 17 00:00:00 2001 From: Nathan Stoddard Date: Wed, 17 Jun 2020 17:55:54 -0700 Subject: [PATCH 1/3] Add UlpsEq trait bounds to fix compilation with git version of cgmath Unless more changes are made to cgmath before 0.18 is released, this should make this library compatible with that version. --- src/algorithm/minkowski/gjk/mod.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/algorithm/minkowski/gjk/mod.rs b/src/algorithm/minkowski/gjk/mod.rs index 3891e26..5069efc 100644 --- a/src/algorithm/minkowski/gjk/mod.rs +++ b/src/algorithm/minkowski/gjk/mod.rs @@ -9,6 +9,7 @@ use std::ops::{Neg, Range}; use cgmath::BaseFloat; use cgmath::prelude::*; use cgmath::num_traits::NumCast; +use cgmath::UlpsEq; use self::simplex::{Simplex, SimplexProcessor2, SimplexProcessor3}; use crate::{CollisionStrategy, Contact}; @@ -109,7 +110,7 @@ where PL: Primitive, PR: Primitive, SP: SimplexProcessor, - P::Diff: Neg + InnerSpace + Zero + Array, + P::Diff: Neg + InnerSpace + Zero + Array + UlpsEq, TL: Transform

, TR: Transform

, { @@ -277,7 +278,7 @@ where PL: Primitive, PR: Primitive, SP: SimplexProcessor, - P::Diff: Neg + InnerSpace + Zero + Array, + P::Diff: Neg + InnerSpace + Zero + Array + UlpsEq, TL: Transform

, TR: Transform

, { @@ -365,7 +366,7 @@ where ) -> Option> where P: EuclideanSpace, - P::Diff: Neg + InnerSpace + Zero + Array, + P::Diff: Neg + InnerSpace + Zero + Array + UlpsEq, PL: Primitive, PR: Primitive, TL: Transform

, @@ -415,7 +416,7 @@ where ) -> Option> where P: EuclideanSpace, - P::Diff: Neg + InnerSpace + Zero + Array, + P::Diff: Neg + InnerSpace + Zero + Array + UlpsEq, PL: Primitive, PR: Primitive, TL: Transform

, @@ -479,7 +480,7 @@ where ) -> Option where P: EuclideanSpace, - P::Diff: Neg + InnerSpace + Zero + Array, + P::Diff: Neg + InnerSpace + Zero + Array + UlpsEq, PL: Primitive, PR: Primitive, TL: Transform

, From 5cf646afbaeee8745fdd48f4b0950e1ffbdce3ba Mon Sep 17 00:00:00 2001 From: Nathan Stoddard Date: Sun, 4 Jul 2021 21:06:02 -0700 Subject: [PATCH 2/3] Update to cgmath 0.18 --- Cargo.toml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 9ca2d0d..c838f88 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,16 +33,15 @@ name = "collision" [dependencies] rand = "0.6" -approx = "0.3" # Only for the macros; for all other instances use the re-exported cgmath ones. -cgmath = "0.17" +approx = "0.4" # Only for the macros; for all other instances use the re-exported cgmath ones. +cgmath = "0.18" serde = { version = "1.0", optional = true, features = ["derive"] } bit-set = "0.5" smallvec = "0.6.1" [target.'cfg(feature="serde")'.dependencies] -cgmath = { version = "0.17", features = ["serde"] } +cgmath = { version = "0.18", features = ["serde"] } num = { version = "0.2", features = ["serde"] } [dev-dependencies] genmesh = "0.5" - From 4ed1dffffe56a57e142777a0b3123e6e47b18277 Mon Sep 17 00:00:00 2001 From: Nathan Stoddard Date: Sun, 4 Jul 2021 21:19:57 -0700 Subject: [PATCH 3/3] Update most dependencies This updates all dependencies except for `approx` and `genmesh`, which would require more work to update. Fixes #117. --- Cargo.toml | 14 +++++++------- benches/dbvt.rs | 24 ++++++++++++------------ benches/polyhedron.rs | 6 +++--- src/dbvt/mod.rs | 2 +- tests/bound.rs | 2 +- tests/dbvt.rs | 2 +- 6 files changed, 25 insertions(+), 25 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index c838f88..994c2b7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,16 +32,16 @@ keywords = ["gamedev", "cgmath", "collision"] name = "collision" [dependencies] -rand = "0.6" +rand = "0.8.4" approx = "0.4" # Only for the macros; for all other instances use the re-exported cgmath ones. -cgmath = "0.18" -serde = { version = "1.0", optional = true, features = ["derive"] } -bit-set = "0.5" -smallvec = "0.6.1" +cgmath = "0.18.0" +serde = { version = "1.0.126", optional = true, features = ["derive"] } +bit-set = "0.5.2" +smallvec = "1.6.1" [target.'cfg(feature="serde")'.dependencies] -cgmath = { version = "0.18", features = ["serde"] } -num = { version = "0.2", features = ["serde"] } +cgmath = { version = "0.18.0", features = ["serde"] } +num = { version = "0.4.0", features = ["serde"] } [dev-dependencies] genmesh = "0.5" diff --git a/benches/dbvt.rs b/benches/dbvt.rs index 3697aaa..6976c6c 100644 --- a/benches/dbvt.rs +++ b/benches/dbvt.rs @@ -48,7 +48,7 @@ fn benchmark_insert(b: &mut Bencher) { let mut tree = DynamicBoundingVolumeTree::::new(); let mut i = 0; b.iter(|| { - let offset = rng.gen_range(0., 100.); + let offset = rng.gen_range(0.0..100.0); tree.insert(Value::new( i, aabb2(offset + 2., offset + 2., offset + 4., offset + 4.), @@ -63,7 +63,7 @@ fn benchmark_do_refit(b: &mut Bencher) { let mut tree = DynamicBoundingVolumeTree::::new(); let mut i = 0; b.iter(|| { - let offset = rng.gen_range(0., 100.); + let offset = rng.gen_range(0.0..100.0); tree.insert(Value::new( i, aabb2(offset + 2., offset + 2., offset + 4., offset + 4.), @@ -80,8 +80,8 @@ fn benchmark_query(b: &mut Bencher) { for i in 0..100000 { let neg_y = if rng.gen::() { -1. } else { 1. }; let neg_x = if rng.gen::() { -1. } else { 1. }; - let offset_x = neg_x * rng.gen_range(9000., 10000.); - let offset_y = neg_y * rng.gen_range(9000., 10000.); + let offset_x = neg_x * rng.gen_range(9000.0..10000.0); + let offset_y = neg_y * rng.gen_range(9000.0..10000.0); tree.insert(Value::new( i, aabb2(offset_x + 2., offset_y + 2., offset_x + 4., offset_y + 4.), @@ -92,10 +92,10 @@ fn benchmark_query(b: &mut Bencher) { let rays: Vec> = (0..1000) .map(|_| { let p = Point2::new( - rng.gen_range(-10000., 10000.), - rng.gen_range(-10000., 10000.), + rng.gen_range(-10000.0..10000.0), + rng.gen_range(-10000.0..10000.0), ); - let d = Vector2::new(rng.gen_range(-1., 1.), rng.gen_range(-1., 1.)).normalize(); + let d = Vector2::new(rng.gen_range(-1.0..1.0), rng.gen_range(-1.0..1.0)).normalize(); Ray2::new(p, d) }) .collect(); @@ -119,8 +119,8 @@ fn benchmark_ray_closest_query(b: &mut Bencher) { for i in 0..100000 { let neg_y = if rng.gen::() { -1. } else { 1. }; let neg_x = if rng.gen::() { -1. } else { 1. }; - let offset_x = neg_x * rng.gen_range(9000., 10000.); - let offset_y = neg_y * rng.gen_range(9000., 10000.); + let offset_x = neg_x * rng.gen_range(9000.0..10000.0); + let offset_y = neg_y * rng.gen_range(9000.0..10000.0); tree.insert(Value::new( i, aabb2(offset_x + 2., offset_y + 2., offset_x + 4., offset_y + 4.), @@ -131,10 +131,10 @@ fn benchmark_ray_closest_query(b: &mut Bencher) { let rays: Vec> = (0..1000) .map(|_| { let p = Point2::new( - rng.gen_range(-10000., 10000.), - rng.gen_range(-10000., 10000.), + rng.gen_range(-10000.0..10000.0), + rng.gen_range(-10000.0..10000.0), ); - let d = Vector2::new(rng.gen_range(-1., 1.), rng.gen_range(-1., 1.)).normalize(); + let d = Vector2::new(rng.gen_range(-1.0..1.0), rng.gen_range(-1.0..1.0)).normalize(); Ray2::new(p, d) }) .collect(); diff --git a/benches/polyhedron.rs b/benches/polyhedron.rs index e0f5d86..dbf751a 100644 --- a/benches/polyhedron.rs +++ b/benches/polyhedron.rs @@ -82,9 +82,9 @@ fn dirs(n: usize) -> Vec> { (0..n) .map(|_| { Vector3::new( - rng.gen_range(-1., 1.), - rng.gen_range(-1., 1.), - rng.gen_range(-1., 1.), + rng.gen_range(-1.0..1.0), + rng.gen_range(-1.0..1.0), + rng.gen_range(-1.0..1.0), ) }) .collect::>() diff --git a/src/dbvt/mod.rs b/src/dbvt/mod.rs index f9c8167..c42dbcd 100644 --- a/src/dbvt/mod.rs +++ b/src/dbvt/mod.rs @@ -900,7 +900,7 @@ where // Only do rotations occasionally, as they are fairly expensive, and shouldn't be overused. // For most scenarios, the majority of shapes will not have moved, so this is fine. - if rand::thread_rng().gen_range(0, 100) < PERFORM_ROTATION_PERCENTAGE { + if rand::thread_rng().gen_range(0..100) < PERFORM_ROTATION_PERCENTAGE { self.rotate(node_index); } } diff --git a/tests/bound.rs b/tests/bound.rs index f61c971..dd9ca43 100644 --- a/tests/bound.rs +++ b/tests/bound.rs @@ -2,7 +2,7 @@ extern crate collision; use collision::PlaneBound; -fn _box(_: Box>) {} +fn _box(_: Box>) {} #[test] fn bound_box() {} diff --git a/tests/dbvt.rs b/tests/dbvt.rs index 4ddcf72..d725ffd 100644 --- a/tests/dbvt.rs +++ b/tests/dbvt.rs @@ -122,7 +122,7 @@ fn test_add_20() { let mut tree = DynamicBoundingVolumeTree::::new(); let mut rng = rand::thread_rng(); for i in 0..20 { - let offset = rng.gen_range(-10., 10.); + let offset = rng.gen_range(-10.0..10.0); tree.insert(Value2::new( i, aabb2(offset + 0.1, offset + 0.1, offset + 0.3, offset + 0.3),