From b6004e44cff73876f2ba04f342bfe8129a7f5222 Mon Sep 17 00:00:00 2001 From: Oscar Date: Fri, 30 Oct 2020 12:21:57 -0700 Subject: [PATCH] Local resources don't create if already present (#745) Local will no longer insert the inner resource if it already exists. --- crates/bevy_ecs/src/resource/resource_query.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/crates/bevy_ecs/src/resource/resource_query.rs b/crates/bevy_ecs/src/resource/resource_query.rs index ef1105b55d..ab33775bce 100644 --- a/crates/bevy_ecs/src/resource/resource_query.rs +++ b/crates/bevy_ecs/src/resource/resource_query.rs @@ -295,9 +295,13 @@ impl<'a, T: Resource + FromResources> ResourceQuery for Local<'a, T> { type Fetch = FetchResourceLocalMut; fn initialize(resources: &mut Resources, id: Option) { - let value = T::from_resources(resources); let id = id.expect("Local resources can only be used by systems"); - resources.insert_local(id, value); + + // Only add the local resource if it doesn't already exist for this system + if resources.get_local::(id).is_none() { + let value = T::from_resources(resources); + resources.insert_local(id, value); + } } }