public MultiInputState LoopPlayerProcessInput(MultiInputState userInput) { // Playback if (playingLoop.HasValue) { if (loopPlaybackPosition >= loopSlots[playingLoop.Value].frameCount) { LoopStopAllRecording(); Deserialize(loopSlots[playingLoop.Value].saveState); loopPlaybackPosition = 0; } var original = userInput; userInput = loopSlots[playingLoop.Value].inputFrames[loopPlaybackPosition++]; } // Recording foreach (var loop in loopSlots) { if (loop != null && loop.IsRecording) { loop.RecordInput(userInput); } } // Send to game return(userInput); }
public MultiInputState PreviewInput(MultiInputState original) { if (playingLoop.HasValue) { var loopInput = loopPlaybackPosition >= loopSlots[playingLoop.Value].frameCount ? loopSlots[playingLoop.Value].inputFrames[0] : loopSlots[playingLoop.Value].inputFrames[loopPlaybackPosition]; return(loopInput); } return(original); }
public static MultiInputState GetPlayerInputSample() { MultiInputState output = new MultiInputState(); for (int i = 0; i < 4; i++) { if (Input.IsActive) { output[i] |= Input.KeyboardState.MapInputs(keyboardMap[i]); output[i] |= Input.GamePadState(i).MapInputs(gamePadMap); output[i] |= Input.GamePadState(i).MapInputs(gamePadMapAlt); } } return(output); }
public void Update(MultiInputState input, bool firstTimeSimulated) { frame++; Debug.Log(frame); Debug.Log(players.Length); foreach (var v in players) { if (v != null) { InputState state = input[v.mInputAssignment.GetFirstAssignedPlayerIndex()]; Debug.Log("InpuState: " + state + " " + "PlayerID" + v.mPlayerID + "CurrentFrame" + frame); v.UpdateInput(state); } } Debug.Log("AfterUpdate"); }
public void Update(MultiInputState input, bool firstTimeSimulated) { if (firstTimeSimulated) { UpdateSmoothing(); } frame++; for (int i = 0; i < players.Length; i++) { if (players[i] != null) { players[i].Update(new PlayerInput(input[i]), firstTimeSimulated); } } }
public void RecordInput(MultiInputState input) { Debug.Assert(IsRecording); // NOTE: this is _assumed_ to be compatible with how we load loops (by direct memory copy) loopWriter.Write((uint)input.Player1); loopWriter.Write((uint)input.Player2); loopWriter.Write((uint)input.Player3); loopWriter.Write((uint)input.Player4); if (inputFrames.Length == frameCount) { Array.Resize(ref inputFrames, inputFrames.Length * 2); } inputFrames[frameCount++] = input; if (frameCount >= maxLoopInputCount) { StopRecording(); } }
public virtual void Update(UpdateContext updateContext, MultiInputState currentRawInput) { frameCounter++; }