private void MainLoop()
        {
            long newTime = stopwatch.ElapsedTicks;

            delta             = newTime - currentTimeEntity.TotalTime.Ticks;
            currentTimeEntity = new TimeEntity(TimeSpan.FromTicks(delta), TimeSpan.FromTicks(newTime));
            RaiseUpdate(new TimedEventArgs {
                TimeEntity = currentTimeEntity
            });
            Dispatcher.CurrentDispatcher.BeginInvoke(new EmptyEventHandler(MainLoop), DispatcherPriority.ApplicationIdle, null);
        }
 public override void Update(DynamicDataDisplay.Visualization3D.MainLoops.TimeEntity timeEntity)
 {
     for (int i = 0; i < numProjectiles; i++)
     {
         if (!projectiles[i].Update(timeEntity))
         {
             projectiles[i] = new Projectile(
                 explosionParticleSystem,
                 smokeParticleSystem,
                 projectileParticleSystem,
                 GeneratePosition(),
                 (float)r.NextDouble());
         }
     }
     this.projectileParticleSystem.Update(timeEntity);
     this.explosionParticleSystem.Update(timeEntity);
     this.smokeParticleSystem.Update(timeEntity);
 }
 public TimeManager()
 {
     currentTimeEntity = new TimeEntity(TimeSpan.FromMilliseconds(0), TimeSpan.FromMilliseconds(0));
 }