OpenXRIPBinding
Одна связь ресурса действия с полным путём компонента OpenXR.
OpenXRIPBinding связывает Action с одним BindingPath. Например, select привязывается к /user/hand/right/input/select/click. Для левой руки создайте вторую запись. Новый ресурс пуст: Action=null, путь пуст, модификаторов нет. Само создание записи не добавляет её в профиль или сеанс.
Action возвращает тот же ресурс действия. BindingPath — один путь, не список и не InteractionProfilePath. Их setter испускают Changed даже при повторных значениях. Это уведомление о редактировании ресурса, не сигнал нажатия.
BindingModifiers относится к этой записи, например содержит аналоговый порог. Getter копирует контейнер, но не ресурсы. Изменение копии списка не меняет привязку, пока вы не назначите её обратно. Модификатор переносится при назначении другой привязке. Пустой Array снимает модификаторы с обслуживанием связей владения.
Paths, AddPath, RemovePath, HasPath и GetPathCount относятся к устаревшему подходу. SetPaths не испускает Changed и способен записать строку с запятыми. GetPathCount вернёт 1 для такой непустой строки, даже если GetPaths вернёт два элемента. HasPath сравнивает всю строку. Не стройте новый код вокруг этих методов, даже если SetPaths/GetPaths не помечены Obsolete в SDK.
Подтверждённый дефект: RemovePath с совпадающим аргументом не удаляет путь, а оставляет его прежним и испускает Changed. Проверка фактического удаления не прошла; движок не исправлен. Чтобы удалить запись из профиля, используйте отдельный список без неё; проверенный помощник приведён в OpenXRInteractionProfile.
Проверены текущие setter/getter, массивы модификаторов, владение и наблюдаемое поведение устаревших методов без гарнитуры. Физический ввод, runtime-валидация сочетания типов/путей, haptics и XR-сеанс не проверялись.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
OpenXRIPBindingКонструктор
public OpenXRIPBinding();Создаёт пустую запись: Action=null, BindingPath пуст, модификаторов нет. Настройте её и включите в Bindings нужного профиля; ресурс сам не подключается к XR-сеансу.
Свойства4
ActionСвойство
public OpenXRAction Action { get; set; }Ссылка на ресурс OpenXRAction, изначально null. Назначайте действие, уже включённое в набор карты. Getter возвращает тот же ресурс, не копию. Setter испускает Changed даже при повторе. Не добавляет действие в набор и не создаёт runtime-действие автоматически; изменение общего ресурса видно всем его пользователям.
BindingModifiersСвойство
public Reckfell.Collections.Array BindingModifiers { get; set; }Модификаторы одной привязки, например OpenXRAnalogThresholdModifier, производные от OpenXRActionBindingModifier. Getter возвращает копию контейнера с общими ресурсами. Setter снимает прежние связи, затем добавляет ресурсы; один модификатор переносится между привязками, а не принадлежит двум сразу. Возможны несколько Changed. Пустой Array снимает модификаторы. Применение зависит от расширений и допустимого пути на целевом runtime.
BindingPathСвойство
public string BindingPath { get; set; }Один полный путь ввода или вывода, изначально пустой; например /user/hand/right/input/select/click. Не путь профиля и не имя действия. Setter использует доступные метаданные движка и испускает Changed даже при повторе. Для двух рук создайте две записи OpenXRIPBinding. Валидность сочетания профиля, пути и типа действия проверяйте до запуска и на целевом runtime.
PathsСвойство · Устарело
public string[] Paths { get; set; }Устаревший подход. Setter объединяет строки через запятую во внутренний BindingPath и не испускает Changed; getter разбивает строку в независимый string[]. Перегрузки массива и ReadOnlySpan копируют данные, но не создают несколько полноценных записей профиля. Для нового кода используйте отдельный OpenXRIPBinding с BindingPath на каждый путь, даже если конкретная перегрузка SDK не помечена Obsolete.
Методы15
AddPathvoid · Устарело
public void AddPath(string path);Устаревший метод, не добавление в список: заполняет пустой BindingPath и испускает Changed. Повтор той же строки игнорируется; другой путь при уже непустой записи отклоняется. Создавайте отдельную запись для второго пути.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
pathСтрока для устаревшего сравнения/операции, не список. У RemovePath совпадающий путь в текущей реализации фактически не удаляется.
GetActionOpenXRAction
public OpenXRAction GetAction();Тот же сохранённый OpenXRAction либо null у ненастроенной записи. Не создаёт действие и не возвращает состояние кнопки.
OpenXRActionСохранённый ресурс действия либо null.
GetBindingModifierOpenXRActionBindingModifier
public OpenXRActionBindingModifier GetBindingModifier(int index);Существующий OpenXRActionBindingModifier по индексу 0…GetBindingModifierCount()-1, не копия. Проверьте диапазон; модификаторы профиля находятся в другом ресурсе.
| Имя | Тип | По умолчанию |
|---|---|---|
index | int | — |
indexИндекс от 0 включительно до соответствующего Get…Count() исключительно. Проверьте количество перед вызовом.
OpenXRActionBindingModifierТот же ресурс модификатора соответствующего уровня по допустимому индексу.
GetBindingModifierCountint
public int GetBindingModifierCount();Количество модификаторов этой записи, изначально 0. Не отражает их доступность на устройстве.
intКоличество сохранённых модификаторов соответствующего ресурса.
GetBindingModifiersReckfell.Collections.Array
public Reckfell.Collections.Array GetBindingModifiers();Модификаторы одной привязки, например OpenXRAnalogThresholdModifier, производные от OpenXRActionBindingModifier. Getter возвращает копию контейнера с общими ресурсами. Setter снимает прежние связи, затем добавляет ресурсы; один модификатор переносится между привязками, а не принадлежит двум сразу. Возможны несколько Changed. Пустой Array снимает модификаторы. Применение зависит от расширений и допустимого пути на целевом runtime.
Reckfell.Collections.ArrayНовый Array со ссылками на те же ресурсы модификаторов; не глубокая копия.
GetBindingPathstring
public string GetBindingPath();Сохранённая строка единственного пути. Для обычной настроенной записи это один полный input/output-путь; устаревший SetPaths способен записать сюда строку с запятыми.
stringСохранённая строка BindingPath, изначально пустая.
GetPathCountint · Устарело
public int GetPathCount();Устаревший метод: возвращает 0 для пустого BindingPath и 1 для непустого, даже если GetPaths() разбивает строку на несколько элементов. Не используйте как размер коллекции путей; новая запись должна содержать один BindingPath.
int0 для пустой строки или 1 для непустой; не GetPaths().Length.
GetPathsstring[]
public string[] GetPaths();Устаревший подход. Setter объединяет строки через запятую во внутренний BindingPath и не испускает Changed; getter разбивает строку в независимый string[]. Перегрузки массива и ReadOnlySpan копируют данные, но не создают несколько полноценных записей профиля. Для нового кода используйте отдельный OpenXRIPBinding с BindingPath на каждый путь, даже если конкретная перегрузка SDK не помечена Obsolete.
string[]Независимый string[] непустых частей строки, разделённых запятыми. Это устаревшее представление.
HasPathbool · Устарело
public bool HasPath(string path);Устаревший метод. Сравнивает аргумент со всей строкой BindingPath, а не ищет элемент результата GetPaths(). Совпадение пустых строк тоже даёт true. Для нового кода сравнивайте BindingPath настроенной записи.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
pathСтрока для устаревшего сравнения/операции, не список. У RemovePath совпадающий путь в текущей реализации фактически не удаляется.
boolТочное равенство аргумента всей строке BindingPath.
RemovePathvoid · Устарело
public void RemovePath(string path);Устаревший метод с подтверждённым дефектом текущей реализации: при совпадающем пути оставляет BindingPath прежним и испускает Changed. При другом аргументе отклоняет вызов. Проверка фактического удаления не прошла; движок не исправлен. Для удаления записи из профиля соберите отдельный список без неё и назначьте Bindings; пример есть во введении OpenXRInteractionProfile.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
pathСтрока для устаревшего сравнения/операции, не список. У RemovePath совпадающий путь в текущей реализации фактически не удаляется.
SetActionvoid
public void SetAction(OpenXRAction action);Ссылка на ресурс OpenXRAction, изначально null. Назначайте действие, уже включённое в набор карты. Getter возвращает тот же ресурс, не копию. Setter испускает Changed даже при повторе. Не добавляет действие в набор и не создаёт runtime-действие автоматически; изменение общего ресурса видно всем его пользователям.
| Имя | Тип | По умолчанию |
|---|---|---|
action | OpenXRAction | — |
actionРесурс действия из набора карты; сам setter не добавляет его в набор и не проверяет всё содержимое карты.
SetBindingModifiersvoid
public void SetBindingModifiers(Reckfell.Collections.Array bindingModifiers);Модификаторы одной привязки, например OpenXRAnalogThresholdModifier, производные от OpenXRActionBindingModifier. Getter возвращает копию контейнера с общими ресурсами. Setter снимает прежние связи, затем добавляет ресурсы; один модификатор переносится между привязками, а не принадлежит двум сразу. Возможны несколько Changed. Пустой Array снимает модификаторы. Применение зависит от расширений и допустимого пути на целевом runtime.
| Имя | Тип | По умолчанию |
|---|---|---|
bindingModifiers | Reckfell.Collections.Array | — |
bindingModifiersArray ненулевых OpenXRActionBindingModifier. Добавление переносит ресурс из прежней привязки.
SetBindingPathvoid
public void SetBindingPath(string bindingPath);Один полный путь ввода или вывода, изначально пустой; например /user/hand/right/input/select/click. Не путь профиля и не имя действия. Setter использует доступные метаданные движка и испускает Changed даже при повторе. Для двух рук создайте две записи OpenXRIPBinding. Валидность сочетания профиля, пути и типа действия проверяйте до запуска и на целевом runtime.
| Имя | Тип | По умолчанию |
|---|---|---|
bindingPath | string | — |
bindingPathОдин полный путь компонента, например /user/hand/right/input/select/click; не список через запятую.
SetPaths2 перегрузки
public void SetPaths(ReadOnlySpan<string> paths);Устаревший подход. Setter объединяет строки через запятую во внутренний BindingPath и не испускает Changed; getter разбивает строку в независимый string[]. Перегрузки массива и ReadOnlySpan копируют данные, но не создают несколько полноценных записей профиля. Для нового кода используйте отдельный OpenXRIPBinding с BindingPath на каждый путь, даже если конкретная перегрузка SDK не помечена Obsolete.
| Имя | Тип | По умолчанию |
|---|---|---|
paths | ReadOnlySpan<string> | — |
pathsУстаревший набор строк для внутренней сериализации; для нового кода задавайте один BindingPath отдельной записи.
public void SetPaths(string[] paths);Устаревший подход. Setter объединяет строки через запятую во внутренний BindingPath и не испускает Changed; getter разбивает строку в независимый string[]. Перегрузки массива и ReadOnlySpan копируют данные, но не создают несколько полноценных записей профиля. Для нового кода используйте отдельный OpenXRIPBinding с BindingPath на каждый путь, даже если конкретная перегрузка SDK не помечена Obsolete.
| Имя | Тип | По умолчанию |
|---|---|---|
paths | string[] | — |
pathsУстаревший набор строк для внутренней сериализации; для нового кода задавайте один BindingPath отдельной записи.