pub struct GridWorld {
pub position: Vec2<f32>,
pub pivot: Vec2<f32>,
pub tile_size: Vec2<f32>,
pub tileset: TileSet,
pub visible_layers: Range<usize>,
/* private fields */
}Fields§
§position: Vec2<f32>§pivot: Vec2<f32>§tile_size: Vec2<f32>§tileset: TileSet§visible_layers: Range<usize>Implementations§
Source§impl GridWorld
impl GridWorld
Sourcepub fn new(
tile_size: Vec2<f32>,
tileset: TileSet,
terrain_layer: GridWorldLayer,
) -> Self
pub fn new( tile_size: Vec2<f32>, tileset: TileSet, terrain_layer: GridWorldLayer, ) -> Self
Examples found in repository?
examples/pcg_island.rs (lines 124-141)
70 fn default() -> Self {
71 let mut height = Grid::<f64>::generate(
72 SIZE,
73 NoiseGenerator::new(Fbm::<SuperSimplex>::default().set_frequency(0.025)),
74 );
75 height.apply_all(RemapGenerator {
76 from: -1.0..1.0,
77 to: 0.0..1.0,
78 });
79
80 let gradient =
81 Grid::<f64>::generate(SIZE, |location: Vec2<usize>, size: Vec2<usize>, _| {
82 let center = size / 2;
83 let x = location.x.abs_diff(center.x) as f64;
84 let y = location.y.abs_diff(center.y) as f64;
85 let result = (x / center.x as f64).max(y / center.y as f64);
86 result * result
87 });
88 height.apply_all(SubGenerator { other: &gradient });
89
90 let mut biome = Grid::<f64>::generate(
91 SIZE,
92 NoiseGenerator::new(Fbm::<SuperSimplex>::new(42).set_frequency(0.05)),
93 );
94 biome.apply_all(RemapGenerator {
95 from: -1.0..1.0,
96 to: 0.0..1.0,
97 });
98
99 let buffer = height
100 .into_inner()
101 .1
102 .into_iter()
103 .zip(biome.into_inner().1)
104 .map(|(height, biome)| {
105 if height > 0.75 {
106 SNOW
107 } else if height > 0.6 {
108 ROCK
109 } else if height > 0.1 {
110 if biome > 0.8 {
111 SAND
112 } else if biome > 0.5 {
113 GRASS
114 } else {
115 FOREST
116 }
117 } else {
118 WATER
119 }
120 })
121 .collect();
122
123 Self {
124 world: GridWorld::new(
125 10.0.into(),
126 TileSet::default()
127 .shader(ShaderRef::name("color"))
128 .mapping(WATER, TileSetItem::default().tint(Rgba::blue()))
129 .mapping(
130 FOREST,
131 TileSetItem::default().tint(Rgba::new_opaque(0.0, 0.5, 0.0)),
132 )
133 .mapping(GRASS, TileSetItem::default().tint(Rgba::green()))
134 .mapping(
135 SAND,
136 TileSetItem::default().tint(Rgba::new_opaque(1.0, 1.0, 0.5)),
137 )
138 .mapping(ROCK, TileSetItem::default().tint(Rgba::gray(0.5)))
139 .mapping(SNOW, TileSetItem::default().tint(Rgba::white())),
140 GridWorldLayer::new(TileMap::with_buffer(SIZE.into(), buffer).unwrap(), true),
141 ),
142 weather_tileset: TileSet::default()
143 .shader(ShaderRef::name("color"))
144 .mapping(
145 CLEAR_SKY,
146 TileSetItem::default().tint(Rgba::new(1.0, 1.0, 1.0, 0.0)),
147 )
148 .mapping(
149 CLOUD_SKY,
150 TileSetItem::default().tint(Rgba::new(1.0, 1.0, 1.0, 0.8)),
151 )
152 .mapping(
153 RAINY_SKY,
154 TileSetItem::default().tint(Rgba::new(0.3, 0.3, 0.3, 0.8)),
155 ),
156 weather_noise: Fbm::<SuperSimplex>::default().set_frequency(0.03),
157 time: 0.0,
158 mouse_position: Default::default(),
159 }
160 }pub fn from_layers( tile_size: Vec2<f32>, tileset: TileSet, terrain_layers: impl IntoIterator<Item = GridWorldLayer>, ) -> Option<Self>
pub fn with_position(self, value: Vec2<f32>) -> Self
pub fn with_pivot(self, value: Vec2<f32>) -> Self
pub fn with_visible_layers(self, value: Range<usize>) -> Self
pub fn with_layer(self, layer: GridWorldLayer) -> Self
pub fn with_visible_layer(self, layer: GridWorldLayer) -> Self
pub fn with_tile_instance(self, instance: TileInstance) -> Self
pub fn with_tile_instances( self, instances: impl IntoIterator<Item = TileInstance>, ) -> Self
pub fn with_colliders(self, grid: Grid<u8>) -> Self
pub fn with_collider(self, location: Vec2<usize>) -> Self
pub fn insert_tile_instance(&mut self, instance: TileInstance)
pub fn remove_tile_instances(&mut self, instance: &TileInstance)
pub fn remove_tile_instances_at_location(&mut self, location: Vec2<usize>)
pub fn collider(&self, location: Vec2<usize>) -> bool
pub fn set_collider(&mut self, location: Vec2<usize>, value: bool) -> u8
pub fn clear_collider(&mut self, location: Vec2<usize>)
pub fn layers(&self) -> &[GridWorldLayer]
pub fn layers_mut(&mut self) -> &mut [GridWorldLayer]
pub fn locations_iter(&self) -> impl Iterator<Item = Vec2<usize>>
pub fn world_to_local(&self, location: Vec2<f32>) -> Option<Vec2<usize>>
pub fn local_to_world(&self, location: Vec2<usize>) -> Vec2<f32>
Trait Implementations§
Source§impl Drawable for GridWorld
impl Drawable for GridWorld
fn draw( &self, context: &mut DrawContext, graphics: &mut dyn GraphicsTarget<Vertex>, )
Auto Trait Implementations§
impl !RefUnwindSafe for GridWorld
impl !Send for GridWorld
impl !Sync for GridWorld
impl !UnwindSafe for GridWorld
impl Freeze for GridWorld
impl Unpin for GridWorld
impl UnsafeUnpin for GridWorld
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<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self to use its UpperHex implementation when
Debug-formatted.Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self, then passes self.deref() into the pipe function.impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref() only in debug builds, and is erased in release
builds.