Beispiel #1
0
        // Maybe deadzones for triggers should be established...

        public float GetAxisRaw(JoystickAxis axis)
        {
            if (!IsConnected)
            {
                return(0.0f);
            }
            switch (axis)
            {
            case JoystickAxis.LSX:
                return(GetLSXRaw());

            case JoystickAxis.LSY:
                return(GetLSYRaw());

            case JoystickAxis.RSX:
                return(GetRSXRaw());

            case JoystickAxis.RSY:
                return(GetRSYRaw());

            case JoystickAxis.DPADX:
            case JoystickAxis.DPADY:
            case JoystickAxis.LT:
            case JoystickAxis.RT:
                return(GetAxis(axis));
            }
            Debug.LogError("How did you manage to print this?");
            return(0);
        }
Beispiel #2
0
        private static OpenTK.Input.JoystickAxis GetOpenTKJoystickAxis(JoystickAxis axis)
        {
            switch (axis)
            {
            case JoystickAxis.Axis0: return(OpenTK.Input.JoystickAxis.Axis0);

            case JoystickAxis.Axis1: return(OpenTK.Input.JoystickAxis.Axis1);

            case JoystickAxis.Axis2: return(OpenTK.Input.JoystickAxis.Axis2);

            case JoystickAxis.Axis3: return(OpenTK.Input.JoystickAxis.Axis3);

            case JoystickAxis.Axis4: return(OpenTK.Input.JoystickAxis.Axis4);

            case JoystickAxis.Axis5: return(OpenTK.Input.JoystickAxis.Axis5);

            case JoystickAxis.Axis6: return(OpenTK.Input.JoystickAxis.Axis6);

            case JoystickAxis.Axis7: return(OpenTK.Input.JoystickAxis.Axis7);

            case JoystickAxis.Axis8: return(OpenTK.Input.JoystickAxis.Axis8);

            case JoystickAxis.Axis9: return(OpenTK.Input.JoystickAxis.Axis9);

            case JoystickAxis.Axis10: return(OpenTK.Input.JoystickAxis.Axis10);

            case JoystickAxis.Axis11: return(OpenTK.Input.JoystickAxis.Last);           // OpenTK only has 11 axes, not 12
            }

            return(OpenTK.Input.JoystickAxis.Last);
        }
 public float getAxis(JoystickAxis axis)
 {
     if (axis == JoystickAxis.DPAD_X && this.isMac)
     {
         if (getButton(JoystickButton.DPAD_LEFT))
         {
             return(-1.0f);
         }
         else if (getButton(JoystickButton.DPAD_RIGHT))
         {
             return(1.0f);
         }
     }
     else if (axis == JoystickAxis.DPAD_Y && this.isMac)
     {
         if (getButton(JoystickButton.DPAD_UP))
         {
             return(-1.0f);
         }
         else if (getButton(JoystickButton.DPAD_DOWN))
         {
             return(1.0f);
         }
     }
     return(Input.GetAxis(this.getAxisName(axis)));
 }
Beispiel #4
0
 internal void SetAxis(JoystickAxis axis, float value)
 {
     this.move_args.Axis        = axis;
     this.move_args.Delta       = this.move_args.Value - value;
     this.axis_collection[axis] = this.move_args.Value = value;
     this.Move((object)this, this.move_args);
 }
Beispiel #5
0
        /// <summary>
        /// Returns the value of the joystick axis from the joystick module if it is valid
        /// </summary>
        /// <param name="_axis">The axis to get the input from, H = x; V = y</param>
        /// <returns></returns>
        public static float GetJoystickAxis(JoystickAxis _axis)
        {
            //If the mobile input isn't initialised, throw InvalidOperationException
            if (!Initialised)
            {
                throw new InvalidOperationException("Mobile Input is not initialised!");
            }

            //James proofing so no one goofs super dumb
            //If joystick module isn't set throw NullReferenceException
            if (instance.joystickInput == null)
            {
                throw new NullReferenceException("Joystick Input not set!");
            }

            //Switch on the passed axis and return the appropriate value - (hotkey for switch: tab twice, fill in the parameter and press enter twice)
            switch (_axis)
            {
            case JoystickAxis.Horizontal:
                return(instance.joystickInput.Axis.x);

            case JoystickAxis.Vertical:
                return(instance.joystickInput.Axis.y);

            default: return(0);
            }
        }
        public float GetAxis(JoystickAxis axis)
        {
            switch (axis)
            {
            case JoystickAxis.HORIZONTAL:
                return(Input.GetAxis(horizontal));

            case JoystickAxis.VERTICAL:
                return(Input.GetAxis(vertical));

            case JoystickAxis.THUMB_HORIZOINTAL:
                return(Input.GetAxis(thumbHorizontal));

            case JoystickAxis.THUMB_VERTICAL:
                return(Input.GetAxis(thumbVertical));

            case JoystickAxis.TRIGGER:
                return(Input.GetAxis(trigger));

            case JoystickAxis.DPAD_X:
                return(Input.GetAxis(dpadX));

            case JoystickAxis.DPAD_Y:
                return(Input.GetAxis(dpadY));

            default:
                return(0f);
            }
        }
Beispiel #7
0
 internal void SetAxis(JoystickAxis axis, float @value)
 {
     move_args.Axis        = axis;
     move_args.Delta       = move_args.Value - @value;
     axis_collection[axis] = move_args.Value = @value;
     Move(this, move_args);
 }
Beispiel #8
0
        public void Poll()
        {
            for (int i = 0; i < 4; i++)
            {
                JoystickCapabilities caps = Joystick.GetCapabilities(i);
                if (caps.IsConnected && joysticks[i].Description == DisconnectedName)
                {
                    // New joystick connected
                    joysticks[i] = new LegacyJoystickDevice(i, caps.AxisCount, caps.ButtonCount);
                    //device.Description = Joystick.GetName(i);
                    joysticks[i].Description = ConnectedName;
                }
                else if (!caps.IsConnected && joysticks[i].Description != DisconnectedName)
                {
                    // Joystick disconnected
                    joysticks[i]             = new LegacyJoystickDevice(i, 0, 0);
                    joysticks[i].Description = DisconnectedName;
                }

                JoystickState state = Joystick.GetState(i);
                for (int axis_index = 0; axis_index < (int)caps.AxisCount; axis_index++)
                {
                    JoystickAxis axis = JoystickAxis.Axis0 + axis_index;
                    joysticks[i].SetAxis(axis, state.GetAxis(axis));
                }
                for (int button_index = 0; button_index < (int)caps.ButtonCount; button_index++)
                {
                    JoystickButton button = JoystickButton.Button0 + button_index;
                    joysticks[i].SetButton(button, state.GetButton(button) == ButtonState.Pressed);
                }
            }
        }
 public int GetAxisMultiplier(JoystickAxis g_axis)
 {
     if (myAxisMultiplierDictionary == null || !myAxisMultiplierDictionary.ContainsKey(g_axis))
     {
         return(0);
     }
     return(myAxisMultiplierDictionary [g_axis]);
 }
        static JoystickAxis ParseAxis(string item)
        {
            // item is in the format "a#" where # a zero-based integer number
            JoystickAxis axis = JoystickAxis.Axis0;
            int          id   = Int32.Parse(item.Substring(1));

            return(axis + id);
        }
Beispiel #11
0
 public void SetAxis(short collection, HIDPage page, short usage, short value)
 {
     if (page == HIDPage.GenericDesktop || page == HIDPage.Simulation) // set axis only when HIDPage is known by HidHelper.TranslateJoystickAxis() to avoid axis0 to be overwritten by unknown HIDPage
     {
         JoystickAxis axis = GetAxis(collection, page, usage);
         State.SetAxis(axis, value);
     }
 }
    public bool isAxisOverThreshold(JoystickAxis axis, float threshold = 0.1f)
    {
        float value = getAxis(axis);
        float upper = Mathf.Abs(threshold);
        float lower = 0f - upper;

        return(value <= lower || value >= upper);
    }
 /// <summary>
 /// Initializes a new instance of the <see cref="Input"/> struct.
 /// </summary>
 /// <param name="actionName">The name of the action.</param>
 /// <param name="joystickAxis">The joystick axis.</param>
 public Input(string actionName, JoystickAxis joystickAxis)
 {
     ActionName        = actionName;
     key               = null;
     this.joystickAxis = joystickAxis;
     joystickButton    = null;
     joystickHat       = null;
 }
Beispiel #14
0
            public void SetAxis(short collection, HIDPage page, short usage, short value)
            {
                JoystickAxis axis = GetAxis(collection, page, usage);

                if (axis != JoystickAxis.Last)
                {
                    State.SetAxis(axis, value);
                }
            }
            public float GetAxis(AxisMethodName g_input, int g_joystickNumber, JoystickAxis g_axis)
            {
                //check if it use simulator
                if (useSimulator)
                {
                    if (mySimulatorDictionary.ContainsKey(g_joystickNumber))
                    {
                        float t_value = mySimulatorDictionary [g_joystickNumber].GetAxis(g_axis);
                        if (t_value != 0)
                        {
                            return(t_value);
                        }
                    }
                }

                //get the input function
                AxisMethod t_InputFunction;

                if (g_input == AxisMethodName.Normal)
                {
                    t_InputFunction = Input.GetAxis;
                }
                else
                {
                    t_InputFunction = Input.GetAxisRaw;
                }

                //0 -> all; 1-8 -> joystick1-8
                g_joystickNumber = Mathf.Clamp(g_joystickNumber, 0, NUMBER_MAX_JOYSTICK);

                if (g_joystickNumber != 0)
                {
                    JellyJoystickInputLayout t_layout = GetInputLayout(g_joystickNumber);

                    int t_axisNumber = t_layout.GetAxisNumber(g_axis);
                    if (t_axisNumber == 0)
                    {
                        return(0);
                    }

                    int t_axisMultiplier = t_layout.GetAxisMultiplier(g_axis);

                    return(t_InputFunction("Joystick" + g_joystickNumber + "Axis" + t_axisNumber) * t_axisMultiplier);
                }
                else
                {
                    for (int i = 1; i <= NUMBER_MAX_JOYSTICK; i++)
                    {
                        float t_value = GetAxis(g_input, i, g_axis);
                        if (t_value != 0)
                        {
                            return(t_value);
                        }
                    }
                }
                return(0);
            }
 public float this[JoystickAxis axis]
 {
     get
     {
         if (this.AxisCount > (int)axis)
             return this.state.GetAxis(GetOpenTKJoystickAxis(axis));
         else
             return 0.0f;
     }
 }
Beispiel #17
0
 public void HandleJoystickMoved(uint joystickID, JoystickAxis axis, float position)
 {
     switch (axis)
     {
     case JoystickAxis.X:
     case JoystickAxis.Y:
         Player.CurrentPlayer.HandleMove(axis, position);
         break;
     }
 }
		public float this[JoystickAxis axis]
		{
			get 
			{
				if (this.device.Axis.Count > (int)axis)
					return this.device.Axis[axis];
				else
					return 0.0f;
			}
		}
 public float this[JoystickAxis axis]
 {
     get
     {
         return(this.axis_state[(int)axis]);
     }
     internal set
     {
         this.axis_state[(int)axis] = value;
     }
 }
Beispiel #20
0
 public float this[JoystickAxis axis]
 {
     get
       {
     return this.axis_state[(int) axis];
       }
       internal set
       {
     this.axis_state[(int) axis] = value;
       }
 }
Beispiel #21
0
    /// <summary>
    /// Create a new instance of <see cref="JoystickInput"/> that handles specified joystick button for a target joystick.
    /// </summary>
    /// <param name="button">Joystick button.</param>
    /// <param name="target">Target joystick.</param>
    public JoystickInput(JoystickButton button, Joystick target=Joystick.AllJoysticks)
    {
        if (button==JoystickButton.None)
        {
            Debug.LogError("button can't be JoystickButton.None");
        }

        mAxis   = JoystickAxis.None;
        mButton = button;
        mTarget = target;
    }
Beispiel #22
0
            JoystickAxis GetAxis(short collection, HIDPage page, short usage)
            {
                int key = MakeKey(collection, page, usage);

                if (!axes.ContainsKey(key))
                {
                    JoystickAxis axis = HidHelper.TranslateJoystickAxis(page, usage);
                    axes.Add(key, axis);
                }
                return(axes[key]);
            }
Beispiel #23
0
    /// <summary>
    /// Create a new instance of <see cref="JoystickInput"/> that handles specified joystick axis for a target joystick.
    /// </summary>
    /// <param name="axis">Joystick axis.</param>
    /// <param name="target">Target joystick.</param>
    public JoystickInput(JoystickAxis axis, Joystick target=Joystick.AllJoysticks)
    {
        if (axis==JoystickAxis.None)
        {
            Debug.LogError("axis can't be JoystickAxis.None");
        }

        mAxis   = axis;
        mButton = JoystickButton.None;
        mTarget = target;
    }
Beispiel #24
0
 public void OnTriggerHold(JoystickAxis trigger)
 {
     if (trigger.Code == AxisCode.LeftTrigger)
     {
         if (canHoldTheHair == true && isGrabbingHair == false)
         {
             GrabTheHair();
             isGrabbingHair = true;
             canLoseTheHair = true;
         }
     }
 }
        /// <summary>
        /// Adds a single unity axis to the InputManager.
        /// </summary>
        /// <param name="axis"></param>
        private static void AddAxis(JoystickAxis axis)
        {
            SerializedObject   serializedObject = new SerializedObject(AssetDatabase.LoadAllAssetsAtPath("ProjectSettings/InputManager.asset")[0]);
            SerializedProperty axesProperty     = serializedObject.FindProperty("m_Axes");

            axesProperty.arraySize++;
            serializedObject.ApplyModifiedProperties();
            SerializedProperty axisProperty = axesProperty.GetArrayElementAtIndex(axesProperty.arraySize - 1);

            SetAxis(axisProperty, axis);
            serializedObject.ApplyModifiedProperties();
        }
Beispiel #26
0
    public void OnTriggerDeadZone(JoystickAxis trigger)
    {
        if (trigger.Code == AxisCode.LeftTrigger)
        {
            if (canLoseTheHair == true)
            {
                LoseTheHair();

                canLoseTheHair = false;
            }
        }
    }
Beispiel #27
0
        private void OnTimerCallback2(object state)
        {
            JoystickAPI.JOYINFOEX infoEx_PR = new JoystickAPI.JOYINFOEX();
            JoystickAPI.JOYINFOEX infoEx_Y  = new JoystickAPI.JOYINFOEX();
            JoystickAPI.JOYINFOEX infoEx_T  = new JoystickAPI.JOYINFOEX();
            Axis axis_now = PreviousAxis2;

            if (joystick_PR2.getinfo(ref infoEx_PR) == JoystickAPI.JOYERR_NOERROR)
            {
                JoystickButtons buttons = joystick_PR2.GetButtons(infoEx_PR.dwButtons);
                JoystickAxis    axis    = joystick_PR2.GetAxis(ref infoEx_PR);

                if (PreviousButtons2 != buttons)
                {
                    //按钮状态有更改,则发出ButtonUp事件

                    //取得前一次按下的按钮与本次按下的按钮的差(即不再处于按下状态的按钮)
                    JoystickButtons b = (JoystickButtons)(PreviousButtons2 - (PreviousButtons2 & buttons));
                    JoystickButtons n = (JoystickButtons)(buttons - (PreviousButtons2 & buttons));//新按下的按钮;
                    if (b != JoystickButtons.None)
                    {
                        this.Dispatcher.Invoke(new ButtonsUpCallBack(buttonUp2), b);
                    }
                    if (n != JoystickButtons.None)
                    {
                        this.Dispatcher.Invoke(new ButtonsDownCallBack(buttonDown2), n);
                    }
                    PreviousButtons2 = buttons;
                }
                axis_now.Pitch = Convert.ToDouble(axis.Ypos - joystick_PR2.JoystickCAPS.wYmin) * 100 / (joystick_PR2.JoystickCAPS.wYmax - joystick_PR2.JoystickCAPS.wYmin);
                axis_now.Roll  = Convert.ToDouble(axis.Xpos - joystick_PR2.JoystickCAPS.wXmin) * 100 / (joystick_PR2.JoystickCAPS.wXmax - joystick_PR2.JoystickCAPS.wXmin);
            }
            if (joystick_Y2.getinfo(ref infoEx_Y) == JoystickAPI.JOYERR_NOERROR)
            {
                JoystickAxis axis = joystick_Y2.GetAxis(ref infoEx_Y);
                axis_now.Yaw = Convert.ToDouble(axis.Zpos - joystick_Y2.JoystickCAPS.wRmin) * 100 / (joystick_Y2.JoystickCAPS.wRmax - joystick_Y2.JoystickCAPS.wRmin);
            }
            if (joystick_T2.getinfo(ref infoEx_T) == JoystickAPI.JOYERR_NOERROR)
            {
                JoystickAxis axis = joystick_T2.GetAxis(ref infoEx_T);
                //axis_now.Throttle = 100 - Convert.ToDouble(axis.Rpos - joystick_T.JoystickCAPS.wRmin) * 100 / (joystick_T.JoystickCAPS.wRmax - joystick_T.JoystickCAPS.wRmin);
                axis_now.Throttle = 100 - Convert.ToDouble(axis.Zpos - joystick_T2.JoystickCAPS.wZmin) * 100 / (joystick_T2.JoystickCAPS.wZmax - joystick_T2.JoystickCAPS.wZmin);
            }
            if (axis_now.Equals(PreviousAxis2))
            {
            }
            else
            {
                this.Dispatcher.Invoke(new AxisChangeCallBack(axisChange2), axis_now);
                PreviousAxis2 = axis_now;
            }
        }
Beispiel #28
0
        public float GetAxisValue(JoystickAxisAction action)
        {
            Joystick     device   = _actionToJoystick[action];
            Axis         axis     = _actionToAxis[action];
            JoystickAxis axisName = axis.Name;

            float invertion = axis.IsInverted ? -1 : 1;

            float value;

            if (axisName == JoystickAxis.X)
            {
                value = device.Axes.X;
            }
            else if (axisName == JoystickAxis.Y)
            {
                value = device.Axes.Y;
            }
            else if (axisName == JoystickAxis.Z)
            {
                value = device.Axes.Z;
            }
            else if (axisName == JoystickAxis.Rx)
            {
                value = device.Axes.Rx;
            }
            else if (axisName == JoystickAxis.Ry)
            {
                value = device.Axes.Ry;
            }
            else if (axisName == JoystickAxis.Rz)
            {
                value = device.Axes.Rz;
            }
            else if (axisName == JoystickAxis.U)
            {
                value = device.Axes.U;
            }
            else if (axisName == JoystickAxis.V)
            {
                value = device.Axes.V;
            }
            else
            {
                throw new NotImplementedException();
            }

            value = (value - Int16.MaxValue) / Int16.MaxValue; // -1 to +1
            return(invertion * value);                         // Inverted axis
        }
Beispiel #29
0
 public float this[JoystickAxis axis]
 {
     get
     {
         if (this.AxisCount > (int)axis)
         {
             return(this.state.GetAxis(GetOpenTKJoystickAxis(axis)));
         }
         else
         {
             return(0.0f);
         }
     }
 }
 public float this[JoystickAxis axis]
 {
     get
     {
         if (this.device.Axis.Count > (int)axis)
         {
             return(this.device.Axis[axis]);
         }
         else
         {
             return(0.0f);
         }
     }
 }
    /// <summary>
    /// Create a new instance of <see cref="JoystickInput"/> that handles specified joystick button for a target joystick.
    /// </summary>
    /// <param name="button">Joystick button.</param>
    /// <param name="target">Target joystick.</param>
    /// <param name="modifiers">Key modifiers.</param>
    public JoystickInput(JoystickButton button, Joystick target = Joystick.AllJoysticks, KeyModifier modifiers = KeyModifier.NoModifier)
    {
        if (button == JoystickButton.None)
        {
            Debug.LogError("button can't be JoystickButton.None");
        }

        mAxis      = JoystickAxis.None;
        mButton    = button;
        mTarget    = target;
        mModifiers = modifiers;

        mCachedToString  = null;
        mCachedInputName = null;
    }
Beispiel #32
0
        public JoystickInput(JoystickAxis axis, JoystickButton button, Joystick target = Joystick.AllJoysticks, KeyModifier modifiers = KeyModifier.NoModifier)
        {
            if ((axis == JoystickAxis.None) == (button == JoystickButton.None))
            {
                Debug.LogError("Either axis or button must be None, not both or neither");
            }

            mAxis      = axis;
            mButton    = button;
            mTarget    = target;
            mModifiers = modifiers;

            mCachedToString  = null;
            mCachedInputName = null;
        }
    /// <summary>
    /// Create a new instance of <see cref="JoystickInput"/> that handles specified joystick button for a target joystick.
    /// </summary>
    /// <param name="button">Joystick button.</param>
    /// <param name="target">Target joystick.</param>
    /// <param name="modifiers">Key modifiers.</param>
    public JoystickInput(JoystickButton button, Joystick target = Joystick.AllJoysticks, KeyModifier modifiers = KeyModifier.NoModifier)
    {
        if (button == JoystickButton.None)
        {
            Debug.LogError("button can't be JoystickButton.None");
        }

        mAxis      = JoystickAxis.None;
        mButton    = button;
        mTarget    = target;
        mModifiers = modifiers;

        mCachedToString  = null;
        mCachedInputName = null;
    }
    /// <summary>
    /// Create a new instance of <see cref="JoystickInput"/> that handles specified joystick axis for a target joystick.
    /// </summary>
    /// <param name="axis">Joystick axis.</param>
    /// <param name="target">Target joystick.</param>
    /// <param name="modifiers">Key modifiers.</param>
    public JoystickInput(JoystickAxis axis, float threshold = -1f, Joystick target = Joystick.AllJoysticks, KeyModifier modifiers = KeyModifier.NoModifier)
    {
        if (axis == JoystickAxis.None)
        {
            Debug.LogError("axis can't be JoystickAxis.None");
        }

        mAxis      = axis;
        mButton    = JoystickButton.None;
        mTarget    = target;
        mModifiers = modifiers;
        mThreshold = (threshold == -1) ? InputControl.joystickThreshold : threshold;

        mCachedToString  = null;
        mCachedInputName = null;
    }
Beispiel #35
0
        internal void SetAxis(JoystickAxis axis, short value)
        {
            int index = (int)axis;

            if (index < 0 || index >= MaxAxes)
            {
                throw new ArgumentOutOfRangeException("axis");
            }

            unsafe
            {
                fixed(short *paxes = axes)
                {
                    *(paxes + index) = value;
                }
            }
        }
Beispiel #36
0
        /// <inheritdoc />
        public override float GetAxisRelative(JoystickAxis axis)
        {
            if (!Connected)
            {
                return(0);
            }

            int axisIndex = (int)axis;

            if (axisIndex < _axisLastFrame.Length && axisIndex < _axisThisFrame.Length)
            {
                return(_axisThisFrame[axisIndex] - _axisLastFrame[axisIndex]);
            }

            Engine.Log.Warning($"Tried to poll Joystick axis {axis} ({axisIndex}), but the joystick didn't report it.", Logging.MessageSource.Input);
            return(0);
        }
 private Decimal ReadAxis(JoystickAxis axis)
 {
     return (Decimal) _currentState.GetAxis(axis);
 }
 private string GetAxisText(JoystickAxis axis)
 {
     var axisValue = _currentState.GetAxis(axis);
     return string.Format("{0}={1}", axis, axisValue);
 }
 //vs2008では使えない...
 public JoystickPositionAssign(JoystickAxis axis, bool isNegate/* = false*/)
 {
     Axis = axis;
     IsNegate = isNegate;
 }
        public float GetPosition(JoystickAxis axis)
        {
            switch (axis)
            {
                case JoystickAxis.X: return positionX;
                case JoystickAxis.Y: return positionY;
                case JoystickAxis.Z: return positionZ;
                case JoystickAxis.R: return positionR;
                case JoystickAxis.U: return positionU;
                case JoystickAxis.V: return positionV;
            }

            throw new InvalidOperationException("It can't be!!");
        }
 public GamePadConfigurationSource(JoystickAxis axis)
     : this()
 {
     Type = ConfigurationType.Axis;
     Axis = axis;
 }
        internal void SetAxis(JoystickAxis axis, float @value)
        {
			float oldVal = axis_collection[axis];
			if (oldVal != @value)
			{
				move_args.Axis = axis;
				move_args.Delta = move_args.Value - @value;
				axis_collection[axis] = move_args.Value = @value;
				Move(this, move_args);
			}
        }
        private static bool IsAxisRecognized(MonitoredJoystick monitor, IList<JoystickAxis> ignoreAxes, out JoystickAxis axis, out bool isInverted)
        {
            // When exiting in false, we still need to set some default values that should never be used
            axis = JoystickAxis.X;
            isInverted = false;

//            if (IsInitialState(monitor))
//                return false;

            // Max possible deviation is Int16.MaxValue - Int16.MinValue
            // Most likely deviation is from 0 to Int16.MaxValue or 0 to Int16.MinValue
            // as the joystick is typically centered.
            const int threshold = (int)(0.9*Int16.MaxValue);
            if (monitor.Deviation.X > threshold && !ignoreAxes.Contains(JoystickAxis.X))
            {
                axis = JoystickAxis.X;
                isInverted = monitor.Current.X > monitor.MinValue.X;
            }
            else if (monitor.Deviation.Y > threshold && !ignoreAxes.Contains(JoystickAxis.Y))
            {
                axis = JoystickAxis.Y;
                isInverted = monitor.Current.Y > monitor.MinValue.Y;
            }
            else if (monitor.Deviation.Z > threshold && !ignoreAxes.Contains(JoystickAxis.Z))
            {
                axis = JoystickAxis.Z;
                isInverted = monitor.Current.Z > monitor.MinValue.Z;
            }
            else if (monitor.Deviation.Rx > threshold && !ignoreAxes.Contains(JoystickAxis.Rx))
            {
                axis = JoystickAxis.Rx;
                isInverted = monitor.Current.Rx > monitor.MinValue.Rx;
            }
            else if (monitor.Deviation.Ry > threshold && !ignoreAxes.Contains(JoystickAxis.Ry))
            {
                axis = JoystickAxis.Ry;
                isInverted = monitor.Current.Ry > monitor.MinValue.Ry;
            }
            else if (monitor.Deviation.Rz > threshold && !ignoreAxes.Contains(JoystickAxis.Rz))
            {
                axis = JoystickAxis.Rz;
                isInverted = monitor.Current.Rz > monitor.MinValue.Rz;
            }
            else if (monitor.Deviation.U > threshold && !ignoreAxes.Contains(JoystickAxis.U))
            {
                axis = JoystickAxis.U;
                isInverted = monitor.Current.U > monitor.MinValue.U;
            }
            else if (monitor.Deviation.V > threshold && !ignoreAxes.Contains(JoystickAxis.V))
            {
                axis = JoystickAxis.V;
                isInverted = monitor.Current.V > monitor.MinValue.V;
            }
            else
                return false;

            return true;
        }
Beispiel #44
0
 /// <summary>
 /// Called when joystick axis is moved.
 /// </summary>
 /// <param name="axis">The joystick axis.</param>
 public virtual void OnJoystickAxis(JoystickAxis axis) { }
Beispiel #45
0
 internal void SetAxis(JoystickAxis axis, float value)
 {
     this.move_args.Axis = axis;
       this.move_args.Delta = this.move_args.Value - value;
       this.axis_collection[axis] = this.move_args.Value = value;
       this.Move((object) this, this.move_args);
 }
		public float this[JoystickAxis axis]
		{
			get { return this.device.Axis[axis]; }
		}
 public static void AddControl(MyStringId context, MyStringId stringId, MyJoystickAxesEnum axis)
 {
     m_bindings[context][stringId] = new JoystickAxis(axis);
 }
				/// <summary>
				/// Tos the code.
				/// </summary>
				/// <returns>The code.</returns>
				/// <param name="joy">Joy.</param>
				/// <param name="axis">Axis.</param>
				/// <param name="data">Data. JoystickPovPosition  </param>
				public static int toCode (Joysticks joy, JoystickAxis axis, JoystickPovPosition pos)
				{

						return toCode (joy, axis, (int)pos);
						//return toCode (joy, axis,(int)pos );
				}
 internal void SetAxis(JoystickAxis axis, float @value)
 {
     if ((int)axis < axis_collection.Count)
     {
         move_args.Axis = axis;
         move_args.Delta = move_args.Value - @value;
         axis_collection[axis] = move_args.Value = @value;
         Move(this, move_args);
     }
 }
		public JoystickAxisEventArgs(JoystickInput inputChannel, JoystickAxis axis, float axisValue, float axisDelta) : base(inputChannel)
		{
			this.axis = axis;
			this.axisValue = axisValue;
			this.axisDelta = axisDelta;
		}
Beispiel #51
0
 /// <summary>
 /// Gets the current axis position
 /// </summary>
 /// <param name="axis">Vertical or horizontal axis</param>
 /// <returns>Joystick position</returns>
 public float GetAxisPosition(JoystickAxis axis)
 {
     return ((float)(Sdl.SDL_JoystickGetAxis(this.Handle, (int)axis) + JOYSTICK_ADJUSTMENT) / JOYSTICK_SCALE);
 }
        private static OpenTK.Input.JoystickAxis GetOpenTKJoystickAxis(JoystickAxis axis)
        {
            switch (axis)
            {
                case JoystickAxis.Axis0:	return OpenTK.Input.JoystickAxis.Axis0;
                case JoystickAxis.Axis1:	return OpenTK.Input.JoystickAxis.Axis1;
                case JoystickAxis.Axis2:	return OpenTK.Input.JoystickAxis.Axis2;
                case JoystickAxis.Axis3:	return OpenTK.Input.JoystickAxis.Axis3;
                case JoystickAxis.Axis4:	return OpenTK.Input.JoystickAxis.Axis4;
                case JoystickAxis.Axis5:	return OpenTK.Input.JoystickAxis.Axis5;
                case JoystickAxis.Axis6:	return OpenTK.Input.JoystickAxis.Axis6;
                case JoystickAxis.Axis7:	return OpenTK.Input.JoystickAxis.Axis7;
                case JoystickAxis.Axis8:	return OpenTK.Input.JoystickAxis.Axis8;
                case JoystickAxis.Axis9:	return OpenTK.Input.JoystickAxis.Axis9;
                case JoystickAxis.Axis10:	return OpenTK.Input.JoystickAxis.Axis10;
                case JoystickAxis.Axis11:	return OpenTK.Input.JoystickAxis.Last;		// OpenTK only has 11 axes, not 12
            }

            return OpenTK.Input.JoystickAxis.Last;
        }
Beispiel #53
0
 /// <summary>
 /// [GET] Returns the specified device axis current value.
 /// </summary>
 /// <param name="axis"></param>
 /// <returns></returns>
 public float this[JoystickAxis axis]
 {
     get { return this.currentState.AxisValue[(int)axis]; }
 }
Beispiel #54
0
 /// <summary>
 /// Returns the specified axis value.
 /// </summary>
 /// <param name="axis"></param>
 /// <returns></returns>
 public float AxisValue(JoystickAxis axis)
 {
     return this.currentState.AxisValue[(int)axis];
 }
				/// <summary>
				/// Tos the code.
				/// </summary>
				/// <returns>The code.</returns>
				/// <param name="joy">Joy.</param>
				/// <param name="axis">Axis.</param>
				/// <param name="data">Data.</param>
				public static int toCode (Joysticks joy, JoystickAxis axis, int data)
				{
						//UnityEngine.Debug.Log("Test"+joy+" "+axis+" "+data);
						return InputCode.MAX_KEY_CODE + ((((int)joy << CODE_AXIS_SHIFT | (int)axis) << CODE_DATA_SHIFT) | data);
				}
 /// <summary>
 /// Initializes a new instance of the <see cref="JoystickMoveEventArgs"/> class.
 /// </summary>
 /// <param name="axis">The index of the joystick axis that was moved.</param>
 /// <param name="value">The absolute value of the joystick axis.</param>
 /// <param name="delta">The relative change in value of the joystick axis.</param>
 public JoystickMoveEventArgs(JoystickAxis axis, float value, float delta)
 {
     this.axis = axis;
     this.value = value;
     this.delta = delta;
 }
        public bool GetAxis(int joystick, ref JoystickAxis axis, params JoystickAxis[] excludeAxis)
        {
            for (int i = 0; i < numJoysticks; ++i) {
                if (IsConnected(i)) {
                    JoystickState state = Joystick.GetState(i);
                    foreach (JoystickAxis enumVal in Enum.GetValues(typeof(JoystickAxis))) {

                        bool greaterThan0 = Math.Abs(state.GetAxis(enumVal)) > GetDeadzone(joystick);
                        bool lessThan1 = 1.0 - Math.Abs(state.GetAxis(enumVal)) > GetDeadzone(joystick);

                        if (greaterThan0 && lessThan1) {
                            bool cont = false;
                            foreach (JoystickAxis exclude in excludeAxis) {
                                if (exclude == enumVal) {
                                    cont = true;
                                    break;
                                }
                            }
                            if (cont) {
                                continue;
                            }

                            axis = enumVal;
                            return true;
                        }
                    }
                }
            }
            return false;
        }
						public InputActionFactory Create (Joysticks joystick, JoystickAxis joystickAxis, JoystickPosition joystickPosition)
						{

								__factoryConstructor = (type) => new InputAction (InputCode.toCode (joystick, joystickAxis, joystickPosition), type);
								return instance;
						}
						public InputAction CreateSimpleAction (Joysticks joystick, JoystickAxis joystickAxis, JoystickPosition joystickPosition)
						{

								return new InputAction (InputCode.toCode (joystick, joystickAxis, joystickPosition), InputActionType.SINGLE);

						}
		public float this[JoystickAxis axis]
		{
			get { return this.realInput[axis]; }
		}