diff options
Diffstat (limited to 'src/classes/mod.rs')
-rw-r--r-- | src/classes/mod.rs | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/classes/mod.rs b/src/classes/mod.rs index f7b89cb..501fdf9 100644 --- a/src/classes/mod.rs +++ b/src/classes/mod.rs @@ -1,15 +1,17 @@ pub mod assetinfo; pub mod gameobject; +pub mod mesh; pub mod pptr; pub mod streaminginfo; pub mod texture2d; pub mod transform; pub mod vectors; -use crate::object::Value; +use crate::object::{Value, parser::FromValue}; use anyhow::Result; use assetinfo::AssetInfo; use gameobject::GameObject; +use mesh::{ChannelInfo, Mesh, SubMesh, VertexData}; use pptr::PPtr; use serde::Serialize; use std::collections::BTreeMap; @@ -25,6 +27,10 @@ pub enum HValue { PPtr(PPtr), Texture2D(Texture2D), StreamingInfo(StreamingInfo), + SubMesh(SubMesh), + Mesh(Mesh), + VertexData(VertexData), + ChannelInfo(ChannelInfo), Pair(Box<HValue>, Box<HValue>), Value([Value; 1]), @@ -48,6 +54,10 @@ impl HValue { "Transform" => Self::Transform(Transform::from_value(value)?), "Texture2D" => Self::Texture2D(Texture2D::from_value(value)?), "StreamingInfo" => Self::StreamingInfo(StreamingInfo::from_value(value)?), + // "SubMesh" => Self::SubMesh(SubMesh::from_value(value)?), + "Mesh" => Self::Mesh(Mesh::from_value(value)?), + // "VertexData" => Self::VertexData(VertexData::from_value(value)?), + // "ChannelInfo" => Self::ChannelInfo(ChannelInfo::from_value(value)?), _ => { let Value::Object { class, fields } = value else { unreachable!() @@ -117,13 +127,3 @@ impl HValue { } } } - -pub 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) - } -} |