public void DoUpdate(float deltaTime)
        {
            if (!IsRunning)
            {
                return;
            }

            if (_hasRecvInputMsg)
            {
                if (_gameStartTimestampMs == -1)
                {
                    _gameStartTimestampMs = LTime.realtimeSinceStartupMS;
                }
            }

            if (_gameStartTimestampMs <= 0)
            {
                return;
            }

            _tickSinceGameStart =
                (int)((LTime.realtimeSinceStartupMS - _gameStartTimestampMs) / NetworkDefine.UPDATE_DELTATIME);
            if (_constStateService.IsVideoMode)
            {
                return;
            }

            if (__debugRockbackToTick > 0)
            {
                GetService <ICommonStateService>().IsPause = true;
                RollbackTo(__debugRockbackToTick, 0, false);
                __debugRockbackToTick = -1;
            }

            if (_commonStateService.IsPause)
            {
                return;
            }

            _cmdBuffer.DoUpdate(deltaTime);

            //client mode no network
            if (_constStateService.IsClientMode)
            {
                DoClientUpdate();
            }
            else
            {
                while (inputTick <= inputTargetTick)
                {
                    SendInputs(inputTick++);
                }

                DoNormalUpdate();
            }
        }