From 29dd58cf6409624514d65b33b3f645f982d9bb2f Mon Sep 17 00:00:00 2001 From: Imbris Date: Sat, 3 Jul 2021 00:58:11 -0400 Subject: [PATCH] Reduce duplicate storage fetching since it has overhead --- server/src/events/interaction.rs | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/server/src/events/interaction.rs b/server/src/events/interaction.rs index 815d721704..3ec0cf10a2 100644 --- a/server/src/events/interaction.rs +++ b/server/src/events/interaction.rs @@ -109,23 +109,20 @@ pub fn handle_mount(server: &mut Server, mounter: EcsEntity, mountee: EcsEntity) Some(comp::MountState::Unmounted) ); - let within_range = within_mounting_range( - state.ecs().read_storage::().get(mounter), - state.ecs().read_storage::().get(mountee), - ); - let alive = |e| { - state - .ecs() - .read_storage::() - .get(e) - .map_or(true, |h| !h.is_dead) + let within_range = || { + let positions = state.ecs().read_storage::(); + within_mounting_range(positions.get(mounter), positions.get(mountee)) }; + let healths = state.ecs().read_storage::(); + let alive = |e| healths.get(e).map_or(true, |h| !h.is_dead); - if not_mounting_yet && within_range && alive(mounter) && alive(mountee) { - if let (Some(mounter_uid), Some(mountee_uid)) = ( - state.ecs().uid_from_entity(mounter), - state.ecs().uid_from_entity(mountee), - ) { + if not_mounting_yet && within_range() && alive(mounter) && alive(mountee) { + let uids = state.ecs().read_storage::(); + if let (Some(mounter_uid), Some(mountee_uid)) = + (uids.get(mounter).copied(), uids.get(mountee).copied()) + { + drop(uids); + drop(healths); // We know the entities must exist to be able to look up their UIDs, so these // are guaranteed to work; hence we can ignore possible errors here. state.write_component_ignore_entity_dead(