23 lines
807 B
Rust
23 lines
807 B
Rust
use noise::{
|
|
utils::{NoiseMap, NoiseMapBuilder, PlaneMapBuilder},
|
|
Seedable, SuperSimplex,
|
|
};
|
|
use rand::{Rng, SeedableRng};
|
|
|
|
pub type GameRng = rand_xoshiro::Xoshiro256PlusPlus;
|
|
|
|
pub fn get_rng(seed: impl AsRef<[u8]> /* implemented by String */) -> GameRng {
|
|
// blake3::Hash is a [u8; 32] under the hood and implements From and Into to convert to and from it
|
|
let hash: [u8; 32] = blake3::hash(seed.as_ref()).into();
|
|
// Xoshiro256++ seeds are [u8; 32] :3
|
|
GameRng::from_seed(hash)
|
|
}
|
|
|
|
pub fn get_noise(rng: &mut GameRng, size: (usize, usize)) -> NoiseMap {
|
|
// rng.gen::<u32>() generates a random u32 which is already between 0 and u32::MAX
|
|
let noise = SuperSimplex::new().set_seed(rng.gen());
|
|
PlaneMapBuilder::new(&noise)
|
|
.set_size(size.0, size.1)
|
|
.build()
|
|
}
|