From 5555c8bbefb4f52f5002603eb91b6c95cbdd97e4 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 12 Mar 2025 22:39:58 +0100 Subject: more parsing helpers --- src/classes/mod.rs | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'src/classes/mod.rs') 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, Box), 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; -} - -impl Value { - pub(self) fn parse(self) -> Result { - T::from_value(self) - } -} -- cgit v1.2.3-70-g09d2