reckfellENGINE

OpenXRHapticVibration

Параметры импульса: наносекунды, Гц и амплитуда.

На этой странице
class OpenXRHapticVibrationReckfellSharpНаследует OpenXRHapticBase

OpenXRHapticVibration — ресурс описания импульса для OnHaptic/OffHaptic модификаторов. Создание ресурса само по себе не вызывает вибрацию. Duration задаётся в наносекундах (long), Frequency в Гц, Amplitude в 0…1. Изначально Duration=-1 запрашивает минимальный импульс, Frequency=0 оставляет выбор частоты runtime, Amplitude=1. Единицы и ограничения OpenXR.

Не путайте Duration с длительностью TriggerHapticPulse, где используются секунды. Полный проверенный помощник принимает миллисекунды, округляет до наносекунды и отклоняет нечисловые, выходящие за пределы и слишком малые входы до создания ресурса:

C#
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Конструктор
# OpenXRHapticVibration
C#
public OpenXRHapticVibration();

Создаёт описание вибрации с Duration=-1 нс, Frequency=0 Гц, Amplitude=1. Это ресурс параметров: конструктор не посылает вибрацию устройству.

Свойства3

AmplitudeСвойство
# Amplitude
C#
public float Amplitude { get; set; }

Нормированная амплитуда 0…1, изначально 1. Setter не применяет диапазон Inspector как clamp и не проверяет конечность. Проверяйте вход до назначения. Changed испускается даже при повторе; чтение свойства не измеряет физическую силу вибрации.

DurationСвойство
# Duration
C#
public long Duration { get; set; }

Длительность в наносекундах, тип long. Изначально -1: запрос короткого импульса минимальной поддерживаемой длительности. Это не секунды или миллисекунды. Setter не валидирует значение и испускает Changed даже при повторе. Для явного импульса используйте положительную длительность; фактические ограничения определяет runtime.

FrequencyСвойство
# Frequency
C#
public float Frequency { get; set; }

Частота в Гц, изначально 0 — выбор оптимальной частоты runtime. Задавайте конечное неотрицательное значение; setter не валидирует и не ограничивает его. Changed испускается даже при повторе. Поддерживаемая частота устройства может отличаться от сохранённого запроса.

Методы6

GetAmplitudefloat
# GetAmplitude
C#
public float GetAmplitude();

Сохранённая нормированная амплитуда, изначально 1; не измерение устройства.

Возвращает float

Сохранённая нормированная амплитуда, изначально 1; не измерение устройства.

GetDurationlong
# GetDuration
C#
public long GetDuration();

Сохранённая длительность long в наносекундах; -1 означает минимальный импульс runtime.

Возвращает long

Сохранённая длительность long в наносекундах; -1 означает минимальный импульс runtime.

GetFrequencyfloat
# GetFrequency
C#
public float GetFrequency();

Сохранённая частота в Гц; 0 оставляет выбор runtime.

Возвращает float

Сохранённая частота в Гц; 0 оставляет выбор runtime.

SetAmplitudevoid
# SetAmplitude
C#
public void SetAmplitude(float amplitude);

Нормированная амплитуда 0…1, изначально 1. Setter не применяет диапазон Inspector как clamp и не проверяет конечность. Проверяйте вход до назначения. Changed испускается даже при повторе; чтение свойства не измеряет физическую силу вибрации.

Параметры
ИмяТипПо умолчанию
amplitudefloat—
amplitude

Конечная нормированная амплитуда в диапазоне 0…1.

SetDurationvoid
# SetDuration
C#
public void SetDuration(long duration);

Длительность в наносекундах, тип long. Изначально -1: запрос короткого импульса минимальной поддерживаемой длительности. Это не секунды или миллисекунды. Setter не валидирует значение и испускает Changed даже при повторе. Для явного импульса используйте положительную длительность; фактические ограничения определяет runtime.

Параметры
ИмяТипПо умолчанию
durationlong—
duration

Положительная длительность в наносекундах либо -1 для минимального импульса runtime. Не миллисекунды.

SetFrequencyvoid
# SetFrequency
C#
public void SetFrequency(float frequency);

Частота в Гц, изначально 0 — выбор оптимальной частоты runtime. Задавайте конечное неотрицательное значение; setter не валидирует и не ограничивает его. Changed испускается даже при повторе. Поддерживаемая частота устройства может отличаться от сохранённого запроса.

Параметры
ИмяТипПо умолчанию
frequencyfloat—
frequency

Конечная неотрицательная частота в Гц; 0 для выбора runtime.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.