Use Commands::spawn_batch in bevymark example (#7738)
				
					
				
			# Objective Fixes #7735 ## Solution Use `spawn_batch` instead of `spawn` repeatedly in a for loop I have decided to switch from using rands `thread_rng()` to its `StdRng`, this allows us to avoid calling `collect()` on the bundle iterator, if collecting is fine then I can revert it back to using `thread_rng()`.
This commit is contained in:
		
							parent
							
								
									9b7060c4d2
								
							
						
					
					
						commit
						5a66d035e2
					
				| @ -7,7 +7,7 @@ use bevy::{ | |||||||
|     prelude::*, |     prelude::*, | ||||||
|     window::{PresentMode, WindowResolution}, |     window::{PresentMode, WindowResolution}, | ||||||
| }; | }; | ||||||
| use rand::{thread_rng, Rng}; | use rand::{rngs::StdRng, thread_rng, Rng, SeedableRng}; | ||||||
| 
 | 
 | ||||||
| const BIRDS_PER_SECOND: u32 = 10000; | const BIRDS_PER_SECOND: u32 = 10000; | ||||||
| const GRAVITY: f32 = -9.8 * 100.0; | const GRAVITY: f32 = -9.8 * 100.0; | ||||||
| @ -178,11 +178,16 @@ fn spawn_birds( | |||||||
| ) { | ) { | ||||||
|     let bird_x = (primary_window_resolution.width() / -2.) + HALF_BIRD_SIZE; |     let bird_x = (primary_window_resolution.width() / -2.) + HALF_BIRD_SIZE; | ||||||
|     let bird_y = (primary_window_resolution.height() / 2.) - HALF_BIRD_SIZE; |     let bird_y = (primary_window_resolution.height() / 2.) - HALF_BIRD_SIZE; | ||||||
|     let mut rng = thread_rng(); |  | ||||||
| 
 | 
 | ||||||
|     for count in 0..spawn_count { |     let mut rng = StdRng::from_entropy(); | ||||||
|         let bird_z = (counter.count + count) as f32 * 0.00001; | 
 | ||||||
|         commands.spawn(( |     let color = counter.color; | ||||||
|  |     let current_count = counter.count; | ||||||
|  | 
 | ||||||
|  |     commands.spawn_batch((0..spawn_count).map(move |count| { | ||||||
|  |         let velocity_x = rng.gen::<f32>() * MAX_VELOCITY - (MAX_VELOCITY * 0.5); | ||||||
|  |         let bird_z = (current_count + count) as f32 * 0.00001; | ||||||
|  |         ( | ||||||
|             SpriteBundle { |             SpriteBundle { | ||||||
|                 texture: texture.clone(), |                 texture: texture.clone(), | ||||||
|                 transform: Transform { |                 transform: Transform { | ||||||
| @ -190,21 +195,15 @@ fn spawn_birds( | |||||||
|                     scale: Vec3::splat(BIRD_SCALE), |                     scale: Vec3::splat(BIRD_SCALE), | ||||||
|                     ..default() |                     ..default() | ||||||
|                 }, |                 }, | ||||||
|                 sprite: Sprite { |                 sprite: Sprite { color, ..default() }, | ||||||
|                     color: counter.color, |  | ||||||
|                     ..default() |  | ||||||
|                 }, |  | ||||||
|                 ..default() |                 ..default() | ||||||
|             }, |             }, | ||||||
|             Bird { |             Bird { | ||||||
|                 velocity: Vec3::new( |                 velocity: Vec3::new(velocity_x, 0., 0.), | ||||||
|                     rng.gen::<f32>() * MAX_VELOCITY - (MAX_VELOCITY * 0.5), |  | ||||||
|                     0., |  | ||||||
|                     0., |  | ||||||
|                 ), |  | ||||||
|             }, |             }, | ||||||
|         )); |         ) | ||||||
|     } |     })); | ||||||
|  | 
 | ||||||
|     counter.count += spawn_count; |     counter.count += spawn_count; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Liam Gallagher
						Liam Gallagher