aboutsummaryrefslogtreecommitdiff
path: root/src/game/Object.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Object.h')
-rw-r--r--src/game/Object.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/game/Object.h b/src/game/Object.h
index bda53fd655a..c5a412c3ab7 100644
--- a/src/game/Object.h
+++ b/src/game/Object.h
@@ -711,4 +711,33 @@ class WorldObject : public Object, public WorldLocation
uint16 m_notifyflags;
uint16 m_executed_notifies;
};
+
+namespace Trinity
+{
+ template<class T>
+ void RandomResizeList(std::list<T> &_list, uint32 _size)
+ {
+ while (_list.size() > _size)
+ {
+ typename std::list<T>::iterator itr = _list.begin();
+ advance(itr, urand(0, _list.size() - 1));
+ _list.erase(itr);
+ }
+ }
+
+ // Binary predicate to sort WorldObjects based on the distance to a reference WorldObject
+ class ObjectDistanceOrderPred
+ {
+ public:
+ ObjectDistanceOrderPred(const WorldObject *pRefObj, bool ascending = true) : m_refObj(pRefObj), m_ascending(ascending) {}
+ bool operator()(const WorldObject *pLeft, const WorldObject *pRight) const
+ {
+ return m_ascending ? m_refObj->GetDistanceOrder(pLeft, pRight) : !m_refObj->GetDistanceOrder(pLeft, pRight);
+ }
+ private:
+ const WorldObject *m_refObj;
+ const bool m_ascending;
+ };
+}
+
#endif