Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
 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");
 }
Example #5
0
        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);
                }
            }
        }
Example #6
0
        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();
            }
        }
Example #7
0
 public virtual void Update(UpdateContext updateContext, MultiInputState currentRawInput)
 {
     frameCounter++;
 }