diff options
Diffstat (limited to 'src/renderer')
| -rw-r--r-- | src/renderer/mod.rs | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/renderer/mod.rs b/src/renderer/mod.rs index 291b6d4..2df15e6 100644 --- a/src/renderer/mod.rs +++ b/src/renderer/mod.rs @@ -11,8 +11,11 @@ use crate::{ config::{CELLS_IN_CHUNK, CHUNK_SIZE}, renderer::ui::draw_egui, sim::{ - cell::materials::MaterialId, cell_manager::manager::CellManager, entity::Entity, - rb_manager::debug_render::DebugVertex, sim_manager::SimManager, + cell::materials::MaterialId, + cell_manager::manager::CellManager, + entity::Entity, + rb_manager::debug_render::DebugVertex, + sim_manager::{SimCtx, SimManager}, }, }; @@ -692,7 +695,7 @@ impl RendererState { self.renderer_rb_entities.drain(); for entity in sim.entities.values() { // TODO add "needs texture update"? - if let Some(cells) = &entity.cells { + if let Some(cells) = &entity.data.cells { for i in 0..cells.cells.len() { cell_buffer[i] = cells.cells[i].material as u8; } @@ -700,7 +703,7 @@ impl RendererState { let next_slot = CHUNK_SLOTS + self.renderer_rb_entities.len(); let slot = *self .renderer_rb_entities - .entry(entity.id) + .entry(entity.data.id) .or_insert(next_slot); self.queue.write_buffer( @@ -743,8 +746,12 @@ impl RendererState { for (id, slot) in &self.renderer_rb_entities { if let Some(entity) = sim.entities.get(id) - && let Some(cells) = &entity.cells - && let Some((pos, (cos, sin))) = entity.transform(sim) + && let Some(cells) = &entity.data.cells + && let Some((pos, (cos, sin))) = entity.data.transform(&mut SimCtx { + cell_manager: &mut sim.cell_manager, + particle_manager: &mut sim.particle_manager, + rb_manager: &mut sim.rb_manager, + }) { instances.push(RendererInstance { centre: pos.to_array(), |
