示例#1
0
 public void WillStep(FrameSyncEngine engine, FrameSyncGame game)
 {
     if (game.gameState == FrameSyncGameState.Running)
     {
         //Debug.LogWarning($"Debugger WillStep {game.frameNumber}");
         _watch.Start();
         _watchStarted = true;
     }
 }
示例#2
0
    public void DidStep(FrameSyncEngine engine, FrameSyncGame game)
    {
        if (_watchStarted && game.gameState == FrameSyncGameState.Running)
        {
            _watchStarted = false;
            float ms = _watch.Stop();
            SWConsole.Verbose($"Debugger DidStep {game.frameNumber} ms={ms}");
            //_watcStarted might be in wrong state
            if (game.frameNumber == 0)
            {
                return;
            }

            _debugFrame.frameNumber           = game.frameNumber;
            _debugFrame.elapsedMS             = ms;
            _debugFrame.playerFrameOnServer   = engine.PlayerFrameCountOnServer;
            _debugFrame.localServerFrameCount = engine.LocalServerFrameCount;
            _debugFrame.inputSampleInterval   = FrameSyncTime.internalInputSampleInterval * 1000;
            _debugFrame.localStepInterval     = FrameSyncTime.internalFixedDeltaTime * 1000;

            SWSystemDataFrame systemDataFrame = engine.GetSystemDataFrame(game.frameNumber);
            _debugFrame.hash = systemDataFrame.bytes.Crc32();
            SWConsole.Verbose($"Debugger DidStep frame hash={_debugFrame.hash}");

            InputFrame           inputFrame  = engine.GetInputFrame(game.frameNumber);
            FrameSyncInput       input       = _agent.frameSyncInput;
            FrameSyncInputConfig inputConfig = input.inputConfig;

            _debugFrame.inputs.Clear();

            foreach (FrameSyncPlayer player in input._Players())
            {
                _debugFrame.inputs[player.PlayerID.ToString()] = player.ExportDictionary(inputConfig, inputFrame.bytes);
            }

            _debugFrame.staticBehaviours.Clear();
            List <StaticFrameSyncBehaviour> staticFrameSyncBehaviours = new List <StaticFrameSyncBehaviour>(StaticFrameSyncBehaviourManager._behaviours.Values);

            foreach (StaticFrameSyncBehaviour behaviour in staticFrameSyncBehaviours)
            {
                _debugFrame.staticBehaviours[behaviour.FrameSyncBehaviourID.ToString()] = behaviour.ExportDictionary();
            }

            string json = JSONWriter.ToJson(_debugFrame);
            SWConsole.Verbose(json);

            if (game.type == FrameSyncGameType.Offline)
            {
                SendData(json, 1);
            }
            else
            {
                SendData(json, game.localPlayer.PlayerID);
            }
        }
    }