/// <summary>
        ///     Allows the game to run logic such as updating the world,
        ///     checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Update(GameTime gameTime)
        {
            if (mUpdater != null)
            {
                if (mUpdater.CheckUpdaterContentLoaded())
                {
                    LoadUpdaterContent();
                }

                if (mUpdater.Status == UpdateStatus.Done || mUpdater.Status == UpdateStatus.None)
                {
                    if (updaterGraphicsReset == true)
                    {
                        //Drew a frame, now let's initialize the engine
                        IntersectInit();
                        mUpdater = null;
                    }
                }
                else if (mUpdater.Status == UpdateStatus.Restart)
                {
                    //Auto relaunch on Windows
                    switch (Environment.OSVersion.Platform)
                    {
                    case PlatformID.Win32NT:
                    case PlatformID.Win32S:
                    case PlatformID.Win32Windows:
                    case PlatformID.WinCE:
                        Process.Start(
                            Environment.GetCommandLineArgs()[0],
                            Environment.GetCommandLineArgs().Length > 1
                                    ? string.Join(" ", Environment.GetCommandLineArgs().Skip(1))
                                    : null
                            );
                        Exit();
                        break;
                    }
                }
            }

            if (mUpdater == null)
            {
                if (!mInitialized)
                {
                    IntersectInit();
                }
                if (Globals.IsRunning)
                {
                    if (mLastUpdateTime < gameTime.TotalGameTime.TotalMilliseconds)
                    {
                        lock (Globals.GameLock)
                        {
                            Main.Update();
                        }
                        ///mLastUpdateTime = gameTime.TotalGameTime.TotalMilliseconds + (1000/60f);
                    }
                }
                else
                {
                    Exit();
                }
            }

            base.Update(gameTime);
        }