rework occlusion events
This commit is contained in:
+7
-48
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user