use bevy_math::{IVec2, UVec2, UVec4, Vec2, Vec3};
use noiz::{
RawNoise,
cells::Partitioner,
prelude::*,
rng::{AnyValueFromBits, NoiseRng, SNormSplit},
};
fn main() {
let mut rng = NoiseRng(37);
println!("Random number: {}.", rng.rand_u32(123));
rng.re_seed();
println!("Random number: {}.", rng.rand_u32(123));
println!(
"Random number from vec: {}.",
rng.rand_u32(UVec2::new(12, 6))
);
let some_random_number = rng.rand_u32(21);
let distribution = Random::<UNorm, f32>::default();
println!(
"Random unorm float: {}.",
distribution.any_value(some_random_number)
);
let some_random_number = rng.rand_u32(17);
let distribution = Random::<SNorm, Vec3>::default();
println!(
"Random snorm Vec3: {}.",
distribution.any_value(some_random_number)
);
let distribution_as_noise_function = Random::<UNorm, f32>::default();
println!(
"Random unorm float from noise function: {}.",
distribution_as_noise_function.evaluate(UVec2::new(71, 20), &mut rng)
);
let mut unorm_noise = RawNoise::<Random<SNormSplit, f32>>::default();
unorm_noise.set_seed(27);
let (sample, _current_rng_state) = unorm_noise.sample_raw(UVec2::new(71, 20)); println!("Random snorm float from noise: {}.", sample);
let _sample_for = unorm_noise.sample_for::<f32>(UVec4::new(71, 16, 17, 0));
let _or_sample: f64 = unorm_noise.sample(IVec2::new(-11, 16)); let _sample_dyn_for = unorm_noise.sample_dyn_for::<f32>(UVec4::new(71, 16, 17, 0));
let _sample_dyn: f64 = unorm_noise.sample_dyn(IVec2::new(-11, 16));
let grid = OrthoGrid::<()>::default(); let some_square = grid.partition(Vec2::new(0.5, -1.2));
println!(
"Random unorm, {}, for grid square, {}.",
unorm_noise.sample_for::<f32>(some_square.floored),
some_square.floored
);
let mut white_noise = Noise::<PerCell<OrthoGrid, Random<UNorm, f32>>>::default();
println!(
"White noise sample: {}",
white_noise.sample_for::<f32>(Vec3::new(-1.2, 1.0, 0.0))
);
white_noise.set_seed(43);
white_noise.set_period(27.0);
let dyn_noise: Box<dyn DynamicConfigurableSampleable<Vec2, f32>> = Box::new(white_noise);
println!(
"dyn noise sample: {}",
dyn_noise.sample_dyn(Vec2::new(-1.2, 1.0))
);
}