use crate::object::{Value, parser::FromValue}; use glam::{Mat4, Quat, Vec3}; impl FromValue for Vec3 { fn from_value(v: Value) -> anyhow::Result { let mut fields = v.as_class("Vector3f").unwrap(); Ok(Self { x: fields.field("x")?, y: fields.field("y")?, z: fields.field("z")?, }) } } impl FromValue for Quat { fn from_value(v: Value) -> anyhow::Result { let mut fields = v.as_class("Quaternionf").unwrap(); Ok(Self::from_array([ fields.field("x")?, fields.field("y")?, fields.field("z")?, fields.field("w")?, ])) } } impl FromValue for Mat4 { fn from_value(v: Value) -> anyhow::Result { let mut fields = v.as_class("Matrix4x4f").unwrap(); Ok(Self::from_cols_array_2d(&[ [ fields.field("e00")?, fields.field("e01")?, fields.field("e02")?, fields.field("e03")?, ], [ fields.field("e10")?, fields.field("e11")?, fields.field("e12")?, fields.field("e13")?, ], [ fields.field("e20")?, fields.field("e21")?, fields.field("e22")?, fields.field("e23")?, ], [ fields.field("e30")?, fields.field("e31")?, fields.field("e32")?, fields.field("e33")?, ], ])) } }