Struct micro_games_kit::pcg::NoiseGenerator
source · pub struct NoiseGenerator<T: NoiseFn<f64, 2>> {
pub noise: T,
pub transform: Mat4<f64>,
}Fields§
§noise: T§transform: Mat4<f64>Implementations§
source§impl<T: NoiseFn<f64, 2>> NoiseGenerator<T>
impl<T: NoiseFn<f64, 2>> NoiseGenerator<T>
sourcepub fn new(noise: T) -> Self
pub fn new(noise: T) -> Self
Examples found in repository?
examples/pcg_island.rs (line 35)
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
fn default() -> Self {
let mut height = Grid::<f64>::generate(
SIZE.into(),
NoiseGenerator::new(Fbm::<SuperSimplex>::default().set_frequency(0.025)),
);
height.apply_all(RemapGenerator {
from: -1.0..1.0,
to: 0.0..1.0,
});
let mut biome = Grid::<f64>::generate(
SIZE.into(),
NoiseGenerator::new(Fbm::<SuperSimplex>::new(42).set_frequency(0.05)),
);
biome.apply_all(RemapGenerator {
from: -1.0..1.0,
to: 0.0..1.0,
});
let buffer = height
.into_inner()
.1
.into_iter()
.zip(biome.into_inner().1)
.map(|(height, biome)| {
if height > 0.9 {
SNOW
} else if height > 0.75 {
ROCK
} else if height > 0.4 {
if biome > 0.9 {
SAND
} else if biome > 0.6 {
GRASS
} else {
FOREST
}
} else {
WATER
}
})
.collect();
Self {
world: GridWorld::new(
10.0.into(),
TileSet::default()
.shader(ShaderRef::name("color"))
.mapping(WATER, TileSetItem::default().tint(Rgba::blue()))
.mapping(
FOREST,
TileSetItem::default().tint(Rgba::new_opaque(0.0, 0.5, 0.0)),
)
.mapping(GRASS, TileSetItem::default().tint(Rgba::green()))
.mapping(
SAND,
TileSetItem::default().tint(Rgba::new_opaque(1.0, 1.0, 0.5)),
)
.mapping(ROCK, TileSetItem::default().tint(Rgba::gray(0.5)))
.mapping(SNOW, TileSetItem::default().tint(Rgba::white())),
TileMap::with_buffer(SIZE.into(), buffer).unwrap(),
),
}
}pub fn transform(self, transform: Mat4<f64>) -> Self
Trait Implementations§
Auto Trait Implementations§
impl<T> RefUnwindSafe for NoiseGenerator<T>where
T: RefUnwindSafe,
impl<T> Send for NoiseGenerator<T>where
T: Send,
impl<T> Sync for NoiseGenerator<T>where
T: Sync,
impl<T> Unpin for NoiseGenerator<T>where
T: Unpin,
impl<T> UnwindSafe for NoiseGenerator<T>where
T: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more