Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove instant dependency in favor of web-time #767

Merged
merged 3 commits into from
Dec 6, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/rapier-ci-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,9 @@ jobs:
- uses: actions/checkout@v4
- run: rustup target add wasm32-unknown-unknown
- name: build rapier2d
run: cd crates/rapier2d && cargo build --verbose --features wasm-bindgen --target wasm32-unknown-unknown;
run: cd crates/rapier2d && cargo build --verbose --target wasm32-unknown-unknown;
- name: build rapier3d
run: cd crates/rapier3d && cargo build --verbose --features wasm-bindgen --target wasm32-unknown-unknown;
run: cd crates/rapier3d && cargo build --verbose --target wasm32-unknown-unknown;
build-wasm-emscripten:
runs-on: ubuntu-latest
env:
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

- `InteractionGroups` default value for `memberships` is now `GROUP_1` (#706)
- `ImpulseJointSet::get_mut` has a new parameter `wake_up: bool`, to wake up connected bodies.
- Removed unmaintained `instant` in favor of `web-time`.
Vrixyz marked this conversation as resolved.
Show resolved Hide resolved

## v0.22.0 (20 July 2024)

Expand Down
5 changes: 2 additions & 3 deletions crates/rapier2d-f64/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ simd-nightly = ["simba/portable_simd", "simd-is-enabled"]
# Do not enable this feature directly. It is automatically
# enabled with the "simd-stable" or "simd-nightly" feature.
simd-is-enabled = ["dep:vec_map"]
wasm-bindgen = ["instant/wasm-bindgen"]
serde-serialize = [
"nalgebra/serde-serialize",
"parry2d-f64/serde-serialize",
Expand All @@ -46,7 +45,7 @@ serde-serialize = [
]
enhanced-determinism = ["simba/libm_force", "parry2d-f64/enhanced-determinism"]
debug-render = []
profiler = ["dep:instant"] # Enables the internal profiler.
profiler = ["dep:web-time"] # Enables the internal profiler.

# Feature used for debugging only.
debug-disable-legitimate-fe-exceptions = []
Expand All @@ -66,7 +65,7 @@ required-features = ["dim2", "f64"]

[dependencies]
vec_map = { version = "0.8", optional = true }
instant = { version = "0.1", features = ["now"], optional = true }
web-time = { version = "1.1", optional = true }
num-traits = "0.2"
nalgebra = "0.33"
parry2d-f64 = "0.17.0"
Expand Down
5 changes: 2 additions & 3 deletions crates/rapier2d/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ simd-nightly = ["simba/portable_simd", "simd-is-enabled"]
# Do not enable this feature directly. It is automatically
# enabled with the "simd-stable" or "simd-nightly" feature.
simd-is-enabled = ["dep:vec_map"]
wasm-bindgen = ["instant/wasm-bindgen"]
serde-serialize = [
"nalgebra/serde-serialize",
"parry2d/serde-serialize",
Expand All @@ -46,7 +45,7 @@ serde-serialize = [
]
enhanced-determinism = ["simba/libm_force", "parry2d/enhanced-determinism"]
debug-render = []
profiler = ["dep:instant"] # Enables the internal profiler.
profiler = ["dep:web-time"] # Enables the internal profiler.

# Feature used for debugging only.
debug-disable-legitimate-fe-exceptions = []
Expand All @@ -66,7 +65,7 @@ required-features = ["dim2", "f32"]

[dependencies]
vec_map = { version = "0.8", optional = true }
instant = { version = "0.1", features = ["now"], optional = true }
web-time = { version = "1.1", optional = true }
num-traits = "0.2"
nalgebra = "0.33"
parry2d = "0.17.0"
Expand Down
5 changes: 2 additions & 3 deletions crates/rapier3d-f64/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ simd-nightly = [
# Do not enable this feature directly. It is automatically
# enabled with the "simd-stable" or "simd-nightly" feature.
simd-is-enabled = ["dep:vec_map"]
wasm-bindgen = ["instant/wasm-bindgen"]
serde-serialize = [
"nalgebra/serde-serialize",
"parry3d-f64/serde-serialize",
Expand All @@ -49,7 +48,7 @@ serde-serialize = [
]
enhanced-determinism = ["simba/libm_force", "parry3d-f64/enhanced-determinism"]
debug-render = []
profiler = ["dep:instant"] # Enables the internal profiler.
profiler = ["dep:web-time"] # Enables the internal profiler.

# Feature used for debugging only.
debug-disable-legitimate-fe-exceptions = []
Expand All @@ -69,7 +68,7 @@ required-features = ["dim3", "f64"]

[dependencies]
vec_map = { version = "0.8", optional = true }
instant = { version = "0.1", features = ["now"], optional = true }
web-time = { version = "1.1", optional = true }
num-traits = "0.2"
nalgebra = "0.33"
parry3d-f64 = "0.17.0"
Expand Down
5 changes: 2 additions & 3 deletions crates/rapier3d/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ simd-nightly = [
# Do not enable this feature directly. It is automatically
# enabled with the "simd-stable" or "simd-nightly" feature.
simd-is-enabled = ["dep:vec_map"]
wasm-bindgen = ["instant/wasm-bindgen"]
serde-serialize = [
"nalgebra/serde-serialize",
"parry3d/serde-serialize",
Expand All @@ -49,7 +48,7 @@ serde-serialize = [
]
enhanced-determinism = ["simba/libm_force", "parry3d/enhanced-determinism"]
debug-render = []
profiler = ["dep:instant"] # Enables the internal profiler.
profiler = ["dep:web-time"] # Enables the internal profiler.

# Feature used for debugging only.
debug-disable-legitimate-fe-exceptions = []
Expand All @@ -69,7 +68,7 @@ required-features = ["dim3", "f32"]

[dependencies]
vec_map = { version = "0.8", optional = true }
instant = { version = "0.1", features = ["now"], optional = true }
web-time = { version = "1.1", optional = true }
num-traits = "0.2"
nalgebra = "0.33"
parry3d = "0.17.0"
Expand Down
2 changes: 1 addition & 1 deletion crates/rapier_testbed2d-f64/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ needless_lifetimes = "allow"
nalgebra = { version = "0.33", features = ["rand", "glam027"] }
rand = "0.8"
rand_pcg = "0.3"
instant = { version = "0.1", features = ["web-sys", "now"] }
web-time = { version = "1.1" }
bitflags = "2"
num_cpus = { version = "1", optional = true }
wrapped2d = { version = "0.4", optional = true }
Expand Down
2 changes: 1 addition & 1 deletion crates/rapier_testbed2d/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ needless_lifetimes = "allow"
nalgebra = { version = "0.33", features = ["rand", "glam027"] }
rand = "0.8"
rand_pcg = "0.3"
instant = { version = "0.1", features = ["web-sys", "now"] }
web-time = { version = "1.1" }
bitflags = "2"
num_cpus = { version = "1", optional = true }
wrapped2d = { version = "0.4", optional = true }
Expand Down
2 changes: 1 addition & 1 deletion crates/rapier_testbed3d-f64/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ needless_lifetimes = "allow"
nalgebra = { version = "0.33", features = ["rand", "glam027"] }
rand = "0.8"
rand_pcg = "0.3"
instant = { version = "0.1", features = ["web-sys", "now"] }
web-time = { version = "1.1" }
bitflags = "2"
num_cpus = { version = "1", optional = true }
crossbeam = "0.8"
Expand Down
2 changes: 1 addition & 1 deletion crates/rapier_testbed3d/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ needless_lifetimes = "allow"
nalgebra = { version = "0.33", features = ["rand", "glam027"] }
rand = "0.8"
rand_pcg = "0.3"
instant = { version = "0.1", features = ["web-sys", "now"] }
web-time = { version = "1.1" }
bitflags = "2"
glam = { version = "0.27", optional = true } # For Physx
num_cpus = { version = "1", optional = true }
Expand Down
25 changes: 14 additions & 11 deletions src/counters/timer.rs
Original file line number Diff line number Diff line change
@@ -1,33 +1,36 @@
use std::fmt::{Display, Error, Formatter};
use std::{
fmt::{Display, Error, Formatter},
time::Duration,
};

/// A timer.
#[derive(Copy, Clone, Debug, Default)]
pub struct Timer {
time: f64,
time: Duration,
#[allow(dead_code)] // The field isn’t used if the `profiler` feature isn’t enabled.
start: Option<f64>,
start: Option<std::time::Instant>,
}

impl Timer {
/// Creates a new timer initialized to zero and not started.
pub fn new() -> Self {
Timer {
time: 0.0,
time: Duration::from_secs(0),
start: None,
}
}

/// Resets the timer to 0.
pub fn reset(&mut self) {
self.time = 0.0
self.time = Duration::from_secs(0)
}

/// Start the timer.
pub fn start(&mut self) {
#[cfg(feature = "profiler")]
{
self.time = 0.0;
self.start = Some(instant::now());
self.time = Duration::from_secs(0);
self.start = Some(web_time::Instant::now());
}
}

Expand All @@ -36,7 +39,7 @@ impl Timer {
#[cfg(feature = "profiler")]
{
if let Some(start) = self.start {
self.time += instant::now() - start;
self.time += web_time::Instant::now().duration_since(start);
}
self.start = None;
}
Expand All @@ -46,18 +49,18 @@ impl Timer {
pub fn resume(&mut self) {
#[cfg(feature = "profiler")]
{
self.start = Some(instant::now());
self.start = Some(web_time::Instant::now());
}
}

/// The measured time between the last `.start()` and `.pause()` calls.
pub fn time(&self) -> f64 {
self.time
self.time.as_secs_f64() * 1000.0
}
Vrixyz marked this conversation as resolved.
Show resolved Hide resolved
}

impl Display for Timer {
fn fmt(&self, f: &mut Formatter) -> Result<(), Error> {
write!(f, "{}s", self.time)
write!(f, "{}s", self.time.as_secs_f32())
}
Vrixyz marked this conversation as resolved.
Show resolved Hide resolved
}
8 changes: 4 additions & 4 deletions src/dynamics/island_manager.rs
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ impl IslandManager {

// Update the energy of every rigid body and
// keep only those that may not sleep.
// let t = instant::now();
// let t = Instant::now();
self.active_set_timestamp += 1;
self.stack.clear();
self.can_sleep.clear();
Expand Down Expand Up @@ -235,9 +235,9 @@ impl IslandManager {
push_contacting_bodies(&rb.colliders, colliders, narrow_phase, &mut self.stack);
}

// println!("Selection: {}", instant::now() - t);
// println!("Selection: {}", Instant::now() - t);

// let t = instant::now();
// let t = Instant::now();
// Propagation of awake state and awake island computation through the
// traversal of the interaction graph.
self.active_islands_additional_solver_iterations.clear();
Expand Down Expand Up @@ -310,7 +310,7 @@ impl IslandManager {
self.active_islands.push(self.active_dynamic_set.len());
// println!(
// "Extraction: {}, num islands: {}",
// instant::now() - t,
// Instant::now() - t,
// self.active_islands.len() - 1
// );

Expand Down
27 changes: 14 additions & 13 deletions src_testbed/ui.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ use crate::PhysicsState;
use bevy_egui::egui::{Slider, Ui};
use bevy_egui::{egui, EguiContexts};
use rapier::dynamics::IntegrationParameters;
use web_time::Instant;

pub fn update_ui(
ui_context: &mut EguiContexts,
Expand Down Expand Up @@ -430,23 +431,23 @@ fn profiling_ui(ui: &mut Ui, counters: &Counters) {
}

fn serialization_string(timestep_id: usize, physics: &PhysicsState) -> String {
let t = instant::now();
// let t = instant::now();
let t = Instant::now();
// let t = Instant::now();
let bf = bincode::serialize(&physics.broad_phase).unwrap();
// println!("bf: {}", instant::now() - t);
// let t = instant::now();
// println!("bf: {}", Instant::now() - t);
// let t = Instant::now();
let nf = bincode::serialize(&physics.narrow_phase).unwrap();
// println!("nf: {}", instant::now() - t);
// let t = instant::now();
// println!("nf: {}", Instant::now() - t);
// let t = Instant::now();
let bs = bincode::serialize(&physics.bodies).unwrap();
// println!("bs: {}", instant::now() - t);
// let t = instant::now();
// println!("bs: {}", Instant::now() - t);
// let t = Instant::now();
let cs = bincode::serialize(&physics.colliders).unwrap();
// println!("cs: {}", instant::now() - t);
// let t = instant::now();
// println!("cs: {}", Instant::now() - t);
// let t = Instant::now();
let js = bincode::serialize(&physics.impulse_joints).unwrap();
// println!("js: {}", instant::now() - t);
let serialization_time = instant::now() - t;
// println!("js: {}", Instant::now() - t);
let serialization_time = Instant::now() - t;
let hash_bf = md5::compute(&bf);
let hash_nf = md5::compute(&nf);
let hash_bodies = md5::compute(&bs);
Expand All @@ -460,7 +461,7 @@ Hashes at frame: {}
|_ &RigidBodySet [{:.1}KB]: {}
|_ Colliders [{:.1}KB]: {}
|_ Joints [{:.1}KB]: {}"#,
serialization_time,
serialization_time.as_secs_f64() * 1000.0,
timestep_id,
bf.len() as f32 / 1000.0,
format!("{:?}", hash_bf).split_at(10).0,
Expand Down
Loading