@@ -16,6 +16,9 @@ use std::{marker::PhantomData, ops::Deref};
1616
1717pub use bevy_render_macros:: ExtractComponent ;
1818
19+ #[ derive( Component ) ]
20+ pub struct MainWorldEntity ( Entity ) ;
21+
1922/// Stores the index of a uniform inside of [`ComponentUniforms`].
2023#[ derive( Component ) ]
2124pub struct DynamicUniformIndex < C : Component > {
@@ -209,32 +212,32 @@ impl<T: Asset> ExtractComponent for Handle<T> {
209212fn extract_components < C : ExtractComponent > (
210213 mut commands : Commands ,
211214 mut previous_len : Local < usize > ,
212- query : Extract < Query < ( Entity , C :: QueryData ) , C :: QueryFilter > > ,
215+ query : Extract < Query < ( Entity , C :: QueryData ) , ( C :: QueryFilter , Added < C > ) > > ,
213216) {
214217 let mut values = Vec :: with_capacity ( * previous_len) ;
215218 for ( entity, query_item) in & query {
216219 if let Some ( component) = C :: extract_component ( query_item) {
217- values. push ( ( entity , component ) ) ;
220+ values. push ( ( component , MainWorldEntity ( entity ) ) ) ;
218221 }
219222 }
220223 * previous_len = values. len ( ) ;
221- commands. insert_or_spawn_batch ( values) ;
224+ commands. spawn_batch ( values) ;
222225}
223226
224227/// This system extracts all visible components of the corresponding [`ExtractComponent`] type.
225228fn extract_visible_components < C : ExtractComponent > (
226229 mut commands : Commands ,
227230 mut previous_len : Local < usize > ,
228- query : Extract < Query < ( Entity , & ViewVisibility , C :: QueryData ) , C :: QueryFilter > > ,
231+ query : Extract < Query < ( Entity , & ViewVisibility , C :: QueryData ) , ( C :: QueryFilter , Added < C > ) > > ,
229232) {
230233 let mut values = Vec :: with_capacity ( * previous_len) ;
231234 for ( entity, view_visibility, query_item) in & query {
232235 if view_visibility. get ( ) {
233236 if let Some ( component) = C :: extract_component ( query_item) {
234- values. push ( ( entity , component ) ) ;
237+ values. push ( ( component , MainWorldEntity ( entity ) ) ) ;
235238 }
236239 }
237240 }
238241 * previous_len = values. len ( ) ;
239- commands. insert_or_spawn_batch ( values) ;
242+ commands. spawn_batch ( values) ;
240243}
0 commit comments