spring_ai_rs/ai_interface/callback/command/command_data/
trace.rs1use spring_ai_sys::{SFeatureTraceRayCommand, STraceRayCommand};
2
3use crate::ai_interface::callback::command::command_data::{CData, CommandData};
4
5pub struct TraceRayCommandData {
7 pub ray_position: [f32; 3],
8 pub ray_direction: [f32; 3],
9 pub ray_length: f32,
10 pub source_unit_id: i32,
11 pub flags: i32,
12}
13
14impl CommandData for TraceRayCommandData {
15 type CDataType = STraceRayCommand;
16
17 fn c_data(&mut self) -> Self::CDataType {
18 STraceRayCommand {
19 rayPos_posF3: self.ray_position.as_mut_ptr(),
20 rayDir_posF3: self.ray_direction.as_mut_ptr(),
21 rayLen: self.ray_length,
22 srcUnitId: self.source_unit_id,
23 ret_hitUnitId: 0,
24 flags: self.flags,
25 }
26 }
27}
28
29impl CData for STraceRayCommand {}
30
31pub struct FeatureTraceRayCommandData {
33 pub ray_position: [f32; 3],
34 pub ray_direction: [f32; 3],
35 pub ray_length: f32,
36 pub source_unit_id: i32,
37 pub flags: i32,
38}
39
40impl CommandData for FeatureTraceRayCommandData {
41 type CDataType = SFeatureTraceRayCommand;
42
43 fn c_data(&mut self) -> Self::CDataType {
44 SFeatureTraceRayCommand {
45 rayPos_posF3: self.ray_position.as_mut_ptr(),
46 rayDir_posF3: self.ray_direction.as_mut_ptr(),
47 rayLen: self.ray_length,
48 srcUnitId: self.source_unit_id,
49 ret_hitFeatureId: 0,
50 flags: self.flags,
51 }
52 }
53}
54
55impl CData for SFeatureTraceRayCommand {}