pub struct GridWorldLayer {
pub tilemap: TileMap,
/* private fields */
}Fields§
§tilemap: TileMapImplementations§
Source§impl GridWorldLayer
impl GridWorldLayer
Sourcepub fn new(tilemap: TileMap) -> Self
pub fn new(tilemap: TileMap) -> Self
Examples found in repository?
examples/pcg_island.rs (line 131)
51 fn default() -> Self {
52 let mut height = Grid::<f64>::generate(
53 SIZE.into(),
54 NoiseGenerator::new(Fbm::<SuperSimplex>::default().set_frequency(0.025)),
55 );
56 height.apply_all(RemapGenerator {
57 from: -1.0..1.0,
58 to: 0.0..1.0,
59 });
60
61 let gradient = Grid::<f64>::generate(
62 SIZE.into(),
63 |location: Vec2<usize>, size: Vec2<usize>, _| {
64 let center = size / 2;
65 let x = if location.x >= center.x {
66 location.x - center.x
67 } else {
68 center.x - location.x
69 } as f64;
70 let y = if location.y >= center.y {
71 location.y - center.y
72 } else {
73 center.y - location.y
74 } as f64;
75 let result = (x / center.x as f64).max(y / center.y as f64);
76 result * result
77 },
78 );
79 height.apply_all(SubGenerator { other: &gradient });
80
81 let mut biome = Grid::<f64>::generate(
82 SIZE.into(),
83 NoiseGenerator::new(Fbm::<SuperSimplex>::new(42).set_frequency(0.05)),
84 );
85 biome.apply_all(RemapGenerator {
86 from: -1.0..1.0,
87 to: 0.0..1.0,
88 });
89
90 let buffer = height
91 .into_inner()
92 .1
93 .into_iter()
94 .zip(biome.into_inner().1)
95 .map(|(height, biome)| {
96 if height > 0.75 {
97 SNOW
98 } else if height > 0.6 {
99 ROCK
100 } else if height > 0.1 {
101 if biome > 0.8 {
102 SAND
103 } else if biome > 0.5 {
104 GRASS
105 } else {
106 FOREST
107 }
108 } else {
109 WATER
110 }
111 })
112 .collect();
113
114 Self {
115 world: GridWorld::new(
116 10.0.into(),
117 TileSet::default()
118 .shader(ShaderRef::name("color"))
119 .mapping(WATER, TileSetItem::default().tint(Rgba::blue()))
120 .mapping(
121 FOREST,
122 TileSetItem::default().tint(Rgba::new_opaque(0.0, 0.5, 0.0)),
123 )
124 .mapping(GRASS, TileSetItem::default().tint(Rgba::green()))
125 .mapping(
126 SAND,
127 TileSetItem::default().tint(Rgba::new_opaque(1.0, 1.0, 0.5)),
128 )
129 .mapping(ROCK, TileSetItem::default().tint(Rgba::gray(0.5)))
130 .mapping(SNOW, TileSetItem::default().tint(Rgba::white())),
131 GridWorldLayer::new(TileMap::with_buffer(SIZE.into(), buffer).unwrap()),
132 ),
133 weather_tileset: TileSet::default()
134 .shader(ShaderRef::name("color"))
135 .mapping(
136 CLEAR_SKY,
137 TileSetItem::default().tint(Rgba::new(1.0, 1.0, 1.0, 0.0)),
138 )
139 .mapping(
140 CLOUD_SKY,
141 TileSetItem::default().tint(Rgba::new(1.0, 1.0, 1.0, 0.8)),
142 )
143 .mapping(
144 RAINY_SKY,
145 TileSetItem::default().tint(Rgba::new(0.3, 0.3, 0.3, 0.8)),
146 ),
147 weather_noise: Fbm::<SuperSimplex>::default().set_frequency(0.03),
148 time: 0.0,
149 mouse_position: Default::default(),
150 }
151 }pub fn new_filtered<F: GridWorldEmitterFilter + 'static>( tilemap: TileMap, filter: F, ) -> Self
pub fn access_filter<F: GridWorldEmitterFilter + 'static>( &mut self, ) -> Option<&mut F>
Auto Trait Implementations§
impl !RefUnwindSafe for GridWorldLayer
impl !Send for GridWorldLayer
impl !Sync for GridWorldLayer
impl !UnwindSafe for GridWorldLayer
impl Freeze for GridWorldLayer
impl Unpin for GridWorldLayer
impl UnsafeUnpin for GridWorldLayer
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<S, T> Duplex<S> for Twhere
T: FromSample<S> + ToSample<S>,
Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more