Skip to main content

box2d_rs/
b2_time_step.rs

1use crate::b2_math::*;
2
3/// Profiling data. Times are in milliseconds.
4#[derive(Default, Clone, Copy, Debug)]
5pub struct B2Profile {
6	pub step: f32,
7	pub collide: f32,
8	pub solve: f32,
9	pub solve_init: f32,
10	pub solve_velocity: f32,
11	pub solve_position: f32,
12	pub broadphase: f32,
13	pub solve_toi: f32,
14}
15
16/// This is an internal structure.
17#[derive(Default, Clone, Copy, Debug)]
18pub(crate) struct B2timeStep {
19	pub dt: f32,      // time step
20	pub inv_dt: f32,  // inverse time step (0 if dt == 0).
21	pub dt_ratio: f32, // dt * inv_dt0
22	pub velocity_iterations: i32,
23	pub position_iterations: i32,
24	pub warm_starting: bool,
25}
26
27/// This is an internal structure.
28#[derive(Default, Clone, Copy, Debug)]
29pub struct B2position {
30	pub(crate) c: B2vec2,
31	pub(crate) a: f32,
32}
33
34/// This is an internal structure.
35#[derive(Default, Clone, Copy, Debug)]
36pub struct B2velocity {
37	pub(crate) v: B2vec2,
38	pub(crate) w: f32,
39}
40
41//box2d-rs: not using struct because of borrowing and mutability
42// struct B2_API b2SolverData
43// {
44// 	b2TimeStep step;
45// 	b2Position* positions;
46// 	b2Velocity* velocities;
47// };
48
49/// Solver Data
50#[derive(Default, Debug)]
51pub struct B2solverData {
52	pub(crate) step: B2timeStep,
53	//pub(crate) positions: &'a mut  [B2position],
54	//pub(crate) velocities: &'a mut  [B2velocity],
55}