From d780d420a69fe239bdb93ce7d1899e380a682062 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Sat, 22 Mar 2025 16:41:27 +0100 Subject: wrong inheritance of meshrenderer --- src/classes/mesh_renderer.rs | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) (limited to 'src/classes/mesh_renderer.rs') 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, pub cast_shadows: u8, pub game_object: PPtr, pub materials: Vec>, } +pub struct MeshRenderer { + pub renderer: Renderer, + pub additional_vertex_streams: PPtr, +} pub struct SkinnedMeshRenderer { - pub mesh_renderer: MeshRenderer, + pub renderer: Renderer, pub bones: Vec>, + pub mesh: PPtr, pub root_bone: PPtr, } -impl FromValue for MeshRenderer { +impl FromValue for Renderer { fn from_value(v: Value) -> Result { - 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 { 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 { + 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 { 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)?, }) } } -- cgit v1.2.3-70-g09d2