diff --git a/regamedll/dlls/addons/point_command.cpp b/regamedll/dlls/addons/point_command.cpp index 7f228fa8..42c3e483 100644 --- a/regamedll/dlls/addons/point_command.cpp +++ b/regamedll/dlls/addons/point_command.cpp @@ -150,5 +150,5 @@ void CPointBaseCommand::OnDestroy() } } - m_vecCommands.RemoveAll(); + m_vecCommands.Purge(); } diff --git a/regamedll/dlls/triggers.cpp b/regamedll/dlls/triggers.cpp index 77e53b16..133818e1 100644 --- a/regamedll/dlls/triggers.cpp +++ b/regamedll/dlls/triggers.cpp @@ -373,7 +373,7 @@ void CRenderFxManager::Spawn() void CRenderFxManager::OnDestroy() { - m_RenderGroups.RemoveAll(); + m_RenderGroups.Purge(); } void CRenderFxManager::Restart() @@ -1837,7 +1837,7 @@ bool CBombTarget::IsPlayerInBombSite(CBasePlayer *pPlayer) { const Vector &absmin = pPlayer->pev->absmin; const Vector &absmax = pPlayer->pev->absmax; - + // Ensure that player's body is inside func_bomb_target's X,Y axes. if (pev->absmin.x > absmin.x || pev->absmin.y > absmin.y) { @@ -1847,7 +1847,7 @@ bool CBombTarget::IsPlayerInBombSite(CBasePlayer *pPlayer) { return false; } - + return true; } diff --git a/regamedll/public/utlrbtree.h b/regamedll/public/utlrbtree.h index ea2b9e9a..bc333c8e 100644 --- a/regamedll/public/utlrbtree.h +++ b/regamedll/public/utlrbtree.h @@ -148,6 +148,7 @@ public: void RemoveAt(I i); bool Remove(T const &remove); void RemoveAll(); + void Purge(); // Allocation, deletion void FreeNode(I i); @@ -848,6 +849,15 @@ void CUtlRBTree::RemoveAll() m_NumElements = 0; } +template +void CUtlRBTree::Purge() +{ + RemoveAll(); + m_FirstFree = InvalidIndex(); + m_TotalElements = 0; + m_Elements.Purge(); +} + // Iteration template I CUtlRBTree::FirstInorder() const