+class LagPool
+{
+ float m_pool;
+ float m_max;
+public:
+ LagPool(): m_pool(15), m_max(15)
+ {}
+ void setMax(float new_max)
+ {
+ m_max = new_max;
+ if(m_pool > new_max)
+ m_pool = new_max;
+ }
+ void add(float dtime)
+ {
+ m_pool -= dtime;
+ if(m_pool < 0)
+ m_pool = 0;
+ }
+ bool grab(float dtime)
+ {
+ if(dtime <= 0)
+ return true;
+ if(m_pool + dtime > m_max)
+ return false;
+ m_pool += dtime;
+ return true;
+ }
+};
+