use super::FromValue; use crate::object::Value; use glam::{Quat, Vec3}; impl FromValue for Vec3 { fn from_value(v: Value) -> anyhow::Result { let fields = v.as_class("Vector3f").unwrap(); Ok(Self { x: fields["x"].as_f32().unwrap(), y: fields["y"].as_f32().unwrap(), z: fields["z"].as_f32().unwrap(), }) } } impl FromValue for Quat { fn from_value(v: Value) -> anyhow::Result { let fields = v.as_class("Quaternionf").unwrap(); Ok(Self::from_array([ fields["x"].as_f32().unwrap(), fields["y"].as_f32().unwrap(), fields["z"].as_f32().unwrap(), fields["w"].as_f32().unwrap(), ])) } }