protected virtual void SendNetworkPackage() { int count = this.inputBuffer.Count; FrameInput[] buffer = new FrameInput[count]; for (int i = 0; i < count; ++i) { float horizontalAxis = 0f; float horizontalAxisRaw = 0f; float verticalAxis = 0f; float verticalAxisRaw = 0f; NetworkButtonPress buttons = NetworkButtonPress.None; foreach (KeyValuePair <InputReferences, InputEvents> pair in this.inputBuffer[i]) { InputReferences inputReference = pair.Key; InputEvents inputEvent = pair.Value; if (inputReference.inputType == InputType.HorizontalAxis) { horizontalAxis = inputEvent.axis; horizontalAxisRaw = inputEvent.axisRaw; } else if (inputReference.inputType == InputType.VerticalAxis) { verticalAxis = inputEvent.axis; verticalAxisRaw = inputEvent.axisRaw; } else if (inputReference.inputType == InputType.Button && inputEvent.button) { buttons |= inputReference.engineRelatedButton.ToNetworkButtonPress(); } } buffer[i] = new FrameInput( horizontalAxis, horizontalAxisRaw, verticalAxis, verticalAxisRaw, buttons, this.optionSelections[i] == null ? -2 : this.optionSelections[i].Value ); } InputBufferMessage msg = new InputBufferMessage(this.player, this.currentFrame, buffer); if (UFE.config.networkOptions.fakeNetwork) { RemotePlayerController remoteController = UFE.GetController(UFE.GetRemotePlayer()) as RemotePlayerController; remoteController.OnMessageReceived(msg.Serialize(), new NetworkMessageInfo()); } else { UFE.multiplayerAPI.SendNetworkMessage(msg); } }