box3d_rust/recording/write_ops/
world.rs1use crate::id::WorldId;
8use crate::math_functions::Vec3;
9use crate::types::ExplosionDef;
10
11use crate::recording::ops::RecOp;
12use crate::recording::session::Recording;
13
14impl Recording {
15 pub fn write_destroy_world(&mut self, world: WorldId) {
17 self.begin_record(RecOp::DestroyWorld as u8);
18 self.buffer.append_world_id(world);
19 self.end_record();
20 }
21
22 pub fn write_step(&mut self, world: WorldId, dt: f32, sub_step_count: i32) {
24 self.begin_record(RecOp::Step as u8);
25 self.buffer.append_world_id(world);
26 self.buffer.append_f32(dt);
27 self.buffer.append_i32(sub_step_count);
28 self.end_record();
29 }
30
31 pub fn write_world_enable_sleeping(&mut self, world: WorldId, flag: bool) {
33 self.begin_record(RecOp::WorldEnableSleeping as u8);
34 self.buffer.append_world_id(world);
35 self.buffer.append_bool(flag);
36 self.end_record();
37 }
38
39 pub fn write_world_enable_continuous(&mut self, world: WorldId, flag: bool) {
41 self.begin_record(RecOp::WorldEnableContinuous as u8);
42 self.buffer.append_world_id(world);
43 self.buffer.append_bool(flag);
44 self.end_record();
45 }
46
47 pub fn write_world_set_restitution_threshold(&mut self, world: WorldId, value: f32) {
49 self.begin_record(RecOp::WorldSetRestitutionThreshold as u8);
50 self.buffer.append_world_id(world);
51 self.buffer.append_f32(value);
52 self.end_record();
53 }
54
55 pub fn write_world_set_hit_event_threshold(&mut self, world: WorldId, value: f32) {
57 self.begin_record(RecOp::WorldSetHitEventThreshold as u8);
58 self.buffer.append_world_id(world);
59 self.buffer.append_f32(value);
60 self.end_record();
61 }
62
63 pub fn write_world_set_gravity(&mut self, world: WorldId, gravity: Vec3) {
65 self.begin_record(RecOp::WorldSetGravity as u8);
66 self.buffer.append_world_id(world);
67 self.buffer.append_vec3(gravity);
68 self.end_record();
69 }
70
71 pub fn write_world_explode(&mut self, world: WorldId, def: ExplosionDef) {
73 self.begin_record(RecOp::WorldExplode as u8);
74 self.buffer.append_world_id(world);
75 self.buffer.append_explosion_def(def);
76 self.end_record();
77 }
78
79 pub fn write_world_set_contact_tuning(
81 &mut self,
82 world: WorldId,
83 hertz: f32,
84 damping_ratio: f32,
85 contact_speed: f32,
86 ) {
87 self.begin_record(RecOp::WorldSetContactTuning as u8);
88 self.buffer.append_world_id(world);
89 self.buffer.append_f32(hertz);
90 self.buffer.append_f32(damping_ratio);
91 self.buffer.append_f32(contact_speed);
92 self.end_record();
93 }
94
95 pub fn write_world_set_contact_recycle_distance(
97 &mut self,
98 world: WorldId,
99 recycle_distance: f32,
100 ) {
101 self.begin_record(RecOp::WorldSetContactRecycleDistance as u8);
102 self.buffer.append_world_id(world);
103 self.buffer.append_f32(recycle_distance);
104 self.end_record();
105 }
106
107 pub fn write_world_set_maximum_linear_speed(
109 &mut self,
110 world: WorldId,
111 maximum_linear_speed: f32,
112 ) {
113 self.begin_record(RecOp::WorldSetMaximumLinearSpeed as u8);
114 self.buffer.append_world_id(world);
115 self.buffer.append_f32(maximum_linear_speed);
116 self.end_record();
117 }
118
119 pub fn write_world_enable_warm_starting(&mut self, world: WorldId, flag: bool) {
121 self.begin_record(RecOp::WorldEnableWarmStarting as u8);
122 self.buffer.append_world_id(world);
123 self.buffer.append_bool(flag);
124 self.end_record();
125 }
126
127 pub fn write_world_rebuild_static_tree(&mut self, world: WorldId) {
129 self.begin_record(RecOp::WorldRebuildStaticTree as u8);
130 self.buffer.append_world_id(world);
131 self.end_record();
132 }
133
134 pub fn write_world_enable_speculative(&mut self, world: WorldId, flag: bool) {
136 self.begin_record(RecOp::WorldEnableSpeculative as u8);
137 self.buffer.append_world_id(world);
138 self.buffer.append_bool(flag);
139 self.end_record();
140 }
141}