aboutsummaryrefslogtreecommitdiff
path: root/src/classes/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/classes/mod.rs')
-rw-r--r--src/classes/mod.rs22
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)
- }
-}