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/mod.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/classes/mod.rs') 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; +} + +impl Value { + pub(self) fn parse(self) -> Result { + T::from_value(self) + } +} -- cgit v1.2.3-70-g09d2