OpenXRHapticVibration
Параметры импульса: наносекунды, Гц и амплитуда.
OpenXRHapticVibration — ресурс описания импульса для OnHaptic/OffHaptic модификаторов. Создание ресурса само по себе не вызывает вибрацию. Duration задаётся в наносекундах (long), Frequency в Гц, Amplitude в 0…1. Изначально Duration=-1 запрашивает минимальный импульс, Frequency=0 оставляет выбор частоты runtime, Amplitude=1. Единицы и ограничения OpenXR.
Не путайте Duration с длительностью TriggerHapticPulse, где используются секунды. Полный проверенный помощник принимает миллисекунды, округляет до наносекунды и отклоняет нечисловые, выходящие за пределы и слишком малые входы до создания ресурса:
using System;
using Reckfell;
public static class XrFeedback
{
// Builds a resource for a modifier. This does not send a pulse to a device.
// The caller owns the returned resource.
public static OpenXRHapticVibration PulseMilliseconds(
double milliseconds, float amplitude, float frequencyHz = 0)
{
double nanoseconds = Math.Round(milliseconds * 1_000_000.0);
if (!double.IsFinite(nanoseconds) || nanoseconds < 1 || nanoseconds >= long.MaxValue)
throw new ArgumentOutOfRangeException(nameof(milliseconds));
if (!float.IsFinite(amplitude) || amplitude < 0 || amplitude > 1)
throw new ArgumentOutOfRangeException(nameof(amplitude));
if (!float.IsFinite(frequencyHz) || frequencyHz < 0)
throw new ArgumentOutOfRangeException(nameof(frequencyHz));
return new OpenXRHapticVibration
{
Duration = checked((long)nanoseconds),
Amplitude = amplitude,
Frequency = frequencyHz
};
}
}PulseMilliseconds(20,0.5f) возвращает Duration=20000000, Amplitude=0.5 и Frequency=0. Вызывающий код владеет ресурсом; назначьте его нужному модификатору и сохраняйте до завершения использования. Помощник создаёт явный положительный запрос, не специальный Duration=-1.
Нативные setter не валидируют диапазоны. Они испускают Changed даже при повторном значении. Сохранённая частота или длительность не гарантирует физический результат: runtime может ограничить запрос под устройство.
Проверены начальные значения, setter/getter, события, точный помощник, его граничные значения и общие ссылки из модификаторов. Вибрация, работа расширений и восприятие силы импульса на устройстве не проверялись.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
OpenXRHapticVibrationКонструктор
public OpenXRHapticVibration();Создаёт описание вибрации с Duration=-1 нс, Frequency=0 Гц, Amplitude=1. Это ресурс параметров: конструктор не посылает вибрацию устройству.
Свойства3
AmplitudeСвойство
public float Amplitude { get; set; }Нормированная амплитуда 0…1, изначально 1. Setter не применяет диапазон Inspector как clamp и не проверяет конечность. Проверяйте вход до назначения. Changed испускается даже при повторе; чтение свойства не измеряет физическую силу вибрации.
DurationСвойство
public long Duration { get; set; }Длительность в наносекундах, тип long. Изначально -1: запрос короткого импульса минимальной поддерживаемой длительности. Это не секунды или миллисекунды. Setter не валидирует значение и испускает Changed даже при повторе. Для явного импульса используйте положительную длительность; фактические ограничения определяет runtime.
FrequencyСвойство
public float Frequency { get; set; }Частота в Гц, изначально 0 — выбор оптимальной частоты runtime. Задавайте конечное неотрицательное значение; setter не валидирует и не ограничивает его. Changed испускается даже при повторе. Поддерживаемая частота устройства может отличаться от сохранённого запроса.
Методы6
GetAmplitudefloat
public float GetAmplitude();Сохранённая нормированная амплитуда, изначально 1; не измерение устройства.
floatСохранённая нормированная амплитуда, изначально 1; не измерение устройства.
GetDurationlong
public long GetDuration();Сохранённая длительность long в наносекундах; -1 означает минимальный импульс runtime.
longСохранённая длительность long в наносекундах; -1 означает минимальный импульс runtime.
GetFrequencyfloat
public float GetFrequency();Сохранённая частота в Гц; 0 оставляет выбор runtime.
floatСохранённая частота в Гц; 0 оставляет выбор runtime.
SetAmplitudevoid
public void SetAmplitude(float amplitude);Нормированная амплитуда 0…1, изначально 1. Setter не применяет диапазон Inspector как clamp и не проверяет конечность. Проверяйте вход до назначения. Changed испускается даже при повторе; чтение свойства не измеряет физическую силу вибрации.
| Имя | Тип | По умолчанию |
|---|---|---|
amplitude | float | — |
amplitudeКонечная нормированная амплитуда в диапазоне 0…1.
SetDurationvoid
public void SetDuration(long duration);Длительность в наносекундах, тип long. Изначально -1: запрос короткого импульса минимальной поддерживаемой длительности. Это не секунды или миллисекунды. Setter не валидирует значение и испускает Changed даже при повторе. Для явного импульса используйте положительную длительность; фактические ограничения определяет runtime.
| Имя | Тип | По умолчанию |
|---|---|---|
duration | long | — |
durationПоложительная длительность в наносекундах либо -1 для минимального импульса runtime. Не миллисекунды.
SetFrequencyvoid
public void SetFrequency(float frequency);Частота в Гц, изначально 0 — выбор оптимальной частоты runtime. Задавайте конечное неотрицательное значение; setter не валидирует и не ограничивает его. Changed испускается даже при повторе. Поддерживаемая частота устройства может отличаться от сохранённого запроса.
| Имя | Тип | По умолчанию |
|---|---|---|
frequency | float | — |
frequencyКонечная неотрицательная частота в Гц; 0 для выбора runtime.