rapier2d/counters/
ccd_counters.rs1use crate::counters::Timer;
2use core::fmt::{Display, Formatter, Result};
3
4#[derive(Default, Clone, Copy, Debug)]
6pub struct CCDCounters {
7 pub num_substeps: usize,
12 pub toi_computation_time: Timer,
14 pub solver_time: Timer,
16 pub broad_phase_time: Timer,
18 pub narrow_phase_time: Timer,
20}
21
22impl CCDCounters {
23 pub fn new() -> Self {
25 CCDCounters {
26 num_substeps: 0,
27 toi_computation_time: Timer::new(),
28 solver_time: Timer::new(),
29 broad_phase_time: Timer::new(),
30 narrow_phase_time: Timer::new(),
31 }
32 }
33
34 pub fn reset(&mut self) {
36 self.num_substeps = 0;
37 self.toi_computation_time.reset();
38 self.solver_time.reset();
39 self.broad_phase_time.reset();
40 self.narrow_phase_time.reset();
41 }
42}
43
44impl Display for CCDCounters {
45 fn fmt(&self, f: &mut Formatter) -> Result {
46 writeln!(f, "Number of substeps: {}", self.num_substeps)?;
47 writeln!(f, "TOI computation time: {}", self.toi_computation_time)?;
48 writeln!(f, "Constraints solver time: {}", self.solver_time)?;
49 writeln!(f, "Broad-phase time: {}", self.broad_phase_time)?;
50 writeln!(f, "Narrow-phase time: {}", self.narrow_phase_time)
51 }
52}