Update trigger_observers to operate over slices of data (#14354)
				
					
				
			# Objective - Fixes #14333 ## Solution - Updated `trigger_observers` signature to operate over a slice instead of an `Iterator`. - Updated calls to `trigger_observers` to match the new signature. --- ## Migration Guide - TBD
This commit is contained in:
		
							parent
							
								
									0e76b00e15
								
							
						
					
					
						commit
						72e7a4fed2
					
				| @ -682,11 +682,7 @@ impl<'w> BundleInserter<'w> { | |||||||
|                 add_bundle.mutated.iter().copied(), |                 add_bundle.mutated.iter().copied(), | ||||||
|             ); |             ); | ||||||
|             if archetype.has_replace_observer() { |             if archetype.has_replace_observer() { | ||||||
|                 deferred_world.trigger_observers( |                 deferred_world.trigger_observers(ON_REPLACE, entity, &add_bundle.mutated); | ||||||
|                     ON_REPLACE, |  | ||||||
|                     entity, |  | ||||||
|                     add_bundle.mutated.iter().copied(), |  | ||||||
|                 ); |  | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| @ -842,11 +838,11 @@ impl<'w> BundleInserter<'w> { | |||||||
|         unsafe { |         unsafe { | ||||||
|             deferred_world.trigger_on_add(new_archetype, entity, add_bundle.added.iter().cloned()); |             deferred_world.trigger_on_add(new_archetype, entity, add_bundle.added.iter().cloned()); | ||||||
|             if new_archetype.has_add_observer() { |             if new_archetype.has_add_observer() { | ||||||
|                 deferred_world.trigger_observers(ON_ADD, entity, add_bundle.added.iter().cloned()); |                 deferred_world.trigger_observers(ON_ADD, entity, &add_bundle.added); | ||||||
|             } |             } | ||||||
|             deferred_world.trigger_on_insert(new_archetype, entity, bundle_info.iter_components()); |             deferred_world.trigger_on_insert(new_archetype, entity, bundle_info.iter_components()); | ||||||
|             if new_archetype.has_insert_observer() { |             if new_archetype.has_insert_observer() { | ||||||
|                 deferred_world.trigger_observers(ON_INSERT, entity, bundle_info.iter_components()); |                 deferred_world.trigger_observers(ON_INSERT, entity, bundle_info.components()); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| @ -959,11 +955,11 @@ impl<'w> BundleSpawner<'w> { | |||||||
|         unsafe { |         unsafe { | ||||||
|             deferred_world.trigger_on_add(archetype, entity, bundle_info.iter_components()); |             deferred_world.trigger_on_add(archetype, entity, bundle_info.iter_components()); | ||||||
|             if archetype.has_add_observer() { |             if archetype.has_add_observer() { | ||||||
|                 deferred_world.trigger_observers(ON_ADD, entity, bundle_info.iter_components()); |                 deferred_world.trigger_observers(ON_ADD, entity, bundle_info.components()); | ||||||
|             } |             } | ||||||
|             deferred_world.trigger_on_insert(archetype, entity, bundle_info.iter_components()); |             deferred_world.trigger_on_insert(archetype, entity, bundle_info.iter_components()); | ||||||
|             if archetype.has_insert_observer() { |             if archetype.has_insert_observer() { | ||||||
|                 deferred_world.trigger_observers(ON_INSERT, entity, bundle_info.iter_components()); |                 deferred_world.trigger_observers(ON_INSERT, entity, bundle_info.components()); | ||||||
|             } |             } | ||||||
|         }; |         }; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -370,13 +370,13 @@ impl<'w> DeferredWorld<'w> { | |||||||
|         &mut self, |         &mut self, | ||||||
|         event: ComponentId, |         event: ComponentId, | ||||||
|         entity: Entity, |         entity: Entity, | ||||||
|         components: impl Iterator<Item = ComponentId>, |         components: &[ComponentId], | ||||||
|     ) { |     ) { | ||||||
|         Observers::invoke::<_>( |         Observers::invoke::<_>( | ||||||
|             self.reborrow(), |             self.reborrow(), | ||||||
|             event, |             event, | ||||||
|             entity, |             entity, | ||||||
|             components, |             components.iter().copied(), | ||||||
|             &mut (), |             &mut (), | ||||||
|             &mut false, |             &mut false, | ||||||
|         ); |         ); | ||||||
|  | |||||||
| @ -1224,11 +1224,19 @@ impl<'w> EntityWorldMut<'w> { | |||||||
|         unsafe { |         unsafe { | ||||||
|             deferred_world.trigger_on_replace(archetype, self.entity, archetype.components()); |             deferred_world.trigger_on_replace(archetype, self.entity, archetype.components()); | ||||||
|             if archetype.has_replace_observer() { |             if archetype.has_replace_observer() { | ||||||
|                 deferred_world.trigger_observers(ON_REPLACE, self.entity, archetype.components()); |                 deferred_world.trigger_observers( | ||||||
|  |                     ON_REPLACE, | ||||||
|  |                     self.entity, | ||||||
|  |                     &archetype.components().collect::<Vec<ComponentId>>(), | ||||||
|  |                 ); | ||||||
|             } |             } | ||||||
|             deferred_world.trigger_on_remove(archetype, self.entity, archetype.components()); |             deferred_world.trigger_on_remove(archetype, self.entity, archetype.components()); | ||||||
|             if archetype.has_remove_observer() { |             if archetype.has_remove_observer() { | ||||||
|                 deferred_world.trigger_observers(ON_REMOVE, self.entity, archetype.components()); |                 deferred_world.trigger_observers( | ||||||
|  |                     ON_REMOVE, | ||||||
|  |                     self.entity, | ||||||
|  |                     &archetype.components().collect::<Vec<ComponentId>>(), | ||||||
|  |                 ); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| @ -1435,11 +1443,11 @@ unsafe fn trigger_on_replace_and_on_remove_hooks_and_observers( | |||||||
| ) { | ) { | ||||||
|     deferred_world.trigger_on_replace(archetype, entity, bundle_info.iter_components()); |     deferred_world.trigger_on_replace(archetype, entity, bundle_info.iter_components()); | ||||||
|     if archetype.has_replace_observer() { |     if archetype.has_replace_observer() { | ||||||
|         deferred_world.trigger_observers(ON_REPLACE, entity, bundle_info.iter_components()); |         deferred_world.trigger_observers(ON_REPLACE, entity, bundle_info.components()); | ||||||
|     } |     } | ||||||
|     deferred_world.trigger_on_remove(archetype, entity, bundle_info.iter_components()); |     deferred_world.trigger_on_remove(archetype, entity, bundle_info.iter_components()); | ||||||
|     if archetype.has_remove_observer() { |     if archetype.has_remove_observer() { | ||||||
|         deferred_world.trigger_observers(ON_REMOVE, entity, bundle_info.iter_components()); |         deferred_world.trigger_observers(ON_REMOVE, entity, bundle_info.components()); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Martín Maita
						Martín Maita