public void Update(MatchInput input)
 {
     Assert.AreEqual(PlayerInputs.Length, input.PlayerCount);
     for (int i = 0; i < input.PlayerCount; i++)
     {
         PlayerInputs[i].Update(input[i]);
     }
 }
 public void Reset(MatchInput current)
 {
     if (PlayerInputs?.Length != current.PlayerCount)
     {
         PlayerInputs = new PlayerInputContext[current.PlayerCount];
     }
     for (int i = 0; i < PlayerInputs.Length; i++)
     {
         PlayerInputs[i] = new PlayerInputContext {
             Current = current[i]
         };
     }
 }
 public void Reset(MatchInput previous, MatchInput current)
 {
     Reset(previous);
     Update(current);
 }
 public MatchInputContext(MatchInput input)
 {
     Reset(input);
     Predict();
 }
 public MatchInputContext(MatchInput input)
 {
     Reset(input);
 }