Refactor ecs module to use the new structs

The ecs module now uses the new model::Model struct instead of the
previous Mesh struct.
This commit is contained in:
reo 2025-07-13 19:57:16 +03:00
parent 0ecdb2cb6f
commit 67f5913907

View file

@ -1,6 +1,7 @@
use glam::{Mat4, Quat, Vec3}; use glam::{Mat4, Quat, Vec3};
use hecs::{Entity, World}; use hecs::{Entity, World};
use crate::{render::GliumRenderer, model}; use crate::render::GliumRenderer;
use crate::model::Model;
/// This system joins the renderer and ECS, /// This system joins the renderer and ECS,
/// and provides tools to use them together /// and provides tools to use them together
@ -15,16 +16,20 @@ impl ECSRenderer {
Self { renderer, world } Self { renderer, world }
} }
pub fn spawn_mesh(&mut self, mesh: model::Mesh, transform: Transform) -> Entity { pub fn spawn_mesh(&mut self, model: Model, transform: Transform) -> Entity {
let mesh_id = self.renderer.meshes.len(); let model_id = self.renderer.models.len();
self.renderer.meshes.push(mesh); self.renderer.models.push(model);
self.world.spawn((transform, MeshHandle(mesh_id)))
self.world.spawn((
transform,
ModelHandle(model_id),
))
} }
pub fn despawn_mesh(&mut self, entity: Entity) { pub fn despawn_mesh(&mut self, entity: Entity) {
if let Ok(mesh_handle) = self.world.get::<&MeshHandle>(entity) { if let Ok(model_handle) = self.world.get::<&ModelHandle>(entity) {
if mesh_handle.0 < self.renderer.meshes.len() { if model_handle.0 < self.renderer.models.len() {
self.renderer.meshes.remove(mesh_handle.0); self.renderer.models.remove(model_handle.0);
} }
} }
let _ = self.world.despawn(entity); let _ = self.world.despawn(entity);
@ -56,4 +61,4 @@ impl Transform {
} }
#[derive(Clone)] #[derive(Clone)]
pub struct MeshHandle(pub usize); pub struct ModelHandle(pub usize);