Exemple #1
0
 public void Vibrate(int index, VibrationValue vibrationValue)
 {
     if (index >= 0 && index < VibrationDeviceCount)
     {
         Vibration.SendValue(VibrationDeviceHandles[index], vibrationValue);
     }
 }
Exemple #2
0
    /// <summary>
    /// 振動の実装部
    /// </summary>
    /// <param name="_Index">コントローラーの番号</param>
    /// <param name="_LowPow">低周波の振動の強さ</param>
    /// <param name="_HighPow">高周波の振動の強さ</param>
    static void VibrationImpl(int _Index, float _LowPow, float _HighPow)
    {
        //未接続なら何もしない
        if (!SwitchManager.GetInstance().IsConnect(_Index))
        {
            return;
        }
        //IDの取得
        NpadId npadId = SwitchManager.GetInstance().GetNpadId(_Index);
        //スタイルの取得
        NpadStyle npadStyle = Npad.GetStyleSet(npadId);
        //デバイスの数を取得(0か1のみ取得する)
        int deviceCount = Vibration.GetDeviceHandles(
            m_VibrationDeviceHandles, 1, npadId, npadStyle);

        //デバイスの数が1じゃない場合は何もしない
        if (deviceCount != 1)
        {
            return;
        }
        //パワーをセット
        m_VibrationValue.amplitudeLow  = _LowPow;
        m_VibrationValue.amplitudeHigh = _HighPow;
        //デバイスの初期化
        Vibration.InitializeDevice(m_VibrationDeviceHandles[0]);
        //振動の値をセット
        Vibration.SendValue(m_VibrationDeviceHandles[0], m_VibrationValue);
    }
Exemple #3
0
    /// <summary>
    /// 振動の実装部
    /// </summary>
    /// <param name="index">コントローラーの番号</param>
    /// <param name="lowPow">低周波の振動の強さ</param>
    /// <param name="highPow">高周波の振動の強さ</param>
    static void VibrationImpl(int index, float lowPow, float highPow)
    {
#if UNITY_SWITCH && !(UNITY_EDITOR)
        //未接続なら何もしない
        if (!SwitchManager.GetInstance().IsConnect(index))
        {
            return;
        }
        //IDの取得
        NpadId npadId = SwitchManager.GetInstance().GetNpadId(index);
        //スタイルの取得
        NpadStyle npadStyle = Npad.GetStyleSet(npadId);
        //デバイスの数を取得(0か1のみ取得する)
        int deviceCount = Vibration.GetDeviceHandles(
            vibrationDeviceHandles, 1, npadId, npadStyle);
        //デバイスの数が1じゃない場合は何もしない
        if (deviceCount != 1)
        {
            return;
        }
        //パワーをセット
        vibrationValue.amplitudeLow  = lowPow;
        vibrationValue.amplitudeHigh = highPow;
        //デバイスの初期化
        Vibration.InitializeDevice(vibrationDeviceHandles[0]);
        //振動の値をセット
        Vibration.SendValue(vibrationDeviceHandles[0], vibrationValue);
#endif
    }
    private void GetVibrationDevice(nn.hid.NpadId id, nn.hid.NpadStyle style)
    {
        vibrationValue.Clear();
        for (int i = 0; i < vibrationDeviceCount; i++)
        {
            Vibration.SendValue(vibrationDeviceHandles[i], vibrationValue);
        }

        vibrationDeviceCount = Vibration.GetDeviceHandles(
            vibrationDeviceHandles, vibrationDeviceCountMax, id, style);

        for (int i = 0; i < vibrationDeviceCount; i++)
        {
            Vibration.InitializeDevice(vibrationDeviceHandles[i]);
            Vibration.GetDeviceInfo(ref vibrationDeviceInfos[i], vibrationDeviceHandles[i]);
        }
    }
    private void Update()
    {
        if (displayText.gameObject.activeInHierarchy)
        {
            displayText.text   = rumblePresets[iterator].name;
            intensityText.text = (intensitySlider.value / 100f).ToString("F2");
        }

        if (vibrationTimer > 0f)
        {
            if (UpdatePadState())
            {
                vibrationValue.Clear();

                VibrationFile.RetrieveValue(ref vibrationValue, sampleA, ref curFileContext);
                if ((sampleA % sampleSize) == 0)
                {
                    sampleA++;
                }                                               // 200 sample / sec
                sampleA += sampleIterate;
                if (sampleA >= curFileInfo.sampleLength)
                {
                    sampleA = 0;
                }

                for (int i = 0; i < vibrationDeviceCount; i++)
                {
                    outputValue.Clear();
                    outputValue = VibrationValue.Make(vibrationValue.amplitudeLow * overallIntensity * intensityOverallMultiplier,
                                                      vibrationValue.frequencyLow * overallIntensity * intensityOverallMultiplier,
                                                      vibrationValue.amplitudeHigh * overallIntensity * intensityOverallMultiplier,
                                                      vibrationValue.frequencyHigh * overallIntensity * intensityOverallMultiplier);
                    curIntensity = intensitySlider.value / 100f;

                    if (displayDebugLogs)
                    {
                        Debug.Log(curIntensity);
                    }

                    /*
                     *  outputValue = VibrationValue.Make(vibrationValue.amplitudeLow * curIntensity,
                     *  vibrationValue.frequencyLow * curIntensity,
                     *  vibrationValue.amplitudeHigh * curIntensity,
                     *  vibrationValue.frequencyHigh * curIntensity);
                     */
                    Vibration.SendValue(vibrationDeviceHandles[i], outputValue);
                }
            }

            vibrationTimer -= 1f / 60f;

            if (vibrationTimer <= 0f)
            {
                if (UpdatePadState())
                {
                    vibrationValue.Clear();
                    sampleA = 0;
                    for (int i = 0; i < vibrationDeviceCount; i++)
                    {
                        outputValue.Clear();
                        outputValue = VibrationValue.Make(0f, 0f, 0f, 0f);
                        Vibration.SendValue(vibrationDeviceHandles[i], outputValue);
                    }
                }
            }
        }
    }