From 79e341769d04a6daa5c1edae87d6ff8a9adba9c6 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 11 Mar 2025 21:57:44 +0100 Subject: fromvalue trait --- src/classes/vectors.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/classes/vectors.rs (limited to 'src/classes/vectors.rs') diff --git a/src/classes/vectors.rs b/src/classes/vectors.rs new file mode 100644 index 0000000..c6e3a0d --- /dev/null +++ b/src/classes/vectors.rs @@ -0,0 +1,26 @@ +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(), + ])) + } +} -- cgit v1.2.3-70-g09d2