diff options
author | metamuffin <metamuffin@disroot.org> | 2025-03-12 22:39:58 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-03-12 22:39:58 +0100 |
commit | 5555c8bbefb4f52f5002603eb91b6c95cbdd97e4 (patch) | |
tree | 208e88359deb3cf5f7e2a4135693f12d76ad97e1 /src/classes/mod.rs | |
parent | 4906844cbfd2717a29b434fb7d8f90c5117fddd5 (diff) | |
download | unity-tools-5555c8bbefb4f52f5002603eb91b6c95cbdd97e4.tar unity-tools-5555c8bbefb4f52f5002603eb91b6c95cbdd97e4.tar.bz2 unity-tools-5555c8bbefb4f52f5002603eb91b6c95cbdd97e4.tar.zst |
more parsing helpers
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) - } -} |