A bit of optimization to keep from generating the sorted sprite list over and over. Also tried to solve the problem of tombstone covering everything but no luck.

This commit is contained in:
Zed A. Shaw 2025-08-03 23:58:59 -04:00
parent 077f0e84ea
commit 9bf6926dc3
9 changed files with 36 additions and 32 deletions

View file

@ -101,12 +101,11 @@ void Raycaster::apply_sprite_effect(shared_ptr<sf::Shader> effect, float width,
void Raycaster::sprite_casting(sf::RenderTarget &target) {
auto& lights = $level.lights->lighting();
$level.collision->distance_sorted($sprite_order, {(size_t)$pos_x, (size_t)$pos_y}, RENDER_DISTANCE);
// sort sprites from far to close
auto sprite_order = $level.collision->distance_sorted({(size_t)$pos_x, (size_t)$pos_y}, 500);
// after sorting the sprites, do the projection
for(auto& rec : sprite_order) {
for(auto& rec : $sprite_order) {
if(!$sprites.contains(rec.entity)) continue;
auto& sprite_texture = $sprites.at(rec.entity);
@ -425,6 +424,7 @@ void Raycaster::update_sprite(DinkyECS::Entity ent, components::Sprite& sprite)
void Raycaster::update_level(GameLevel level) {
$sprites.clear();
$sprite_order.clear();
$level = level;