public void PlayVibration() { vibrationValue.Clear(); curFile = rumblePresets[iterator].bytes; Result result; result = VibrationFile.Parse(ref curFileInfo, ref curFileContext, curFile, curFile.Length); Debug.Assert(result.IsSuccess()); sampleA = 0; vibrationTimer = (curFileInfo.sampleLength - 1) / samplesPerSec; }
public void PlayVibrationPreset(string presetName, float intensityMultiplier) { if (intensityMultiplier == 0f) { intensityMultiplier = 1f; } intensityOverallMultiplier = intensityMultiplier; int toUse = -1; for (int it = 0; (it < rumblePresets.Length && toUse == -1); it++) { if (rumblePresets[it].name == presetName) { toUse = it; } } if (toUse != -1) { vibrationValue.Clear(); curFile = rumblePresets[toUse].bytes; Result result; result = VibrationFile.Parse(ref curFileInfo, ref curFileContext, curFile, curFile.Length); Debug.Assert(result.IsSuccess()); sampleA = 0; } vibrationTimer = (curFileInfo.sampleLength - 1) / samplesPerSec; if (displayDebugLogs) { if (toUse != -1) { Debug.Log("PLAYING: " + rumblePresets[toUse].name); } else { Debug.Log("Preset: " + presetName + "... was not found!"); } } }
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); } } } } }