summaryrefslogtreecommitdiff
path: root/src/managers
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2023-07-20 19:26:10 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2023-07-20 19:26:10 +0200
commit6c1f4faff2602a6d834d8f641a8a39783bbb9465 (patch)
treeb7c662026ce9b584baf4a2d1d65d02464dd49d79 /src/managers
parent7940f779e9dd670157932ce17a872c14747ad490 (diff)
animationmgr: avoid looping over all avars in favor of only active ones
Diffstat (limited to 'src/managers')
-rw-r--r--src/managers/AnimationManager.cpp7
-rw-r--r--src/managers/AnimationManager.hpp3
2 files changed, 3 insertions, 7 deletions
diff --git a/src/managers/AnimationManager.cpp b/src/managers/AnimationManager.cpp
index 0973c759..2f2977c4 100644
--- a/src/managers/AnimationManager.cpp
+++ b/src/managers/AnimationManager.cpp
@@ -58,12 +58,7 @@ void CAnimationManager::tick() {
std::vector<CAnimatedVariable*> animationEndedVars;
- for (auto& av : m_lAnimatedVariables) {
-
- // first of all, check if we need to update it at all
- // TODO: this has a 100% cache miss rate, maybe move active avars to a separate vec
- if (!av->m_bIsBeingAnimated)
- continue;
+ for (auto& av : m_vActiveAnimatedVariables) {
if (av->m_eDamagePolicy == AVARDAMAGE_SHADOW && !*PSHADOWSENABLED) {
av->warp(false);
diff --git a/src/managers/AnimationManager.hpp b/src/managers/AnimationManager.hpp
index db7055c8..6d2830fd 100644
--- a/src/managers/AnimationManager.hpp
+++ b/src/managers/AnimationManager.hpp
@@ -25,7 +25,8 @@ class CAnimationManager {
std::unordered_map<std::string, CBezierCurve> getAllBeziers();
- std::list<CAnimatedVariable*> m_lAnimatedVariables;
+ std::vector<CAnimatedVariable*> m_vAnimatedVariables;
+ std::vector<CAnimatedVariable*> m_vActiveAnimatedVariables;
wl_event_source* m_pAnimationTick;