public void Update()
    {
        eGameEventMode oldEventPlaybackMode = EventPlaybackMode;

        // Play the next game event
        if (EventPlaybackMode == eGameEventMode.playing && !IsWaitingForEventCompletion)
        {
            if (!IsEventCursorAtLastEvent)
            {
                IsWaitingForEventCompletion = true;

                CurrentGame.AdvanceEventCursor(
                    m_gameWorldController,
                    () =>
                {
                    IsWaitingForEventCompletion = false;
                });
            }
            else
            {
                EventPlaybackMode = eGameEventMode.paused;
            }
        }

        if (oldEventPlaybackMode != EventPlaybackMode)
        {
            m_gameWorldController.OnEventPlaybackModeChanged();
        }

        // Update all active entities
        //if (EventPlaybackMode != eGameEventMode.paused)
        {
            foreach (CharacterEntity characterEntity in m_characterEntities.Values)
            {
                characterEntity.Update();
            }

            foreach (MobEntity mobEntity in m_mobEntities.Values)
            {
                mobEntity.Update();
            }

            foreach (EnergyTankEntity energyTankEntity in m_energyTankEntities.Values)
            {
                energyTankEntity.Update();
            }
        }
    }
 public bool AdvanceCurrentEvent(GameWorldController gameWorldController)
 {
     // null complete callback tells the event to immediately jump to the result
     return(CurrentGame.AdvanceEventCursor(gameWorldController, null));
 }