fake fog, better parallelisation
This commit is contained in:
+13
-7
@@ -1,3 +1,5 @@
|
||||
use std::time::Instant;
|
||||
|
||||
use crate::constants::{ITILE_SIZE, TILE_SIZE};
|
||||
use crate::tile::{FixtureTile, FloorTile, NeedsOccluded, TileMap};
|
||||
use crate::tiles::{
|
||||
@@ -9,7 +11,7 @@ use noise::{NoiseFn, Perlin};
|
||||
|
||||
pub const CHUNK_SIZE: i32 = 8;
|
||||
|
||||
pub const Z_BELOW: f32 = 10.0;
|
||||
pub const Z_BELOW: f32 = 3.0;
|
||||
pub const Z_ABOVE: f32 = 5.0;
|
||||
pub const Z_TOTAL: f32 = Z_ABOVE + Z_BELOW; // MAX 255 DO NOT EXCEED
|
||||
|
||||
@@ -46,7 +48,7 @@ pub fn handle_tile_occlusion_updates(
|
||||
)>,
|
||||
mut cwss: ResMut<CurrentWorldSpriteState>,
|
||||
) {
|
||||
println!("updating tile occlusion");
|
||||
let start = Instant::now();
|
||||
query_set
|
||||
.p0()
|
||||
.par_iter_mut()
|
||||
@@ -77,6 +79,7 @@ pub fn handle_tile_occlusion_updates(
|
||||
}
|
||||
}
|
||||
cwss.state = TerrainSpriteState::WaitingForRender;
|
||||
println!("Tile occlusion updated in {:.2?}", start.elapsed());
|
||||
}
|
||||
|
||||
pub fn calculate_visibility(pos: IVec3, tilemap: &TileMap) -> [u32; 8] {
|
||||
@@ -159,10 +162,11 @@ fn generate_chunks_from_algo(
|
||||
mut chunk_map: ResMut<ChunkMap>,
|
||||
mut tilemap: ResMut<TileMap>,
|
||||
) {
|
||||
let cave_noise = Perlin::new(0);
|
||||
let is_empty = events.is_empty();
|
||||
let start = Instant::now();
|
||||
|
||||
let cave_noise = Perlin::new(0);
|
||||
for event in events.read() {
|
||||
println!("Loading chunk {}", event.chunk_position);
|
||||
let chunk_pos = event.chunk_position;
|
||||
if chunk_map.loaded_chunks.contains_key(&chunk_pos) {
|
||||
continue;
|
||||
@@ -273,12 +277,14 @@ fn generate_chunks_from_algo(
|
||||
}
|
||||
}
|
||||
}
|
||||
if !is_empty {
|
||||
println!("Chunks loaded in {:.2?}", start.elapsed());
|
||||
}
|
||||
}
|
||||
|
||||
fn setup_initial_chunks(mut event_writer: EventWriter<LoadChunkEvent>) {
|
||||
println!("setup_initial_chunks");
|
||||
for x in -3..=3 {
|
||||
for y in -2..=2 {
|
||||
for x in -10..=10 {
|
||||
for y in -10..=10 {
|
||||
event_writer.write(LoadChunkEvent {
|
||||
chunk_position: IVec2::new(x, y),
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user