rusteal-codegen 0.8.0

Code generator: UHT JSON to Rust bindings and C++ wrappers for rusteal
Documentation
use rusteal_core::{OwnedStruct, Transform};

use crate::core_ue::{FTransform, FTransformExt};
use super::quat::OwnedFQuatExt;
use super::vector::OwnedFVectorExt;

pub trait OwnedFTransformExt {
    fn to_transform(&self) -> Transform;
}

impl OwnedFTransformExt for OwnedStruct<FTransform> {
    fn to_transform(&self) -> Transform {
        let r = self.as_ref();

        let rotation = r.get_rotation().to_dquat();
        let translation = r.get_translation().to_dvec3();
        let scale = r.get_scale3_d().to_dvec3();

        Transform::new(rotation, translation, scale)
    }
}

impl FTransform {
    pub fn from_transform(t: Transform) -> OwnedStruct<FTransform> {
        use crate::core_ue::{FQuat, FVector};

        let s = OwnedStruct::<FTransform>::new();
        let r = s.as_ref();

        let rotation = FQuat::from_dquat(t.rotation);
        r.set_rotation(&rotation);

        let translation = FVector::from_dvec3(t.translation);
        r.set_translation(&translation);

        let scale = FVector::from_dvec3(t.scale);
        r.set_scale3_d(&scale);

        s
    }
}