fix: add safe erasing in loops

This commit is contained in:
2021-10-08 19:08:47 +02:00
parent 4fcf25b5bc
commit 81dbfed69a
2 changed files with 6 additions and 6 deletions

View File

@@ -33,11 +33,11 @@ void Mob::tick(std::uint64_t delta) {
void Mob::updateEffects(std::uint64_t delta) {
float deltaSec = (float)delta / 1000.0f;
for (auto it = m_Effects.begin(); it != m_Effects.end(); it++) {
EffectDuration& effect = *it;
for (std::size_t i = 0; i < m_Effects.size(); i++) {
EffectDuration& effect = m_Effects[i];
effect.second -= deltaSec;
if (effect.second < 0) // effect has gone
m_Effects.erase(it);
m_Effects.erase(m_Effects.begin() + i);
}
}