public void TestSchedule()
        {
            var scheduler = new IActionScheduler();

            var value = 0;


            scheduler.SetCurrentTime(0);


            scheduler.SetTimeout(2, () => value = 5);
            scheduler.SetTimeout(3, () => value = 3);
            scheduler.SetTimeout(6, () => value++);
            scheduler.SetTimeout(6, () => value++);
            scheduler.SetTimeout(8, () =>
            {
                value = 10;
                scheduler.SetTimeout(1, () => value++);
            });


            scheduler.ExecuteActions(1);
            Assert.AreEqual(0, value);

            scheduler.ExecuteActions(1.5f);
            Assert.AreEqual(0, value);

            scheduler.ExecuteActions(2);
            Assert.AreEqual(5, value);

            scheduler.ExecuteActions(3);
            Assert.AreEqual(3, value);

            scheduler.ExecuteActions(4);
            Assert.AreEqual(3, value);

            scheduler.ExecuteActions(6);
            Assert.AreEqual(5, value);

            scheduler.ExecuteActions(6.5f);
            Assert.AreEqual(5, value);

            scheduler.ExecuteActions(8);
            Assert.AreEqual(10, value);

            scheduler.ExecuteActions(8.5f);
            Assert.AreEqual(10, value);

            scheduler.ExecuteActions(9);
            Assert.AreEqual(11, value);
        }
        private void update()
        {
            particleEffects.ForEach(e => e.Update(TW.Graphics.Elapsed));
            updateObservers.ForEach(a => a(TW.Graphics.Elapsed));
            scheduler.ExecuteActions(TW.Graphics.TotalRunTime);

            particleBoxRenderer.RenderEffects(particleEffects);
        }