diff options
author | metamuffin <metamuffin@disroot.org> | 2025-03-22 16:41:27 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-03-22 16:41:27 +0100 |
commit | d780d420a69fe239bdb93ce7d1899e380a682062 (patch) | |
tree | a782e640897b5459b7c6c340b389a8cb1fa02ada /src/classes/mesh_renderer.rs | |
parent | e52a32df7dad09a06f2791f8cb8aff51fd856404 (diff) | |
download | unity-tools-d780d420a69fe239bdb93ce7d1899e380a682062.tar unity-tools-d780d420a69fe239bdb93ce7d1899e380a682062.tar.bz2 unity-tools-d780d420a69fe239bdb93ce7d1899e380a682062.tar.zst |
wrong inheritance of meshrenderer
Diffstat (limited to 'src/classes/mesh_renderer.rs')
-rw-r--r-- | src/classes/mesh_renderer.rs | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/src/classes/mesh_renderer.rs b/src/classes/mesh_renderer.rs index c169450..261ecd8 100644 --- a/src/classes/mesh_renderer.rs +++ b/src/classes/mesh_renderer.rs @@ -7,30 +7,33 @@ use crate::object::{ }; use anyhow::{Context, Result}; -pub struct MeshRenderer { +pub struct Renderer { pub enabled: bool, - pub mesh: PPtr<Mesh>, pub cast_shadows: u8, pub game_object: PPtr<GameObject>, pub materials: Vec<PPtr<Material>>, } +pub struct MeshRenderer { + pub renderer: Renderer, + pub additional_vertex_streams: PPtr<Mesh>, +} pub struct SkinnedMeshRenderer { - pub mesh_renderer: MeshRenderer, + pub renderer: Renderer, pub bones: Vec<PPtr<Transform>>, + pub mesh: PPtr<Mesh>, pub root_bone: PPtr<Transform>, } -impl FromValue for MeshRenderer { +impl FromValue for Renderer { fn from_value(v: Value) -> Result<Self> { - Self::from_fields(v.as_class("MeshRenderer")?) + Self::from_fields(v.as_class("Renderer")?) } } -impl MeshRenderer { +impl Renderer { pub fn from_fields(mut fields: Fields) -> Result<Self> { Ok(Self { enabled: fields.field("m_Enabled")?, - mesh: fields.field("m_Mesh")?, cast_shadows: fields.field("m_CastShadows")?, game_object: fields .field("m_GameObject") @@ -47,11 +50,21 @@ impl MeshRenderer { } } +impl FromValue for MeshRenderer { + fn from_value(v: Value) -> Result<Self> { + let mut fields = v.as_class("MeshRenderer")?; + Ok(Self { + additional_vertex_streams: fields.field("m_AdditionalVertexStreams")?, + renderer: Renderer::from_fields(fields)?, + }) + } +} impl FromValue for SkinnedMeshRenderer { fn from_value(v: Value) -> Result<Self> { let mut fields = v.as_class("SkinnedMeshRenderer")?; Ok(Self { root_bone: fields.field("m_RootBone")?, + mesh: fields.field("m_Mesh")?, bones: fields .remove("m_Bones") .unwrap() @@ -60,7 +73,7 @@ impl FromValue for SkinnedMeshRenderer { .into_iter() .map(|e| e.parse().unwrap()) .collect(), - mesh_renderer: MeshRenderer::from_fields(fields)?, + renderer: Renderer::from_fields(fields)?, }) } } |