Skip to content

Commit b6004e4

Browse files
authored
Local resources don't create if already present (#745)
Local<T> will no longer insert the inner resource if it already exists.
1 parent dea05e9 commit b6004e4

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

crates/bevy_ecs/src/resource/resource_query.rs

+6-2
Original file line numberDiff line numberDiff line change
@@ -295,9 +295,13 @@ impl<'a, T: Resource + FromResources> ResourceQuery for Local<'a, T> {
295295
type Fetch = FetchResourceLocalMut<T>;
296296

297297
fn initialize(resources: &mut Resources, id: Option<SystemId>) {
298-
let value = T::from_resources(resources);
299298
let id = id.expect("Local<T> resources can only be used by systems");
300-
resources.insert_local(id, value);
299+
300+
// Only add the local resource if it doesn't already exist for this system
301+
if resources.get_local::<T>(id).is_none() {
302+
let value = T::from_resources(resources);
303+
resources.insert_local(id, value);
304+
}
301305
}
302306
}
303307

0 commit comments

Comments
 (0)