From 4f9272f4a8618da337ed94b2e81da5eae526732f Mon Sep 17 00:00:00 2001 From: Christian Legnitto Date: Fri, 18 Jun 2021 00:25:46 -0700 Subject: [PATCH 1/5] Add random number generator resources (optionally specified with a seed) --- crates/bevy_core/src/lib.rs | 14 +++- crates/bevy_core/src/rng.rs | 104 +++++++++++++++++++++++++++++ examples/2d/contributors.rs | 19 +++--- examples/2d/many_sprites.rs | 5 +- examples/ecs/change_detection.rs | 9 ++- examples/ecs/iter_combinations.rs | 3 +- examples/game/alien_cake_addict.rs | 15 +++-- examples/tools/bevymark.rs | 8 ++- 8 files changed, 148 insertions(+), 29 deletions(-) create mode 100644 crates/bevy_core/src/rng.rs diff --git a/crates/bevy_core/src/lib.rs b/crates/bevy_core/src/lib.rs index 75fd87adb5ebb..7b941ae0ccf4e 100644 --- a/crates/bevy_core/src/lib.rs +++ b/crates/bevy_core/src/lib.rs @@ -2,6 +2,7 @@ mod bytes; mod float_ord; mod label; mod name; +mod rng; mod task_pool_options; mod time; @@ -9,12 +10,16 @@ pub use bytes::*; pub use float_ord::*; pub use label::*; pub use name::*; +pub use rng::*; pub use task_pool_options::DefaultTaskPoolOptions; pub use time::*; pub mod prelude { #[doc(hidden)] - pub use crate::{DefaultTaskPoolOptions, EntityLabels, Labels, Name, Time, Timer}; + pub use crate::{ + CryptoRng, DefaultRngOptions, DefaultTaskPoolOptions, EntityLabels, InsecureRng, Labels, + Name, Rng, RngCore, SecureRng, Time, Timer, SliceRandom + }; } use bevy_app::prelude::*; @@ -46,6 +51,13 @@ impl Plugin for CorePlugin { .unwrap_or_else(DefaultTaskPoolOptions::default) .create_default_pools(app.world_mut()); + // Setup the default bevy random number generators + app.world_mut() + .get_resource::() + .cloned() + .unwrap_or_else(DefaultRngOptions::default) + .create_default_rngs(app.world_mut()); + app.init_resource::