fix: add safe erasing in loops
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user