summaryrefslogtreecommitdiff
path: root/src/sim/sim_manager/utils.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/sim/sim_manager/utils.rs')
-rw-r--r--src/sim/sim_manager/utils.rs26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/sim/sim_manager/utils.rs b/src/sim/sim_manager/utils.rs
index e77f30a..f30e9a0 100644
--- a/src/sim/sim_manager/utils.rs
+++ b/src/sim/sim_manager/utils.rs
@@ -68,6 +68,7 @@ pub fn write_entities_to_world(
sim: &mut SimManager,
// (entity_x, entity_y, cell_x, cell_y)
) -> Vec<(EntityId, Vec<(u8, u8, i32, i32)>)> {
+ puffin::profile_function!();
// TODO optimize
let entity_ids: Vec<EntityId> = sim.entities.keys().copied().collect();
let mut cells_written_by_entity: Vec<(EntityId, Vec<(u8, u8, i32, i32)>)> = Vec::new();
@@ -85,6 +86,7 @@ pub fn read_back_entities_from_world(
sim: &mut SimManager,
cells_written_by_entity: Vec<(EntityId, Vec<(u8, u8, i32, i32)>)>,
) {
+ puffin::profile_function!();
for (entity_id, cells_written) in cells_written_by_entity {
let mut entity = sim.entities.get_mut(&entity_id);
let mut should_update_entity = false;
@@ -115,19 +117,23 @@ pub fn read_back_entities_from_world(
if let Some(entity) = &mut entity
&& should_update_entity
{
+ puffin::profile_scope!("Recompute collider");
if let Some(new_collider) = entity.compute_collider() {
- sim.rb_manager
- .physics_manager
- .world
- .remove_collider(entity.data.collider_h.unwrap());
+ {
+ puffin::profile_scope!("Upsert collider");
+ sim.rb_manager
+ .physics_manager
+ .world
+ .remove_collider(entity.data.collider_h.unwrap());
- let new_handle = sim
- .rb_manager
- .physics_manager
- .world
- .insert_collider(new_collider, Some(entity.data.rb_h.unwrap()));
+ let new_handle = sim
+ .rb_manager
+ .physics_manager
+ .world
+ .insert_collider(new_collider, Some(entity.data.rb_h.unwrap()));
- entity.data.collider_h = Some(new_handle);
+ entity.data.collider_h = Some(new_handle);
+ }
}
}
}