fix drawing mirror
This commit is contained in:
parent
e03cd06c78
commit
9c8a399b38
1 changed files with 20 additions and 4 deletions
|
@ -403,9 +403,7 @@ fn world_to_chunk_and_local_coords(world_coords: IVec2) -> (IVec2, UVec2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Overworld {
|
impl Overworld {
|
||||||
/// Return a [`Tile`] at the given world coordinates, or `None` if that tile has not
|
fn get_tile(&self, world_coords: IVec2) -> Option<&Tile> {
|
||||||
/// been generated yet.
|
|
||||||
pub fn get_tile(&self, world_coords: IVec2) -> Option<&Tile> {
|
|
||||||
let (chunk_coords, local_chunk_coords) =
|
let (chunk_coords, local_chunk_coords) =
|
||||||
world_to_chunk_and_local_coords(world_coords);
|
world_to_chunk_and_local_coords(world_coords);
|
||||||
|
|
||||||
|
@ -413,7 +411,15 @@ impl Overworld {
|
||||||
chunk.get_tile(local_chunk_coords)
|
chunk.get_tile(local_chunk_coords)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Return a [`Tile`] at the given world coordinates, or `None` if that tile has not
|
||||||
|
/// been generated yet. use engine/world cordinates.
|
||||||
pub fn get_or_generate_tile(&mut self, world_coords: IVec2) -> &Tile {
|
pub fn get_or_generate_tile(&mut self, world_coords: IVec2) -> &Tile {
|
||||||
|
let mut coords = world_coords;
|
||||||
|
coords.y *= -1;
|
||||||
|
self.get_or_generate_tiles_private(coords)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_or_generate_tiles_private(&mut self, world_coords: IVec2) -> &Tile {
|
||||||
let (chunk_coords, local_chunk_coords) =
|
let (chunk_coords, local_chunk_coords) =
|
||||||
world_to_chunk_and_local_coords(world_coords);
|
world_to_chunk_and_local_coords(world_coords);
|
||||||
|
|
||||||
|
@ -424,8 +430,18 @@ impl Overworld {
|
||||||
chunk.get_tile(local_chunk_coords).unwrap()
|
chunk.get_tile(local_chunk_coords).unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// iterate over all tiles and its global coords
|
/// Iterate over all generated tiles and its engine/world cordinates. using a [`Tile`] at the given world coordinates, or `None` if that tile has not
|
||||||
|
/// been generated yet.
|
||||||
pub fn iter_tiles(&self) -> impl Iterator<Item = (IVec2, &Tile)> {
|
pub fn iter_tiles(&self) -> impl Iterator<Item = (IVec2, &Tile)> {
|
||||||
|
self.iter_tilese_private().map(|(coords, tile)| {
|
||||||
|
let mut w_coords = coords;
|
||||||
|
w_coords.y *= -1;
|
||||||
|
(w_coords, tile)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/// iterate over all tiles and its global coords
|
||||||
|
fn iter_tilese_private(&self) -> impl Iterator<Item = (IVec2, &Tile)> {
|
||||||
self.chunks.iter().flat_map(|(chunk_coords, chunk)| {
|
self.chunks.iter().flat_map(|(chunk_coords, chunk)| {
|
||||||
chunk.iter_tiles().map(|(local_coords, tile)| {
|
chunk.iter_tiles().map(|(local_coords, tile)| {
|
||||||
// never fail because chunksize fits alswas into i32
|
// never fail because chunksize fits alswas into i32
|
||||||
|
|
Loading…
Reference in a new issue