40 lines
1.2 KiB
Rust
40 lines
1.2 KiB
Rust
use crate::counters::Timer;
|
|
use std::fmt::{Display, Formatter, Result};
|
|
|
|
/// Performance counters related to collision detection.
|
|
#[derive(Default, Clone, Copy)]
|
|
pub struct CollisionDetectionCounters {
|
|
/// Number of contact pairs detected.
|
|
pub ncontact_pairs: usize,
|
|
/// Time spent for the broad-phase of the collision detection.
|
|
pub broad_phase_time: Timer,
|
|
/// Time spent for the narrow-phase of the collision detection.
|
|
pub narrow_phase_time: Timer,
|
|
}
|
|
|
|
impl CollisionDetectionCounters {
|
|
/// Creates a new counter initialized to zero.
|
|
pub fn new() -> Self {
|
|
CollisionDetectionCounters {
|
|
ncontact_pairs: 0,
|
|
broad_phase_time: Timer::new(),
|
|
narrow_phase_time: Timer::new(),
|
|
}
|
|
}
|
|
|
|
/// Resets all the coounters and timers.
|
|
pub fn reset(&mut self) {
|
|
self.ncontact_pairs = 0;
|
|
self.broad_phase_time.reset();
|
|
self.narrow_phase_time.reset();
|
|
}
|
|
}
|
|
|
|
impl Display for CollisionDetectionCounters {
|
|
fn fmt(&self, f: &mut Formatter) -> Result {
|
|
writeln!(f, "Number of contact pairs: {}", self.ncontact_pairs)?;
|
|
writeln!(f, "Broad-phase time: {}", self.broad_phase_time)?;
|
|
writeln!(f, "Narrow-phase time: {}", self.narrow_phase_time)
|
|
}
|
|
}
|