diff options
author | metamuffin <metamuffin@disroot.org> | 2025-03-13 17:59:49 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-03-13 17:59:49 +0100 |
commit | 70d22e5162afa1b81f976acd1db534834010d3b8 (patch) | |
tree | 92982d4570eb459bb14f7a9c58bcb15de4e4cd9d /src/classes/vectors.rs | |
parent | 55dae4b68013a5c091abba86c725300bccfe1459 (diff) | |
download | unity-tools-70d22e5162afa1b81f976acd1db534834010d3b8.tar unity-tools-70d22e5162afa1b81f976acd1db534834010d3b8.tar.bz2 unity-tools-70d22e5162afa1b81f976acd1db534834010d3b8.tar.zst |
material parser
Diffstat (limited to 'src/classes/vectors.rs')
-rw-r--r-- | src/classes/vectors.rs | 44 |
1 files changed, 38 insertions, 6 deletions
diff --git a/src/classes/vectors.rs b/src/classes/vectors.rs index 76760bc..14c5a59 100644 --- a/src/classes/vectors.rs +++ b/src/classes/vectors.rs @@ -1,14 +1,46 @@ use crate::object::{Value, parser::FromValue}; -use glam::{Mat4, Quat, Vec3}; +use glam::{Mat4, Quat, Vec2, Vec3, Vec4}; +use serde::Serialize; +impl FromValue for Vec2 { + fn from_value(v: Value) -> anyhow::Result<Self> { + let mut fields = v.as_class("Vector2f").unwrap(); + Ok(Self::new(fields.field("x")?, fields.field("y")?)) + } +} impl FromValue for Vec3 { fn from_value(v: Value) -> anyhow::Result<Self> { let mut fields = v.as_class("Vector3f").unwrap(); - Ok(Self { - x: fields.field("x")?, - y: fields.field("y")?, - z: fields.field("z")?, - }) + Ok(Self::new( + fields.field("x")?, + fields.field("y")?, + fields.field("z")?, + )) + } +} +impl FromValue for Vec4 { + fn from_value(v: Value) -> anyhow::Result<Self> { + let mut fields = v.as_class("Vector4f")?; + Ok(Self::new( + fields.field("x")?, + fields.field("y")?, + fields.field("z")?, + fields.field("w")?, + )) + } +} + +#[derive(Debug, Serialize)] +pub struct ColorRGBA(pub Vec4); +impl FromValue for ColorRGBA { + fn from_value(v: Value) -> anyhow::Result<Self> { + let mut fields = v.as_class("ColorRGBA")?; + Ok(ColorRGBA(Vec4::new( + fields.field("r")?, + fields.field("g")?, + fields.field("b")?, + fields.field("a")?, + ))) } } |