reckfellENGINE

OpenXRExtensionWrapper

Позволяет реализовывать расширения OpenXR с помощью ReckfellExtension.

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

Позволяет реализовывать расширения OpenXR с помощью ReckfellExtension.

OpenXRExtensionWrapper позволяет реализовывать расширения OpenXR с помощью ReckfellExtension. Расширение должно быть зарегистрировано с помощью OpenXRExtensionWrapper.RegisterExtensionWrapper. Когда OpenXRInterface инициализируется как основной интерфейс, и для любого Viewport параметр Viewport.UseXR установлен в true, OpenXR будет участвовать в процессе рендеринга Reckfell. Если ProjectSettings.rendering/driver/threads/thread_model установлен в "Separate", рендерер Reckfell будет работать в собственном потоке, и необходимо проявлять особую осторожность во всех OpenXRExtensionWrapper, чтобы предотвратить сбои или неожиданное поведение. Некоторые виртуальные методы будут вызываться в потоке рендеринга, и любые данные, к которым они обращаются, не должны записываться напрямую в основной поток. Это необходимо для предотвращения двух потенциальных проблем:

  1. Изменения, предназначенные для следующего кадра, вступают в силу в текущем кадре. При использовании модели «Раздельные потоки» основной поток немедленно начнет работу над следующим кадром, в то время как поток рендеринга может все еще рендерить текущий кадр. Если основной поток напрямую изменяет что-либо, используемое потоком рендеринга, это изменение может быть использовано на один кадр раньше, чем предполагалось.
  2. Чтение и запись одних и тех же данных одновременно из разных потоков может привести к тому, что поток рендеринга будет использовать данные в недопустимом состоянии. В большинстве случаев решение состоит в использовании RenderingServer.CallOnRenderThread для планирования вызовов Callable для записи любых данных, используемых в потоке рендеринга. При использовании модели «Раздельные потоки» эти вызовы Callable будут выполняться после завершения рендеринга текущего кадра и до начала рендеринга следующего кадра. При использовании другого режима они будут выполняться немедленно, поэтому рекомендуется всегда использовать RenderingServer.CallOnRenderThread в таких случаях, что позволит вашему коду выполнять правильные действия независимо от модели потоков. Ниже будут указаны все виртуальные методы, выполняющиеся в потоке рендеринга.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

OpenXRExtensionWrapperКонструктор
# OpenXRExtensionWrapper
C#
public OpenXRExtensionWrapper();

Методы33

GetOpenxrApiOpenXRApiExtension
# GetOpenxrApi
C#
public OpenXRApiExtension GetOpenxrApi();

Возвращает созданный OpenXRApiExtension, который можно использовать для доступа к API OpenXR.

Возвращает OpenXRApiExtension
RegisterExtensionWrappervoid
# RegisterExtensionWrapper
C#
public void RegisterExtensionWrapper();

Регистрирует расширение. Это должно происходить на уровне инициализации основного модуля. Примечание: Эту функцию нельзя вызвать после инициализации OpenXR.

_GetCameraOffsetsReckfell.Collections.Array<Transform3D>
# _GetCameraOffsets
C#
public virtual Reckfell.Collections.Array<Transform3D> _GetCameraOffsets(StringName trackerName);

Возвращает набор перестановок для каждого вида, выполненного для данной камеры, если эта камера обрабатывается этим расширением. tracker_name - отсылает к видеокамере, для которой мы ищем это.

Параметры
ИмяТипПо умолчанию
trackerNameStringName—
Возвращает Reckfell.Collections.Array<Transform3D>
_GetCameraProjectionsReckfell.Collections.Array<Projection>
# _GetCameraProjections
C#
public virtual Reckfell.Collections.Array<Projection> _GetCameraProjections(StringName trackerName, double aspect, double zNear, double zFar);

Возвращает набор выступов для каждого вида, выполненного для данной камеры, если эта камера обрабатывается этим расширением. tracker_name - отсылает к видеокамере, для которой мы ищем это.

Параметры
ИмяТипПо умолчанию
trackerNameStringName—
aspectdouble—
zNeardouble—
zFardouble—
Возвращает Reckfell.Collections.Array<Projection>
_GetCompositionLayerulong
# _GetCompositionLayer
C#
public virtual ulong _GetCompositionLayer(int index);

Возвращает указатель на структуру XrCompositionLayerBaseHeader, которая предоставляет заданный слой композиции. Этот метод будет вызван только в том случае, если расширение ранее зарегистрировалось с помощью OpenXRApiExtension.RegisterCompositionLayerProvider. Примечание: Этот виртуальный метод будет вызван в потоке рендеринга. Кроме того, возвращаемые им данные будут использованы вскоре после вызова этого метода, поэтому они должны оставаться действительными до следующего запуска OpenXRExtensionWrapper._OnPreRender.

########composation_blayer_count

Параметры
ИмяТипПо умолчанию
indexint—
Возвращает ulong
_GetCompositionLayerCountint
# _GetCompositionLayerCount
C#
public virtual int _GetCompositionLayerCount();

Возвращает количество слоев композиции, предоставляемых этим расширением через OpenXRExtensionWrapper._GetCompositionLayer. Этот метод будет вызван только в том случае, если расширение ранее зарегистрировалось с помощью OpenXRApiExtension.RegisterCompositionLayerProvider. Примечание: Этот виртуальный метод будет вызываться в потоке рендеринга. Кроме того, возвращаемые им данные будут использоваться вскоре после вызова этого метода, поэтому они должны оставаться действительными до следующего запуска OpenXRExtensionWrapper._OnPreRender.

Возвращает int
_GetCompositionLayerOrderint
# _GetCompositionLayerOrder
C#
public virtual int _GetCompositionLayerOrder(int index);

Возвращает целое число, которое будет использоваться для сортировки заданного слоя композиции, предоставленного с помощью OpenXRExtensionWrapper._GetCompositionLayer. Меньшие числа переместят слой в начало списка, а большие — в конец. Слой проекции по умолчанию имеет порядок 0, поэтому слои, предоставляемые этим методом, вероятно, должны быть выше или ниже (но не точно) 0. Этот метод будет вызываться только в том случае, если расширение ранее зарегистрировалось с помощью OpenXRApiExtension.RegisterCompositionLayerProvider. Примечание: Этот виртуальный метод будет вызываться в потоке рендеринга. Кроме того, возвращаемые им данные будут использоваться вскоре после вызова этого метода, поэтому они должны оставаться действительными до следующего запуска OpenXRExtensionWrapper._OnPreRender.

#####get Запрошено_

Параметры
ИмяТипПо умолчанию
indexint—
Возвращает int
_GetRequestedExtensionsReckfell.Collections.Dictionary
# _GetRequestedExtensions
C#
public virtual Reckfell.Collections.Dictionary _GetRequestedExtensions(ulong xRVersion);

Возвращает Reckfell.Collections.Dictionary расширений OpenXR, связанных с этим расширением. xr_version указывает версию OpenXR, которую мы создаём. Это значение будет равно нулю, если редактор запросит этот список для обозначения поддерживаемых функций. Reckfell.Collections.Dictionary должен содержать имя расширения, сопоставленное с bool *, преобразованным в целое число:

  • Если bool * является nullptr, это расширение является обязательным.
  • Если bool * указывает на логическое значение, логическое значение будет обновлено до true, если расширение включено.

#####get_ugugposed trecker_ имена

Параметры
ИмяТипПо умолчанию
xRVersionulong—
Возвращает Reckfell.Collections.Dictionary
_GetSuggestedTrackerNamesstring[]
# _GetSuggestedTrackerNames
C#
public virtual string[] _GetSuggestedTrackerNames();

Возвращает string[] имен позиционных трекеров, которые используются внутри оболочки расширения.

#####get_viewport_composation_layer_production properties

Возвращает string[]
_GetViewportCompositionLayerExtensionPropertiesReckfell.Collections.Array<Reckfell.Collections.Dictionary>
# _GetViewportCompositionLayerExtensionProperties
C#
public virtual Reckfell.Collections.Array<Reckfell.Collections.Dictionary> _GetViewportCompositionLayerExtensionProperties();

Получает массив объектов типа Reckfell.Collections.Dictionary, представляющих свойства, подобно методу ReckfellObject.GetPropertyList, которые будут добавлены к узлам OpenXRCompositionLayer. Примечание: Этот виртуальный метод будет вызываться в потоке рендеринга.

#####get_viewport_compossion_layer_release superty_ defaults

Возвращает Reckfell.Collections.Array<Reckfell.Collections.Dictionary>
_GetViewportCompositionLayerExtensionPropertyDefaultsReckfell.Collections.Dictionary
# _GetViewportCompositionLayerExtensionPropertyDefaults
C#
public virtual Reckfell.Collections.Dictionary _GetViewportCompositionLayerExtensionPropertyDefaults();

Получает Reckfell.Collections.Dictionary, содержащий значения по умолчанию для свойств, возвращаемых OpenXRExtensionWrapper._GetViewportCompositionLayerExtensionProperties.

Возвращает Reckfell.Collections.Dictionary
_OnBeforeInstanceCreatedvoid
# _OnBeforeInstanceCreated
C#
public virtual void _OnBeforeInstanceCreated();

Вызывается до создания экземпляра OpenXR. Примечание: Этот виртуальный метод будет вызван в основном потоке, однако он будет вызван до участия OpenXR в рендеринге, поэтому безопасно записывать данные, которые будут использоваться потоком рендеринга.

_OnInstanceCreatedvoid
# _OnInstanceCreated
C#
public virtual void _OnInstanceCreated(ulong instance);

Вызывается сразу после создания экземпляра OpenXR. Примечание: Этот виртуальный метод будет вызываться в основном потоке, однако он будет вызван до участия OpenXR в рендеринге, поэтому безопасно записывать данные, которые будут использоваться потоком рендеринга.

Параметры
ИмяТипПо умолчанию
instanceulong—
_OnInstanceDestroyedvoid
# _OnInstanceDestroyed
C#
public virtual void _OnInstanceDestroyed();

Вызывается непосредственно перед уничтожением экземпляра OpenXR. Примечание: Этот виртуальный метод будет вызван в основном потоке, однако он будет вызван после завершения участия OpenXR в рендеринге, поэтому безопасно записывать данные, которые использовались потоком рендеринга.

_OnMainSwapchainsCreatedvoid
# _OnMainSwapchainsCreated
C#
public virtual void _OnMainSwapchainsCreated();

Вызывается сразу после (повторного) создания основных цепочек обмена. Примечание: Этот виртуальный метод будет вызываться в потоке рендеринга.

_OnPostDrawViewportvoid
# _OnPostDrawViewport
C#
public virtual void _OnPostDrawViewport(Rid viewport);

Вызывается сразу после отрисовки указанного видового окна. Примечание: Команды отрисовки могут быть только поставлены в очередь на этом этапе, но не выполнены. Примечание: Этот виртуальный метод будет вызван в потоке отрисовки.

Параметры
ИмяТипПо умолчанию
viewportRid—
_OnPreDrawViewportvoid
# _OnPreDrawViewport
C#
public virtual void _OnPreDrawViewport(Rid viewport);

Вызывается непосредственно перед отрисовкой указанного области просмотра. Примечание: Этот виртуальный метод будет вызван в потоке отрисовки.

Параметры
ИмяТипПо умолчанию
viewportRid—
_OnPreRendervoid
# _OnPreRender
C#
public virtual void _OnPreRender();

Вызывается непосредственно перед началом рендеринга XR-окнов. Примечание: Этот виртуальный метод будет вызываться в потоке рендеринга.

_OnProcessvoid
# _OnProcess
C#
public virtual void _OnProcess();

Вызывается как часть обработки процесса OpenXR. Это происходит прямо перед общими и физическими этапами обработки основного цикла. Во время этого этапа данные контроллера запрашиваются и становятся доступными для игровой логики.

_OnRegisterMetadatavoid
# _OnRegisterMetadata
C#
public virtual void _OnRegisterMetadata(OpenXRInteractionProfileMetadata interactionProfileMetadata);

Позволяет расширениям регистрировать дополнительные метаданные контроллера. Эта функция вызывается даже тогда, когда API OpenXR не создан, так как метаданные должны быть доступны редактору. Расширения также должны предоставлять метаданные независимо от того, поддерживаются ли они в хост-системе. Данные контроллера используются для настройки карт действий для пользователей, которые могут иметь доступ к соответствующему оборудованию.

Параметры
ИмяТипПо умолчанию
interactionProfileMetadataOpenXRInteractionProfileMetadata—
_OnSessionCreatedvoid
# _OnSessionCreated
C#
public virtual void _OnSessionCreated(ulong session);

Вызывается сразу после создания сессии OpenXR. Примечание: Этот виртуальный метод будет вызван в основном потоке, однако он будет вызван до участия OpenXR в рендеринге, поэтому безопасно записывать данные, которые будут использоваться потоком рендеринга.

Уничтожена

Параметры
ИмяТипПо умолчанию
sessionulong—
_OnSessionDestroyedvoid
# _OnSessionDestroyed
C#
public virtual void _OnSessionDestroyed();

Вызывается непосредственно перед уничтожением сессии OpenXR. Примечание: Этот виртуальный метод будет вызван в основном потоке, однако он будет вызван после завершения участия OpenXR в рендеринге, поэтому безопасно записывать данные, которые использовались потоком рендеринга.

_OnStateExitingvoid
# _OnStateExiting
C#
public virtual void _OnStateExiting();

Вызывается, когда состояние сеанса OpenXR изменяется на выход.

_OnStateFocusedvoid
# _OnStateFocused
C#
public virtual void _OnStateFocused();

Вызывается, когда состояние сеанса OpenXR меняется на сфокусированное. Это состояние является активным, когда игра запущена.

_OnStateIdlevoid
# _OnStateIdle
C#
public virtual void _OnStateIdle();

Вызывается, когда состояние сеанса OpenXR изменяется на состояние ожидания.

_OnStateLossPendingvoid
# _OnStateLossPending
C#
public virtual void _OnStateLossPending();

Вызывается, когда состояние сеанса OpenXR изменяется на «ожидание потери».

_OnStateReadyvoid
# _OnStateReady
C#
public virtual void _OnStateReady();

Вызывается, когда состояние сеанса OpenXR меняется на ready. Это означает, что OpenXR готов настроить сеанс.

_OnStateStoppingvoid
# _OnStateStopping
C#
public virtual void _OnStateStopping();

Вызывается, когда состояние сеанса OpenXR изменяется на остановку.

_OnStateSynchronizedvoid
# _OnStateSynchronized
C#
public virtual void _OnStateSynchronized();

Вызывается, когда состояние сеанса OpenXR меняется на синхронизированное. OpenXR также возвращается в это состояние, когда приложение теряет фокус.

_OnStateVisiblevoid
# _OnStateVisible
C#
public virtual void _OnStateVisible();

Вызывается, когда состояние сеанса OpenXR меняется на видимое. Это означает, что OpenXR теперь готов принимать кадры.

_OnSyncActionsvoid
# _OnSyncActions
C#
public virtual void _OnSyncActions();

Вызывается, когда OpenXR выполнил свое действие синхронизации.

_PrepareViewConfigurationvoid
# _PrepareViewConfiguration
C#
public virtual void _PrepareViewConfiguration(int viewCount);

Вызывается перед методом _set_view_configuration_and_get_next_pointer, чтобы позволить расширению зарезервировать данные для заданного количества представлений.

Параметры
ИмяТипПо умолчанию
viewCountint—
_PrintViewConfigurationInfovoid
# _PrintViewConfigurationInfo
C#
public virtual void _PrintViewConfigurationInfo(int view);

Эта функция вызывается для того, чтобы расширение могло выводить дополнительную информацию о своей конфигурации представления, если таковая имеется. Она будет вызываться только в том случае, если включен подробный вывод.

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

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

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

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