diff options
Diffstat (limited to 'src/classes/mod.rs')
-rw-r--r-- | src/classes/mod.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/classes/mod.rs b/src/classes/mod.rs index bfde8ad..8c0db51 100644 --- a/src/classes/mod.rs +++ b/src/classes/mod.rs @@ -2,6 +2,7 @@ pub mod assetinfo; pub mod gameobject; pub mod pptr; pub mod transform; +pub mod vectors; use crate::object::Value; use anyhow::Result; @@ -38,6 +39,7 @@ impl HValue { x if x.starts_with("PPtr<") => Self::PPtr(PPtr::from_value(value)?), "AssetInfo" => Self::AssetInfo(AssetInfo::from_value(value)?), "GameObject" => Self::GameObject(GameObject::from_value(value)?), + "Transform" => Self::Transform(Transform::from_value(value)?), _ => { let Value::Object { class, fields } = value else { unreachable!() @@ -107,3 +109,13 @@ impl HValue { } } } + +trait FromValue: Sized { + fn from_value(v: Value) -> Result<Self>; +} + +impl Value { + pub(self) fn parse<T: FromValue>(self) -> Result<T> { + T::from_value(self) + } +} |