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