Example #1
0
    private bool UpdatePadState()
    {
        NpadStyle handheldStyle = Npad.GetStyleSet(NpadId.Handheld);
        NpadState handheldState = new NpadState();

        if (handheldStyle != NpadStyle.None)
        {
            Npad.GetState(ref handheldState, NpadId.Handheld, handheldStyle);
            if (handheldState.buttons != NpadButton.None)
            {
                if ((npadId != NpadId.Handheld) || (npadStyle != handheldStyle))
                {
                    this.GetSixAxisSensor(NpadId.Handheld, handheldStyle);
                }
                npadId    = NpadId.Handheld;
                npadStyle = handheldStyle;
                npadState = handheldState;
                return(true);
            }
        }
        NpadStyle no1Style = Npad.GetStyleSet(NpadId.No1);
        NpadState no1State = new NpadState();

        if (no1Style != NpadStyle.None)
        {
            Npad.GetState(ref no1State, NpadId.No1, no1Style);
            if (no1State.buttons != NpadButton.None)
            {
                if ((npadId != NpadId.No1) || (npadStyle != no1Style))
                {
                    this.GetSixAxisSensor(NpadId.No1, no1Style);
                }
                npadId    = NpadId.No1;
                npadStyle = no1Style;
                npadState = no1State;
                return(true);
            }
        }

        if ((npadId == NpadId.Handheld) && (handheldStyle != NpadStyle.None))
        {
            npadId    = NpadId.Handheld;
            npadStyle = handheldStyle;
            npadState = handheldState;
        }
        else if ((npadId == NpadId.No1) && (no1Style != NpadStyle.None))
        {
            npadId    = NpadId.No1;
            npadStyle = no1Style;
            npadState = no1State;
        }
        else
        {
            npadId    = NpadId.Invalid;
            npadStyle = NpadStyle.Invalid;
            npadState.Clear();
            return(false);
        }
        return(true);
    }
Example #2
0
    /// <summary>
    /// 入力の更新
    /// </summary>
    /// <param name="_Index">コントローラーの番号</param>
    /// <param name="_NpadId">パッドのID</param>
    static public void InputUpdate(int _Index, NpadId _NpadId)
    {
#if UNITY_EDITOR
        for (int i = 0; i < (int)XboxInput.None; ++i)
        {
            m_XboxPrevButtons[_Index, i]    = m_XboxCurrentButtons[_Index, i];
            m_XboxCurrentButtons[_Index, i] = InputXboxButton(_Index, (XboxInput)i);
        }
#endif
        m_PrevButtons[_Index] = m_CurrentButtons[_Index];
        //未接続
        if (!SwitchManager.GetInstance().IsConnect(_Index))
        {
            return;
        }
        //スタイルを取得
        NpadStyle npadStyle = Npad.GetStyleSet(_NpadId);
        //スタイルが合うかどうか
        if ((npadStyle & SwitchManager.GetInstance().GetNpadStyle()) == 0)
        {
            return;
        }
        //入力情報を取得
        Npad.GetState(ref m_NpadState, _NpadId, npadStyle);
        m_CurrentButtons[_Index] = (long)m_NpadState.buttons;
        //スティックの更新
        if (npadStyle == NpadStyle.JoyRight)
        {
            m_StickInfos[_Index].m_Horizontal = m_NpadState.analogStickR.fy;
            m_StickInfos[_Index].m_Vertical   = -m_NpadState.analogStickR.fx;
        }
        else if (npadStyle == NpadStyle.JoyLeft)
        {
            m_StickInfos[_Index].m_Horizontal = -m_NpadState.analogStickL.fy;
            m_StickInfos[_Index].m_Vertical   = m_NpadState.analogStickL.fx;
        }
        else
        {
            Debug.LogError("JoyRight,JoyLeft以外のStyleを取得");
        }
    }
Example #3
0
        public void UpdateInternalState()
        {
            var oldNPadStyle    = NPadStyle;
            var oldNPadHoldType = NPadHoldType;

            NPadStyle = Npad.GetStyleSet(NPadId);
            if (HasNPadStyle)
            {
                NPadHoldType = NpadJoy.GetHoldType();
                Npad.GetState(ref state, NPadId, NPadStyle);
                IsPresent = (state.attributes & NpadAttribute.IsConnected) != 0;
            }
            else
            {
                IsPresent = false;
            }

            if (oldNPadStyle != NPadStyle || oldNPadHoldType != NPadHoldType)
            {
                Initialize();
            }
        }
Example #4
0
    /// <summary>
    /// 入力の更新
    /// </summary>
    /// <param name="index">コントローラーの番号</param>
    /// <param name="npadId">パッドのID</param>
    static public void InputUpdate(int index, NpadId npadId)
    {
        prevButtons[index] = currentButtons[index];
        //未接続
        if (!SwitchManager.GetInstance().IsConnect(index))
        {
            return;
        }

        //スタイルを取得
        NpadStyle npadStyle = Npad.GetStyleSet(npadId);

        //スタイルが合うかどうか
        if ((npadStyle & SwitchManager.GetInstance().GetNpadStyle()) == 0)
        {
            return;
        }
        //入力情報を取得
        Npad.GetState(ref npadState, npadId, npadStyle);
        npadState.buttons &= ~(NpadButton.StickLUp | NpadButton.StickRUp |
                               NpadButton.StickLDown | NpadButton.StickRDown |
                               NpadButton.StickLRight | NpadButton.StickRRight |
                               NpadButton.StickLLeft | NpadButton.StickRLeft);

        if (npadStyle == NpadStyle.JoyLeft)
        {
            //デッドゾーンを超えているかどうか
            if (Mathf.Abs(npadState.analogStickL.fx) > DeadZone)
            {
                stickInfos[index].y = npadState.analogStickL.fx;
                npadState.buttons  |= (npadState.analogStickL.fx > 0) ? NpadButton.StickLUp : NpadButton.StickLDown;
            }
            else
            {
                stickInfos[index].y = 0.0f;
            }
            //デッドゾーンを超えているかどうか
            if (Mathf.Abs(npadState.analogStickL.fy) > DeadZone)
            {
                stickInfos[index].x = -npadState.analogStickL.fy;
                npadState.buttons  |= (npadState.analogStickL.fy > 0) ? NpadButton.StickLLeft : NpadButton.StickLRight;
            }
            else
            {
                stickInfos[index].x = 0.0f;
            }
        }
        else
        {
            //デッドゾーンを超えているかどうか
            if (Mathf.Abs(npadState.analogStickR.fx) > DeadZone)
            {
                stickInfos[index].y = -npadState.analogStickR.fx;
                npadState.buttons  |= (npadState.analogStickR.fx > 0) ? NpadButton.StickRDown : NpadButton.StickRUp;
            }
            else
            {
                stickInfos[index].y = 0.0f;
            }
            //デッドゾーンを超えているかどうか
            if (Mathf.Abs(npadState.analogStickR.fy) > DeadZone)
            {
                stickInfos[index].x = npadState.analogStickR.fy;
                npadState.buttons  |= (npadState.analogStickR.fy > 0) ? NpadButton.StickRRight : NpadButton.StickRLeft;
            }
            else
            {
                stickInfos[index].x = 0.0f;
            }
        }

        currentButtons[index] = (long)npadState.buttons;
    }
Example #5
0
    /// <summary>
    /// 入力の更新
    /// </summary>
    /// <param name="index">コントローラーの番号</param>
    /// <param name="npadId">パッドのID</param>
    static public void InputUpdate(int index
#if UNITY_SWITCH && !(UNITY_EDITOR)
                                   , NpadId npadId
#endif
                                   )
    {
#if UNITY_EDITOR || !(UNITY_SWITCH)
        for (int i = 0; i < (int)XboxInput.None; ++i)
        {
            xboxPrevButtons[index, i]    = xboxCurrentButtons[index, i];
            xboxCurrentButtons[index, i] = InputXboxButton(index, (XboxInput)i);
        }
#endif
        prevButtons[index] = currentButtons[index];
        //未接続
        if (!SwitchManager.GetInstance().IsConnect(index))
        {
            return;
        }

#if UNITY_SWITCH && !(UNITY_EDITOR)
        //スタイルを取得
        NpadStyle npadStyle = Npad.GetStyleSet(npadId);
        //スタイルが合うかどうか
        if ((npadStyle & SwitchManager.GetInstance().GetNpadStyle()) == 0)
        {
            return;
        }
        //入力情報を取得
        Npad.GetState(ref npadState, npadId, npadStyle);
        npadState.buttons &= ~(NpadButton.StickLUp | NpadButton.StickRUp |
                               NpadButton.StickLDown | NpadButton.StickRDown |
                               NpadButton.StickLRight | NpadButton.StickRRight |
                               NpadButton.StickLLeft | NpadButton.StickRLeft);
        //スティックの更新
        //右のジョイスティック
        if (npadStyle == NpadStyle.JoyRight)
        {
            //デッドゾーンを超えているかどうか
            if (Mathf.Abs(npadState.analogStickR.fx) > DeadZone)
            {
                stickInfos[index].horizontal = npadState.analogStickR.fx;
                npadState.buttons           |= (npadState.analogStickR.fx > 0) ? NpadButton.StickLRight : NpadButton.StickLLeft;
            }
            else
            {
                stickInfos[index].horizontal = 0.0f;
            }
            //デッドゾーンを超えているかどうか
            if (Mathf.Abs(npadState.analogStickR.fy) > DeadZone)
            {
                stickInfos[index].vertical = npadState.analogStickR.fy;
                npadState.buttons         |= (npadState.analogStickR.fy > 0) ? NpadButton.StickLUp : NpadButton.StickLDown;
            }
            else
            {
                stickInfos[index].vertical = 0.0f;
            }
        }
        //左のジョイスティック
        else
        {
            //デッドゾーンを超えているかどうか
            if (Mathf.Abs(npadState.analogStickL.fx) > DeadZone)
            {
                stickInfos[index].horizontal = npadState.analogStickL.fx;
                npadState.buttons           |= (npadState.analogStickL.fx > 0) ? NpadButton.StickLRight : NpadButton.StickLLeft;
            }
            else
            {
                stickInfos[index].horizontal = 0.0f;
            }
            //デッドゾーンを超えているかどうか
            if (Mathf.Abs(npadState.analogStickL.fy) > DeadZone)
            {
                stickInfos[index].vertical = npadState.analogStickL.fy;
                npadState.buttons         |= (npadState.analogStickL.fy > 0) ? NpadButton.StickLUp : NpadButton.StickLDown;
            }
            else
            {
                stickInfos[index].vertical = 0.0f;
            }
        }
        currentButtons[index] = (long)npadState.buttons;
#endif
    }
    private bool UpdatePadState()
    {
        nn.hid.NpadStyle handheldStyle = Npad.GetStyleSet(nn.hid.NpadId.Handheld);
        NpadState        handheldState = new NpadState();

        nn.hid.NpadStyle no1Style = Npad.GetStyleSet(nn.hid.NpadId.No1);
        NpadState        no1State = new NpadState();

        if (playerID == 0)
        {
            if (handheldStyle != nn.hid.NpadStyle.None)
            {
                Npad.GetState(ref handheldState, nn.hid.NpadId.Handheld, handheldStyle);
                if (handheldState.buttons != nn.hid.NpadButton.None)
                {
                    if ((npadId != nn.hid.NpadId.Handheld) || (npadStyle != handheldStyle))
                    {
                        this.GetVibrationDevice(nn.hid.NpadId.Handheld, handheldStyle);
                    }
                    npadId    = nn.hid.NpadId.Handheld;
                    npadStyle = handheldStyle;
                    npadState = handheldState;
                    return(true);
                }
            }

            if (no1Style != nn.hid.NpadStyle.None)
            {
                Npad.GetState(ref no1State, nn.hid.NpadId.No1, no1Style);
                if (no1State.buttons != nn.hid.NpadButton.None)
                {
                    if ((npadId != nn.hid.NpadId.No1) || (npadStyle != no1Style))
                    {
                        this.GetVibrationDevice(nn.hid.NpadId.No1, no1Style);
                    }
                    npadId    = nn.hid.NpadId.No1;
                    npadStyle = no1Style;
                    npadState = no1State;
                    return(true);
                }
            }
        }

        nn.hid.NpadStyle no2Style = Npad.GetStyleSet(nn.hid.NpadId.No2);
        NpadState        no2State = new NpadState();

        if (playerID == 1)
        {
            if (no2Style != nn.hid.NpadStyle.None)
            {
                Npad.GetState(ref no2State, nn.hid.NpadId.No2, no2Style);
                if (no2State.buttons != nn.hid.NpadButton.None)
                {
                    if ((npadId != nn.hid.NpadId.No2) || (npadStyle != no2Style))
                    {
                        this.GetVibrationDevice(nn.hid.NpadId.No2, no2Style);
                    }
                    npadId    = nn.hid.NpadId.No2;
                    npadStyle = no2Style;
                    npadState = no2State;
                    return(true);
                }
            }
        }

        nn.hid.NpadStyle no3Style = Npad.GetStyleSet(nn.hid.NpadId.No3);
        NpadState        no3State = new NpadState();

        if (playerID == 2)
        {
            if (no3Style != nn.hid.NpadStyle.None)
            {
                Npad.GetState(ref no3State, nn.hid.NpadId.No3, no3Style);
                if (no3State.buttons != nn.hid.NpadButton.None)
                {
                    if ((npadId != nn.hid.NpadId.No3) || (npadStyle != no3Style))
                    {
                        this.GetVibrationDevice(nn.hid.NpadId.No3, no3Style);
                    }
                    npadId    = nn.hid.NpadId.No3;
                    npadStyle = no3Style;
                    npadState = no3State;
                    return(true);
                }
            }
        }

        nn.hid.NpadStyle no4Style = Npad.GetStyleSet(nn.hid.NpadId.No4);
        NpadState        no4State = new NpadState();

        if (playerID == 3)
        {
            if (no4Style != nn.hid.NpadStyle.None)
            {
                Npad.GetState(ref no4State, nn.hid.NpadId.No4, no4Style);
                if (no4State.buttons != nn.hid.NpadButton.None)
                {
                    if ((npadId != nn.hid.NpadId.No4) || (npadStyle != no4Style))
                    {
                        this.GetVibrationDevice(nn.hid.NpadId.No4, no4Style);
                    }
                    npadId    = nn.hid.NpadId.No4;
                    npadStyle = no4Style;
                    npadState = no4State;
                    return(true);
                }
            }
        }

        if (playerID == 0 && (npadId == nn.hid.NpadId.Handheld) && (handheldStyle != nn.hid.NpadStyle.None))
        {
            npadId    = nn.hid.NpadId.Handheld;
            npadStyle = handheldStyle;
            npadState = handheldState;
        }
        else if (playerID == 0 && (npadId == nn.hid.NpadId.No1) && (no1Style != nn.hid.NpadStyle.None))
        {
            npadId    = nn.hid.NpadId.No1;
            npadStyle = no1Style;
            npadState = no1State;
        }
        else if (playerID == 1 && (npadId == nn.hid.NpadId.No2) && (no2Style != nn.hid.NpadStyle.None))
        {
            npadId    = nn.hid.NpadId.No2;
            npadStyle = no2Style;
            npadState = no2State;
        }
        else if (playerID == 2 && (npadId == nn.hid.NpadId.No3) && (no3Style != nn.hid.NpadStyle.None))
        {
            npadId    = nn.hid.NpadId.No3;
            npadStyle = no3Style;
            npadState = no3State;
        }
        else if (playerID == 3 && (npadId == nn.hid.NpadId.No4) && (no4Style != nn.hid.NpadStyle.None))
        {
            npadId    = nn.hid.NpadId.No4;
            npadStyle = no4Style;
            npadState = no4State;
        }
        else
        {
            npadId    = nn.hid.NpadId.Invalid;
            npadStyle = nn.hid.NpadStyle.Invalid;
            npadState.Clear();
            return(false);
        }
        return(true);
    }