rework occlusion events

This commit is contained in:
2025-05-23 14:01:28 +01:00
parent a245f35332
commit ac033de136
5 changed files with 107 additions and 128 deletions
+7 -48
View File
@@ -1,5 +1,4 @@
use crate::tile::{FixtureTile, FloorTile, NeedsOccluded, TileState};
use crate::tilemap::Z_BELOW;
use crate::tile::{FixtureTile, FloorTile, TileState};
use crate::{constants::*, tilemap};
use bevy::asset::RenderAssetUsages;
use bevy::prelude::*;
@@ -120,12 +119,12 @@ impl Default for QuiltCache {
// here be dragons :(
pub fn build_quilted_terrain_sprites(
query: Query<(&FloorTile, &Transform)>,
query_tiles: Query<(&FloorTile, &Transform)>,
commands: ParallelCommands<'_, '_>,
mut cwss: ResMut<CurrentWorldSpriteState>,
textures: Res<Textures>,
texture_ids: Res<TextureIDs>,
query_sprites: Query<Entity, With<TerrainSprite>>,
query_terrain_sprites: Query<Entity, With<TerrainSprite>>,
mut images: ResMut<Assets<Image>>,
mut quilt_cache: ResMut<QuiltCache>,
) {
@@ -136,7 +135,7 @@ pub fn build_quilted_terrain_sprites(
cwss.state = TerrainSpriteState::InProgress;
// Despawn existing terrain sprites
let despawn_entities: Vec<Entity> = query_sprites.iter().collect();
let despawn_entities: Vec<Entity> = query_terrain_sprites.iter().collect();
for entity in despawn_entities {
commands.command_scope(|mut cmd| {
cmd.entity(entity).despawn();
@@ -147,7 +146,7 @@ pub fn build_quilted_terrain_sprites(
let mut tiles_by_z: HashMap<usize, Vec<(Vec2, &FloorTile)>> = HashMap::new();
// Calculate bounds for all visible tiles
for (floortile, transform) in query.iter() {
for (floortile, transform) in query_tiles.iter() {
let position = Vec2::new(transform.translation.x, transform.translation.y);
for z_index in 0..=tilemap::Z_TOTAL as usize {
@@ -410,7 +409,6 @@ pub struct FloorTilePrefab {
tile: FloorTile,
tile_state: TileState,
visibility: Visibility,
needs_occluded: NeedsOccluded,
}
impl FloorTilePrefab {
@@ -426,9 +424,6 @@ impl FloorTilePrefab {
timer: Timer::from_seconds(1.0, TimerMode::Repeating),
},
visibility: Visibility::Hidden,
needs_occluded: NeedsOccluded {
has_been_occluded: false,
},
}
}
@@ -444,9 +439,6 @@ impl FloorTilePrefab {
timer: Timer::from_seconds(1.0, TimerMode::Repeating),
},
visibility: Visibility::Hidden,
needs_occluded: NeedsOccluded {
has_been_occluded: false,
},
}
}
@@ -462,9 +454,6 @@ impl FloorTilePrefab {
timer: Timer::from_seconds(1.0, TimerMode::Repeating),
},
visibility: Visibility::Hidden,
needs_occluded: NeedsOccluded {
has_been_occluded: false,
},
}
}
@@ -481,9 +470,6 @@ impl FloorTilePrefab {
timer: Timer::from_seconds(1.0, TimerMode::Repeating),
},
visibility: Visibility::Hidden,
needs_occluded: NeedsOccluded {
has_been_occluded: false,
},
}
}
@@ -499,20 +485,11 @@ impl FloorTilePrefab {
timer: Timer::from_seconds(1.0, TimerMode::Repeating),
},
visibility: Visibility::Hidden,
needs_occluded: NeedsOccluded {
has_been_occluded: false,
},
}
}
pub fn spawn(self, commands: &mut Commands) {
commands.spawn((
self.tile,
self.transform,
self.tile_state,
self.visibility,
self.needs_occluded,
));
commands.spawn((self.tile, self.transform, self.tile_state, self.visibility));
}
}
@@ -521,7 +498,6 @@ pub struct FixtureTilePrefab {
transform: Transform,
tile: FixtureTile,
visibility: Visibility,
needs_occluded: NeedsOccluded,
}
impl FixtureTilePrefab {
@@ -533,9 +509,6 @@ impl FixtureTilePrefab {
..Default::default()
},
visibility: Visibility::Hidden,
needs_occluded: NeedsOccluded {
has_been_occluded: false,
},
}
}
@@ -547,9 +520,6 @@ impl FixtureTilePrefab {
..Default::default()
},
visibility: Visibility::Hidden,
needs_occluded: NeedsOccluded {
has_been_occluded: false,
},
}
}
@@ -561,9 +531,6 @@ impl FixtureTilePrefab {
..Default::default()
},
visibility: Visibility::Hidden,
needs_occluded: NeedsOccluded {
has_been_occluded: false,
},
}
}
@@ -575,20 +542,12 @@ impl FixtureTilePrefab {
..Default::default()
},
visibility: Visibility::Hidden,
needs_occluded: NeedsOccluded {
has_been_occluded: false,
},
}
}
pub fn spawn(self, commands: &mut Commands) -> Entity {
commands
.spawn((
self.tile,
self.transform,
self.visibility,
self.needs_occluded,
))
.spawn((self.tile, self.transform, self.visibility))
.id()
}
}