diff --git a/crates/bevy_ecs/src/lib.rs b/crates/bevy_ecs/src/lib.rs index de7c17baf6..ffe8c06804 100644 --- a/crates/bevy_ecs/src/lib.rs +++ b/crates/bevy_ecs/src/lib.rs @@ -886,6 +886,8 @@ mod tests { let mut world = World::default(); assert!(world.get_resource::().is_none()); assert!(!world.contains_resource::()); + assert!(!world.is_resource_added::()); + assert!(!world.is_resource_changed::()); world.insert_resource(123); let resource_id = world @@ -900,6 +902,8 @@ mod tests { assert_eq!(*world.get_resource::().expect("resource exists"), 123); assert!(world.contains_resource::()); + assert!(world.is_resource_added::()); + assert!(world.is_resource_changed::()); world.insert_resource(456u64); assert_eq!( diff --git a/crates/bevy_ecs/src/world/mod.rs b/crates/bevy_ecs/src/world/mod.rs index 4fe571bdf7..d246248872 100644 --- a/crates/bevy_ecs/src/world/mod.rs +++ b/crates/bevy_ecs/src/world/mod.rs @@ -664,16 +664,34 @@ impl World { } pub fn is_resource_added(&self) -> bool { - let component_id = self.components.get_resource_id(TypeId::of::()).unwrap(); - let column = self.get_populated_resource_column(component_id).unwrap(); + let component_id = + if let Some(component_id) = self.components.get_resource_id(TypeId::of::()) { + component_id + } else { + return false; + }; + let column = if let Some(column) = self.get_populated_resource_column(component_id) { + column + } else { + return false; + }; // SAFE: resources table always have row 0 let ticks = unsafe { column.get_ticks_unchecked(0) }; ticks.is_added(self.last_change_tick(), self.read_change_tick()) } pub fn is_resource_changed(&self) -> bool { - let component_id = self.components.get_resource_id(TypeId::of::()).unwrap(); - let column = self.get_populated_resource_column(component_id).unwrap(); + let component_id = + if let Some(component_id) = self.components.get_resource_id(TypeId::of::()) { + component_id + } else { + return false; + }; + let column = if let Some(column) = self.get_populated_resource_column(component_id) { + column + } else { + return false; + }; // SAFE: resources table always have row 0 let ticks = unsafe { column.get_ticks_unchecked(0) }; ticks.is_changed(self.last_change_tick(), self.read_change_tick())