Exemple #1
0
 public void LogMouseClick(DateTime time, String mouseInput, MouseInputType inputType, int x, int y)
 {
     sw.Write(this.GetTime(time) + "\t" + inputType.ToString() + " " + mouseInput + "\t" + x.ToString() + "\t" + y.ToString() + "\r\n");
 }
Exemple #2
0
        public float AxisCheck(InputDeviceSlot slot)
        {
            //keyboard checks
            if (inputType == InputDeviceType.Keyboard)
            {
                if (slot == InputDeviceSlot.any || slot == InputDeviceSlot.keyboard || slot == InputDeviceSlot.keyboardAndMouse)
                {
                    if (Input.GetKey(keyboardKeyCode))
                    {
                        return(1f);
                    }
                }

                return(0f);
            }

            //gamepad button and axis checks
            if (inputType == InputDeviceType.GamepadButton || inputType == InputDeviceType.GamepadAxis)
            {
                if (slot == InputDeviceSlot.keyboard || slot == InputDeviceSlot.mouse || slot == InputDeviceSlot.keyboardAndMouse)
                {
                    return(0f);
                }

                //if checking any slot, call this function for each possible slot
                if (slot == InputDeviceSlot.any)
                {
                    float greatestV = 0f;
                    for (int i = 1; i <= Sinput.gamepads.Length; i++)
                    {
                        greatestV = Mathf.Max(greatestV, Mathf.Abs(AxisCheck((InputDeviceSlot)i)));
                    }
                    return(greatestV);
                }

                int slotIndex = ((int)slot) - 1;



                //don't check slots without a connected gamepad
                if (Sinput.gamepads.Length <= slotIndex)
                {
                    return(0f);
                }

                //make sure the gamepad in this slot is one this input is allowed to check (eg don't check PS4 pad bindings for an XBOX pad)
                bool allowInputFromThisPad = false;
                for (int i = 0; i < allowedSlots.Length; i++)
                {
                    if (slotIndex == allowedSlots[i])
                    {
                        allowInputFromThisPad = true;
                    }
                }

                if (!allowInputFromThisPad)
                {
                    return(0f);
                }

                //button as axis checks
                if (inputType == InputDeviceType.GamepadButton)
                {
                    string buttonString = string.Format("Joystick{0}Button{1}", (slotIndex + 1), gamepadButtonNumber);
                    if (string.IsNullOrEmpty(buttonString))
                    {
                        return(0f);
                    }
                    UnityGamepadKeyCode keyCode = (UnityGamepadKeyCode)System.Enum.Parse(typeof(UnityGamepadKeyCode), buttonString);

                    //button check now
                    if (Input.GetKey((KeyCode)(int)keyCode))
                    {
                        return(1f);
                    }
                }

                //gamepad axis check
                if (inputType == InputDeviceType.GamepadAxis)
                {
                    string axisString = string.Format("J_{0}_{1}", (slotIndex + 1), gamepadAxisNumber);
                    float  axisValue  = Input.GetAxisRaw(axisString);
                    if (invertAxis)
                    {
                        axisValue *= -1f;
                    }
                    if (rescaleAxis)
                    {
                        //some gamepad axis are -1 to 1 or something when you want them as 0 to 1, EG; triggers on XBONE pad on OSX
                        axisValue = Mathf.InverseLerp(rescaleAxisMin, rescaleAxisMax, axisValue);
                    }

                    if (clampAxis)
                    {
                        axisValue = Mathf.Clamp01(axisValue);
                    }

                    //we return every axis' default value unless we measure a change first
                    //this prevents weird snapping and false button presses if the pad is reporting a weird value to start with
                    if (useDefaultAxisValue)
                    {
                        if (measuredAxisValue != -54.321f)
                        {
                            if (axisValue != measuredAxisValue)
                            {
                                useDefaultAxisValue = false;
                            }
                        }
                        else
                        {
                            measuredAxisValue = axisValue;
                        }
                        if (useDefaultAxisValue)
                        {
                            axisValue = defaultAxisValue;
                        }
                    }

                    return(axisValue);
                }

                return(0f);
            }


            //virtual device axis input checks
            if (inputType == InputDeviceType.Virtual)
            {
                if (slot == InputDeviceSlot.any || slot == InputDeviceSlot.virtual1)
                {
                    return(VirtualInputs.GetVirtualAxis(virtualInputID));
                }
                //return virtualAxisValue;
            }

            //mouseaxis button checks (these don't happen)
            if (inputType == InputDeviceType.Mouse)
            {
                if (slot != InputDeviceSlot.any && slot != InputDeviceSlot.mouse && slot != InputDeviceSlot.keyboardAndMouse)
                {
                    return(0f);
                }

                switch (mouseInputType)
                {
                case MouseInputType.MouseHorizontal:
                    return(Input.GetAxisRaw("Mouse Horizontal") * Sinput.mouseSensitivity);

                case MouseInputType.MouseMoveLeft:
                    return(Mathf.Min(Input.GetAxisRaw("Mouse Horizontal") * Sinput.mouseSensitivity, 0f) * -1f);

                case MouseInputType.MouseMoveRight:
                    return(Mathf.Max(Input.GetAxisRaw("Mouse Horizontal") * Sinput.mouseSensitivity, 0f));

                case MouseInputType.MouseMoveUp:
                    return(Mathf.Max(Input.GetAxisRaw("Mouse Vertical") * Sinput.mouseSensitivity, 0f));

                case MouseInputType.MouseMoveDown:
                    return(Mathf.Min(Input.GetAxisRaw("Mouse Vertical") * Sinput.mouseSensitivity, 0f) * -1f);

                case MouseInputType.MouseVertical:
                    return(Input.GetAxisRaw("Mouse Vertical") * Sinput.mouseSensitivity);

                case MouseInputType.MouseScroll:
                    return(Input.GetAxisRaw("Mouse Scroll"));

                case MouseInputType.MouseScrollUp:
                    return(Mathf.Max(Input.GetAxisRaw("Mouse Scroll"), 0f));

                case MouseInputType.MouseScrollDown:
                    return(Mathf.Min(Input.GetAxisRaw("Mouse Scroll"), 0f) * -1f);

                case MouseInputType.MousePositionX:
                    return(Input.mousePosition.x);

                case MouseInputType.MousePositionY:
                    return(Input.mousePosition.y);

                default:
                    //it's a click type mouse input
                    if (Input.GetKey((KeyCode)(System.Enum.Parse(typeof(KeyCode), mouseInputType.ToString()))))
                    {
                        return(1f);
                    }
                    break;
                }
                //return Input.GetAxisRaw(mouseAxis);
            }

            return(0f);
        }