diff options
author | Thorbjørn Lindeijer <bjorn@lindeijer.nl> | 2024-10-11 15:35:15 +0200 |
---|---|---|
committer | Thorbjørn Lindeijer <bjorn@lindeijer.nl> | 2025-05-08 14:03:08 +0000 |
commit | da60ed7ed07c2b96f3231a0476014dbbf186843e (patch) | |
tree | 17882266cd1abdc64dc78bc7b7724767dc314312 /src/map.h | |
parent | 3f630c76de06a0cbda163342b5ae0bf166aaad9f (diff) | |
download | mana-optimize-actor-draw.tar.gz mana-optimize-actor-draw.tar.bz2 mana-optimize-actor-draw.tar.xz mana-optimize-actor-draw.zip |
Only sort and render visible actorsoptimize-actor-draw
Speeds up rendering a lot in case of many offscreen actors, for example
when a heavy particle effect is running somewhere.
Diffstat (limited to 'src/map.h')
-rw-r--r-- | src/map.h | 14 |
1 files changed, 13 insertions, 1 deletions
@@ -74,6 +74,15 @@ class TileAnimation }; /** + * Small struct to reference visible actors and their draw order. + */ +struct FringeActor +{ + int drawOrder; + Actor *actor; +}; + +/** * A map layer. Stores a grid of tiles and their offset, and implements layer * rendering. */ @@ -120,7 +129,7 @@ class MapLayer int startX, int startY, int endX, int endY, int scrollX, int scrollY, - const Actors &actors, + const std::vector<FringeActor> &actors, int debugFlags) const; bool isFringeLayer() const @@ -418,5 +427,8 @@ class Map : public Properties std::map<int, TileAnimation> mTileAnimations; + // Array of visible actors, reused to reduce allocations + std::vector<FringeActor> mVisibleActors; + int mMask = 1; }; |