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);
        }
    }