public static void UpdateInputs() { lastState = state; UpdatePlayerInfo(); Hotkeys.instance?.Update(); Savestates.HandleSaveStates(); Savestates.routine?.Update(); HandleFrameRates(); CheckToEnable(); FrameStepping(); if (HasFlag(state, State.Enable)) { Running = true; if (HasFlag(state, State.FrameStep)) { StudioCommunicationClient.instance?.SendStateAndPlayerData(CurrentStatus, PlayerStatus, !ShouldForceState); return; } /* * if (HasFlag(state, State.Record)) { * controller.RecordPlayer(); * } */ else { bool fastForward = controller.HasFastForward; controller.AdvanceFrame(false); if (fastForward && (!controller.HasFastForward || controller.Current.ForceBreak && controller.CurrentInputFrame == controller.Current.Frames)) { nextState |= State.FrameStep; FrameLoops = 1; } if (!controller.CanPlayback || (!allowUnsafeInput && !(Engine.Scene is Level || Engine.Scene is LevelLoader || Engine.Scene is LevelExit || controller.CurrentFrame <= 1))) { DisableRun(); } } string status = controller.Current.Line + "[" + controller.ToString() + "]"; CurrentStatus = status; } /* * else if (HasFlag(state, State.Delay)) { * Level level = Engine.Scene as Level; * if (level.CanPause && Engine.FreezeTimer == 0f) * EnableRun(); * * }*/ else { Running = false; CurrentStatus = null; if (!Engine.Instance.IsActive) { UpdateVirtualInputs(); for (int i = 0; i < 4; i++) { if (MInput.GamePads[i].Attached) { MInput.GamePads[i].CurrentState = GamePad.GetState((PlayerIndex)i); } } } } StudioCommunicationClient.instance?.SendStateAndPlayerData(CurrentStatus, PlayerStatus, !ShouldForceState); }
public static void Update() { LastState = State; Hotkeys.Update(); Savestates.HandleSaveStates(); Savestates.Routine?.Update(); HandleFrameRates(); CheckToEnable(); FrameStepping(); if (HasFlag(State, State.Enable)) { bool canPlayback = Controller.CanPlayback; Running = true; if (HasFlag(State, State.FrameStep)) { StudioCommunicationClient.Instance?.SendStateAndPlayerData(CurrentStatus, PlayerStatus, !ShouldForceState); return; } /* * if (HasFlag(state, State.Record)) { * controller.RecordPlayer(); * } */ else { Controller.AdvanceFrame(); if (Controller.Break && Controller.CurrentFrame < Controller.Inputs.Count) { NextState |= State.FrameStep; FrameLoops = 1; } if (!canPlayback || (!AllowUnsafeInput && !(Engine.Scene is Level || Engine.Scene is LevelLoader || Engine.Scene is LevelExit || Controller.CurrentFrame <= 1))) { DisableRun(); } } if (canPlayback && Controller.CurrentFrame > 0) { UpdateManagerStatus(); } } else { Running = false; CurrentStatus = null; if (!Engine.Instance.IsActive) { UpdateVirtualInputs(); for (int i = 0; i < 4; i++) { if (MInput.GamePads[i].Attached) { MInput.GamePads[i].CurrentState = GamePad.GetState((PlayerIndex)i); } } } } StudioCommunicationClient.Instance?.SendStateAndPlayerData(CurrentStatus, PlayerStatus, !ShouldForceState); }