summaryrefslogtreecommitdiff
path: root/src/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'src/renderer')
-rw-r--r--src/renderer/mod.rs18
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,
});
}