Engine.TimerGroup = class { constructor() { this.timerPool = new Engine.ObjectPool(Engine.SimpleTimer); this.activeTimers = []; } clear() { for(var timer of this.activeTimers) { timer.stop(); timer.onFinish = null; this.timerPool.returnObject(timer); } this.activeTimers.clear(); } addNew(time /*float*/, callback /*SimpleTimerTick*/, loop /*bool*/) { var timer = this.timerPool.getNextObject(); this.activeTimers.push(timer); timer.onStop = () => { timer.onFinish = null; this.activeTimers.remove(timer); this.timerPool.returnObject(timer); }; timer.start(time, () => { if (!loop) { timer.onFinish = null; this.activeTimers.remove(timer); this.timerPool.returnObject(timer); } if (callback != null) callback(); }, loop); return timer; } }