aboutsummaryrefslogtreecommitdiff
path: root/src/classes/vectors.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-03-11 21:57:44 +0100
committermetamuffin <metamuffin@disroot.org>2025-03-11 21:57:44 +0100
commit79e341769d04a6daa5c1edae87d6ff8a9adba9c6 (patch)
tree06792cc2a331aca1f36f9a65a1beb6c89bf361a2 /src/classes/vectors.rs
parentd4dcece739216cae8f214900af7fc6f1728f09b8 (diff)
downloadunity-tools-79e341769d04a6daa5c1edae87d6ff8a9adba9c6.tar
unity-tools-79e341769d04a6daa5c1edae87d6ff8a9adba9c6.tar.bz2
unity-tools-79e341769d04a6daa5c1edae87d6ff8a9adba9c6.tar.zst
fromvalue trait
Diffstat (limited to 'src/classes/vectors.rs')
-rw-r--r--src/classes/vectors.rs26
1 files changed, 26 insertions, 0 deletions
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<Self> {
+ 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<Self> {
+ 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(),
+ ]))
+ }
+}