diff options
Diffstat (limited to 'src/renderer/mod.rs')
| -rw-r--r-- | src/renderer/mod.rs | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/renderer/mod.rs b/src/renderer/mod.rs index 7dd1802..2676a9c 100644 --- a/src/renderer/mod.rs +++ b/src/renderer/mod.rs @@ -13,7 +13,7 @@ use crate::{ sim::{ cell::materials::MaterialId, cell_sim::world::World, - rb_sim::{RbSimManager, debug_render::DebugVertex}, + rb_sim::{RbSimManager, debug_render::DebugVertex, rb_entity::RbEntity}, }, }; @@ -557,8 +557,8 @@ impl RendererState { self.renderer_rb_entities.drain(); for entity in rb_sim_manager.rb_entities.values() { // TODO add "needs texture update"? - for (byte, cell) in cell_buffer.iter_mut().zip(entity.cells.iter()) { - *byte = cell.material as u8; + for i in 0..entity.cells.len() { + cell_buffer[i] = entity.cells[i].material as u8; } let next_slot = CHUNK_SLOTS + self.renderer_rb_entities.len(); @@ -569,7 +569,7 @@ impl RendererState { self.queue.write_buffer( &self.cell_buffer, - (slot * CELLS_IN_CHUNK) as u64, + (slot * CHUNK_SIZE as usize * CHUNK_SIZE as usize) as u64, &cell_buffer, ); } @@ -603,13 +603,15 @@ impl RendererState { } for (id, slot) in &self.renderer_rb_entities { - if let Some((x, y, cos, sin)) = rb_sim_manager.get_rb_entity_transform(*id) { + if let Some(&RbEntity { width, height, .. }) = rb_sim_manager.rb_entities.get(id) + && let Some((x, y, cos, sin)) = rb_sim_manager.get_rb_entity_transform(*id) + { instances.push(Instance { centre: [x, y], cos_sin: [cos, sin], - half_size, - dims, - cell_offset: (slot * CELLS_IN_CHUNK) as u32, + half_size: [width as f32 / 2.0, height as f32 / 2.0], + dims: [width as u32, height as u32], + cell_offset: (slot * CHUNK_SIZE as usize * CHUNK_SIZE as usize) as u32, _padding: 0, }); } |
