mesh renderer

This commit is contained in:
2026-01-04 14:12:02 +00:00
parent 37d6a9e6fc
commit 31662cda3b
3 changed files with 46 additions and 1 deletions

View File

@@ -23,7 +23,7 @@ pub use reference::UnityReference;
pub use type_filter::TypeFilter;
pub use type_registry::{get_class_name, get_type_id};
pub use unity_types::{
BoxCollider, GameObject, MeshFilter, PrefabInstance, PrefabInstanceComponent,
BoxCollider, GameObject, MeshFilter, MeshRenderer, PrefabInstance, PrefabInstanceComponent,
PrefabModification, PrefabResolver, RectTransform, Renderer, Transform,
};
pub use values::{Color, ExternalRef, FileRef, Quaternion, Vector2, Vector3};

View File

@@ -0,0 +1,43 @@
//! MeshRenderer component wrapper
use crate::types::{ComponentContext, Renderer, UnityComponent};
use sparsey::Entity;
/// A MeshRenderer component
///
/// MeshRenderer renders a mesh with materials. It extends the base Renderer
/// with mesh-specific rendering functionality.
#[derive(Debug, Clone)]
pub struct MeshRenderer {
renderer: Renderer,
}
impl MeshRenderer {
/// Get the base Renderer
pub fn renderer(&self) -> &Renderer {
&self.renderer
}
/// Get mutable access to the base Renderer
pub fn renderer_mut(&mut self) -> &mut Renderer {
&mut self.renderer
}
}
impl UnityComponent for MeshRenderer {
/// Parse a MeshRenderer from YAML
///
/// Note: Caller is responsible for ensuring this is called on the correct document type.
fn parse(yaml: &serde_yaml::Mapping, ctx: &ComponentContext) -> Option<Self> {
// Parse the base Renderer data
let renderer = Renderer::parse(yaml, ctx)?;
Some(Self { renderer })
}
}
impl crate::types::EcsInsertable for MeshRenderer {
fn insert_into_world(self, world: &mut sparsey::World, entity: Entity) {
world.insert(entity, (self,));
}
}

View File

@@ -3,6 +3,7 @@
pub mod box_collider;
pub mod game_object;
pub mod mesh_filter;
pub mod mesh_renderer;
pub mod prefab_instance;
pub mod renderer;
pub mod transform;
@@ -10,6 +11,7 @@ pub mod transform;
pub use box_collider::BoxCollider;
pub use game_object::GameObject;
pub use mesh_filter::MeshFilter;
pub use mesh_renderer::MeshRenderer;
pub use prefab_instance::{
PrefabInstance, PrefabInstanceComponent, PrefabModification, PrefabResolver,
};