spring_ai_rs/ai_interface/callback/command/command_data/
trace.rs

1use spring_ai_sys::{SFeatureTraceRayCommand, STraceRayCommand};
2
3use crate::ai_interface::callback::command::command_data::{CData, CommandData};
4
5// Trace Ray command data
6pub 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
31// Feature Trace Ray command data
32pub 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 {}