box3d_rust/recording/write_ops/
query.rs1use crate::distance::ShapeProxy;
8use crate::geometry::Capsule;
9use crate::id::WorldId;
10use crate::math_functions::{Aabb, Pos, Vec3};
11use crate::types::QueryFilter;
12
13use crate::recording::ops::RecOp;
14use crate::recording::session::Recording;
15
16impl Recording {
17 pub fn write_query_overlap_aabb(&mut self, world: WorldId, aabb: Aabb, filter: &QueryFilter) {
19 self.begin_record(RecOp::QueryOverlapAABB as u8);
20 self.buffer.append_world_id(world);
21 self.buffer.append_aabb(aabb);
22 self.buffer.append_query_filter(filter);
23 self.end_record();
24 }
25
26 pub fn write_query_overlap_shape(
28 &mut self,
29 world: WorldId,
30 origin: Pos,
31 proxy: &ShapeProxy,
32 filter: &QueryFilter,
33 ) {
34 self.begin_record(RecOp::QueryOverlapShape as u8);
35 self.buffer.append_world_id(world);
36 self.buffer.append_pos(origin);
37 self.buffer.append_shape_proxy(proxy);
38 self.buffer.append_query_filter(filter);
39 self.end_record();
40 }
41
42 pub fn write_query_cast_ray(
44 &mut self,
45 world: WorldId,
46 origin: Pos,
47 translation: Vec3,
48 filter: &QueryFilter,
49 ) {
50 self.begin_record(RecOp::QueryCastRay as u8);
51 self.buffer.append_world_id(world);
52 self.buffer.append_pos(origin);
53 self.buffer.append_vec3(translation);
54 self.buffer.append_query_filter(filter);
55 self.end_record();
56 }
57
58 pub fn write_query_cast_shape(
60 &mut self,
61 world: WorldId,
62 origin: Pos,
63 proxy: &ShapeProxy,
64 translation: Vec3,
65 filter: &QueryFilter,
66 ) {
67 self.begin_record(RecOp::QueryCastShape as u8);
68 self.buffer.append_world_id(world);
69 self.buffer.append_pos(origin);
70 self.buffer.append_shape_proxy(proxy);
71 self.buffer.append_vec3(translation);
72 self.buffer.append_query_filter(filter);
73 self.end_record();
74 }
75
76 pub fn write_query_cast_ray_closest(
78 &mut self,
79 world: WorldId,
80 origin: Pos,
81 translation: Vec3,
82 filter: &QueryFilter,
83 ) {
84 self.begin_record(RecOp::QueryCastRayClosest as u8);
85 self.buffer.append_world_id(world);
86 self.buffer.append_pos(origin);
87 self.buffer.append_vec3(translation);
88 self.buffer.append_query_filter(filter);
89 self.end_record();
90 }
91
92 pub fn write_query_cast_mover(
94 &mut self,
95 world: WorldId,
96 origin: Pos,
97 mover: Capsule,
98 translation: Vec3,
99 filter: &QueryFilter,
100 ) {
101 self.begin_record(RecOp::QueryCastMover as u8);
102 self.buffer.append_world_id(world);
103 self.buffer.append_pos(origin);
104 self.buffer.append_capsule(mover);
105 self.buffer.append_vec3(translation);
106 self.buffer.append_query_filter(filter);
107 self.end_record();
108 }
109
110 pub fn write_query_collide_mover(
112 &mut self,
113 world: WorldId,
114 origin: Pos,
115 mover: Capsule,
116 filter: &QueryFilter,
117 ) {
118 self.begin_record(RecOp::QueryCollideMover as u8);
119 self.buffer.append_world_id(world);
120 self.buffer.append_pos(origin);
121 self.buffer.append_capsule(mover);
122 self.buffer.append_query_filter(filter);
123 self.end_record();
124 }
125
126 pub fn write_query_tag(&mut self, key: u64) {
128 self.begin_record(RecOp::QueryTag as u8);
129 self.buffer.append_u64(key);
130 self.end_record();
131 }
132
133 pub fn write_state_hash(&mut self, world: WorldId, hash: u64) {
135 self.begin_record(RecOp::StateHash as u8);
136 self.buffer.append_world_id(world);
137 self.buffer.append_u64(hash);
138 self.end_record();
139 }
140
141 pub fn write_recording_bounds(&mut self, bounds: Aabb) {
143 self.begin_record(RecOp::RecordingBounds as u8);
144 self.buffer.append_aabb(bounds);
145 self.end_record();
146 }
147}