fake fog, better parallelisation

This commit is contained in:
2025-05-07 20:13:29 +01:00
parent 6f4de57f1b
commit e3ea662668
5 changed files with 170 additions and 116 deletions
+13 -7
View File
@@ -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),
});