oxmpl_js/base/
se2_state.rs1use std::sync::Arc;
6
7use oxmpl::base::state::SE2State as OxmplSE2State;
8use wasm_bindgen::prelude::*;
9
10use crate::base::{JsRealVectorState, JsSO2State};
11
12#[wasm_bindgen(js_name = SE2State)]
13pub struct JsSE2State {
14 #[wasm_bindgen(skip)]
15 pub inner: Arc<OxmplSE2State>,
16}
17
18#[wasm_bindgen(js_class = SE2State)]
19impl JsSE2State {
20 #[wasm_bindgen(constructor)]
21 pub fn new(x: f64, y: f64, yaw: f64) -> Self {
22 let state = OxmplSE2State::new(x, y, yaw);
23 Self {
24 inner: Arc::new(state),
25 }
26 }
27
28 #[wasm_bindgen(getter)]
29 pub fn x(&self) -> f64 {
30 self.inner.get_x()
31 }
32 #[wasm_bindgen(getter)]
33 pub fn y(&self) -> f64 {
34 self.inner.get_y()
35 }
36 #[wasm_bindgen(getter)]
37 pub fn yaw(&self) -> f64 {
38 self.inner.get_yaw()
39 }
40 #[wasm_bindgen(getter)]
41 pub fn translation(&self) -> JsRealVectorState {
42 let translation_rs = self.inner.get_translation();
43 JsRealVectorState::new(translation_rs.values.clone())
44 }
45 #[wasm_bindgen(getter)]
46 pub fn rotation(&self) -> JsSO2State {
47 let rotation_rs = self.inner.get_rotation();
48 JsSO2State::new(rotation_rs.value)
49 }
50}