airsim_client/types/
vector.rs

1use msgpack_rpc::{Utf8String, Value};
2
3#[derive(Debug, Clone, Copy)]
4pub struct Vector3 {
5    pub x: f32,
6    pub y: f32,
7    pub z: f32,
8}
9
10impl Vector3 {
11    pub fn new(x: f32, y: f32, z: f32) -> Self {
12        Vector3 { x, y, z }
13    }
14
15    pub(crate) fn as_msgpack(&self) -> Value {
16        let x_val: Utf8String = "x_val".into();
17        let y_val: Utf8String = "y_val".into();
18        let z_val: Utf8String = "z_val".into();
19
20        let val = Value::Map(vec![
21            (Value::String(x_val), Value::F32(self.x)),
22            (Value::String(y_val), Value::F32(self.y)),
23            (Value::String(z_val), Value::F32(self.z)),
24        ]);
25
26        let msg: Vec<(msgpack_rpc::Value, msgpack_rpc::Value)> = val.as_map().map(|x| x.to_owned()).unwrap();
27        Value::Map(msg)
28    }
29}