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); }
/// <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を取得"); } }
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(); } }
/// <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; }
/// <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); }