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:
parent
077f0e84ea
commit
9bf6926dc3
9 changed files with 36 additions and 32 deletions
|
@ -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;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue