mirror of
https://github.com/bevyengine/bevy
synced 2024-11-22 20:53:53 +00:00
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
1 changed files with 15 additions and 16 deletions
|
@ -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 a new issue