class_openxrextensionwrapper.rst 59 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729
  1. :github_url: hide
  2. .. DO NOT EDIT THIS FILE!!!
  3. .. Generated automatically from Godot engine sources.
  4. .. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py.
  5. .. XML source: https://github.com/godotengine/godot/tree/master/modules/openxr/doc_classes/OpenXRExtensionWrapper.xml.
  6. .. _class_OpenXRExtensionWrapper:
  7. OpenXRExtensionWrapper
  8. ======================
  9. **Inherits:** :ref:`Object<class_Object>`
  10. **Inherited By:** :ref:`OpenXRExtensionWrapperExtension<class_OpenXRExtensionWrapperExtension>`, :ref:`OpenXRFutureExtension<class_OpenXRFutureExtension>`, :ref:`OpenXRRenderModelExtension<class_OpenXRRenderModelExtension>`, :ref:`OpenXRSpatialAnchorCapability<class_OpenXRSpatialAnchorCapability>`, :ref:`OpenXRSpatialEntityExtension<class_OpenXRSpatialEntityExtension>`, :ref:`OpenXRSpatialMarkerTrackingCapability<class_OpenXRSpatialMarkerTrackingCapability>`, :ref:`OpenXRSpatialPlaneTrackingCapability<class_OpenXRSpatialPlaneTrackingCapability>`
  11. Allows implementing OpenXR extensions with GDExtension.
  12. .. rst-class:: classref-introduction-group
  13. Description
  14. -----------
  15. **OpenXRExtensionWrapper** allows implementing OpenXR extensions with GDExtension. The extension should be registered with :ref:`register_extension_wrapper()<class_OpenXRExtensionWrapper_method_register_extension_wrapper>`.
  16. When :ref:`OpenXRInterface<class_OpenXRInterface>` is initialized as the primary interface and any :ref:`Viewport<class_Viewport>` has :ref:`Viewport.use_xr<class_Viewport_property_use_xr>` set to ``true``, OpenXR will become involved in Godot's rendering process. If :ref:`ProjectSettings.rendering/driver/threads/thread_model<class_ProjectSettings_property_rendering/driver/threads/thread_model>` is set to "Separate", Godot's renderer will run on its own thread, and special care must be taken in all **OpenXRExtensionWrapper**\ s in order to prevent crashes or unexpected behavior. Some virtual methods will be called on the render thread, and any data they access should not be directly written to on the main thread. This is to prevent two potential issues:
  17. 1. Changes intended for the next frame, taking effect on the current frame. When using the "Separate" thread model, the main thread will immediately start working on the next frame while the render thread may still be rendering the current frame. If the main thread changes anything used by the render thread directly, the change could end up being used one frame earlier than intended.
  18. 2. Reading and writing to the same data at the same time from different threads can lead to the render thread using data in an invalid state.
  19. In most cases, the solution is to use :ref:`RenderingServer.call_on_render_thread()<class_RenderingServer_method_call_on_render_thread>` to schedule :ref:`Callable<class_Callable>`\ s to write to any data used on the render thread. When using the "Separate" thread model, these :ref:`Callable<class_Callable>`\ s will run after the renderer finishes the current frame and before it starts rendering the next frame. When not using this mode, they'll run immediately, so it's recommended to always use :ref:`RenderingServer.call_on_render_thread()<class_RenderingServer_method_call_on_render_thread>` in these cases, which will allow your code to do the right thing regardless of the thread model.
  20. Any virtual methods that run on the render thread will be noted below.
  21. .. rst-class:: classref-reftable-group
  22. Methods
  23. -------
  24. .. table::
  25. :widths: auto
  26. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  27. | :ref:`int<class_int>` | :ref:`_get_composition_layer<class_OpenXRExtensionWrapper_private_method__get_composition_layer>`\ (\ index\: :ref:`int<class_int>`\ ) |virtual| |
  28. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  29. | :ref:`int<class_int>` | :ref:`_get_composition_layer_count<class_OpenXRExtensionWrapper_private_method__get_composition_layer_count>`\ (\ ) |virtual| |
  30. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  31. | :ref:`int<class_int>` | :ref:`_get_composition_layer_order<class_OpenXRExtensionWrapper_private_method__get_composition_layer_order>`\ (\ index\: :ref:`int<class_int>`\ ) |virtual| |
  32. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  33. | :ref:`Dictionary<class_Dictionary>` | :ref:`_get_requested_extensions<class_OpenXRExtensionWrapper_private_method__get_requested_extensions>`\ (\ ) |virtual| |
  34. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  35. | :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`_get_suggested_tracker_names<class_OpenXRExtensionWrapper_private_method__get_suggested_tracker_names>`\ (\ ) |virtual| |
  36. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  37. | :ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] | :ref:`_get_viewport_composition_layer_extension_properties<class_OpenXRExtensionWrapper_private_method__get_viewport_composition_layer_extension_properties>`\ (\ ) |virtual| |
  38. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  39. | :ref:`Dictionary<class_Dictionary>` | :ref:`_get_viewport_composition_layer_extension_property_defaults<class_OpenXRExtensionWrapper_private_method__get_viewport_composition_layer_extension_property_defaults>`\ (\ ) |virtual| |
  40. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  41. | |void| | :ref:`_on_before_instance_created<class_OpenXRExtensionWrapper_private_method__on_before_instance_created>`\ (\ ) |virtual| |
  42. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  43. | :ref:`bool<class_bool>` | :ref:`_on_event_polled<class_OpenXRExtensionWrapper_private_method__on_event_polled>`\ (\ event\: ``const void*``\ ) |virtual| |
  44. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  45. | |void| | :ref:`_on_instance_created<class_OpenXRExtensionWrapper_private_method__on_instance_created>`\ (\ instance\: :ref:`int<class_int>`\ ) |virtual| |
  46. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  47. | |void| | :ref:`_on_instance_destroyed<class_OpenXRExtensionWrapper_private_method__on_instance_destroyed>`\ (\ ) |virtual| |
  48. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  49. | |void| | :ref:`_on_main_swapchains_created<class_OpenXRExtensionWrapper_private_method__on_main_swapchains_created>`\ (\ ) |virtual| |
  50. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  51. | |void| | :ref:`_on_post_draw_viewport<class_OpenXRExtensionWrapper_private_method__on_post_draw_viewport>`\ (\ viewport\: :ref:`RID<class_RID>`\ ) |virtual| |
  52. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  53. | |void| | :ref:`_on_pre_draw_viewport<class_OpenXRExtensionWrapper_private_method__on_pre_draw_viewport>`\ (\ viewport\: :ref:`RID<class_RID>`\ ) |virtual| |
  54. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  55. | |void| | :ref:`_on_pre_render<class_OpenXRExtensionWrapper_private_method__on_pre_render>`\ (\ ) |virtual| |
  56. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  57. | |void| | :ref:`_on_process<class_OpenXRExtensionWrapper_private_method__on_process>`\ (\ ) |virtual| |
  58. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  59. | |void| | :ref:`_on_register_metadata<class_OpenXRExtensionWrapper_private_method__on_register_metadata>`\ (\ ) |virtual| |
  60. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  61. | |void| | :ref:`_on_session_created<class_OpenXRExtensionWrapper_private_method__on_session_created>`\ (\ session\: :ref:`int<class_int>`\ ) |virtual| |
  62. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  63. | |void| | :ref:`_on_session_destroyed<class_OpenXRExtensionWrapper_private_method__on_session_destroyed>`\ (\ ) |virtual| |
  64. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  65. | |void| | :ref:`_on_state_exiting<class_OpenXRExtensionWrapper_private_method__on_state_exiting>`\ (\ ) |virtual| |
  66. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  67. | |void| | :ref:`_on_state_focused<class_OpenXRExtensionWrapper_private_method__on_state_focused>`\ (\ ) |virtual| |
  68. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  69. | |void| | :ref:`_on_state_idle<class_OpenXRExtensionWrapper_private_method__on_state_idle>`\ (\ ) |virtual| |
  70. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  71. | |void| | :ref:`_on_state_loss_pending<class_OpenXRExtensionWrapper_private_method__on_state_loss_pending>`\ (\ ) |virtual| |
  72. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  73. | |void| | :ref:`_on_state_ready<class_OpenXRExtensionWrapper_private_method__on_state_ready>`\ (\ ) |virtual| |
  74. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  75. | |void| | :ref:`_on_state_stopping<class_OpenXRExtensionWrapper_private_method__on_state_stopping>`\ (\ ) |virtual| |
  76. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  77. | |void| | :ref:`_on_state_synchronized<class_OpenXRExtensionWrapper_private_method__on_state_synchronized>`\ (\ ) |virtual| |
  78. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  79. | |void| | :ref:`_on_state_visible<class_OpenXRExtensionWrapper_private_method__on_state_visible>`\ (\ ) |virtual| |
  80. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  81. | |void| | :ref:`_on_sync_actions<class_OpenXRExtensionWrapper_private_method__on_sync_actions>`\ (\ ) |virtual| |
  82. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  83. | |void| | :ref:`_on_viewport_composition_layer_destroyed<class_OpenXRExtensionWrapper_private_method__on_viewport_composition_layer_destroyed>`\ (\ layer\: ``const void*``\ ) |virtual| |
  84. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  85. | :ref:`int<class_int>` | :ref:`_set_android_surface_swapchain_create_info_and_get_next_pointer<class_OpenXRExtensionWrapper_private_method__set_android_surface_swapchain_create_info_and_get_next_pointer>`\ (\ property_values\: :ref:`Dictionary<class_Dictionary>`, next_pointer\: ``void*``\ ) |virtual| |
  86. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  87. | :ref:`int<class_int>` | :ref:`_set_frame_end_info_and_get_next_pointer<class_OpenXRExtensionWrapper_private_method__set_frame_end_info_and_get_next_pointer>`\ (\ next_pointer\: ``void*``\ ) |virtual| |
  88. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  89. | :ref:`int<class_int>` | :ref:`_set_frame_wait_info_and_get_next_pointer<class_OpenXRExtensionWrapper_private_method__set_frame_wait_info_and_get_next_pointer>`\ (\ next_pointer\: ``void*``\ ) |virtual| |
  90. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  91. | :ref:`int<class_int>` | :ref:`_set_hand_joint_locations_and_get_next_pointer<class_OpenXRExtensionWrapper_private_method__set_hand_joint_locations_and_get_next_pointer>`\ (\ hand_index\: :ref:`int<class_int>`, next_pointer\: ``void*``\ ) |virtual| |
  92. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  93. | :ref:`int<class_int>` | :ref:`_set_instance_create_info_and_get_next_pointer<class_OpenXRExtensionWrapper_private_method__set_instance_create_info_and_get_next_pointer>`\ (\ next_pointer\: ``void*``\ ) |virtual| |
  94. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  95. | :ref:`int<class_int>` | :ref:`_set_projection_views_and_get_next_pointer<class_OpenXRExtensionWrapper_private_method__set_projection_views_and_get_next_pointer>`\ (\ view_index\: :ref:`int<class_int>`, next_pointer\: ``void*``\ ) |virtual| |
  96. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  97. | :ref:`int<class_int>` | :ref:`_set_reference_space_create_info_and_get_next_pointer<class_OpenXRExtensionWrapper_private_method__set_reference_space_create_info_and_get_next_pointer>`\ (\ reference_space_type\: :ref:`int<class_int>`, next_pointer\: ``void*``\ ) |virtual| |
  98. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  99. | :ref:`int<class_int>` | :ref:`_set_session_create_and_get_next_pointer<class_OpenXRExtensionWrapper_private_method__set_session_create_and_get_next_pointer>`\ (\ next_pointer\: ``void*``\ ) |virtual| |
  100. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  101. | :ref:`int<class_int>` | :ref:`_set_swapchain_create_info_and_get_next_pointer<class_OpenXRExtensionWrapper_private_method__set_swapchain_create_info_and_get_next_pointer>`\ (\ next_pointer\: ``void*``\ ) |virtual| |
  102. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  103. | :ref:`int<class_int>` | :ref:`_set_system_properties_and_get_next_pointer<class_OpenXRExtensionWrapper_private_method__set_system_properties_and_get_next_pointer>`\ (\ next_pointer\: ``void*``\ ) |virtual| |
  104. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  105. | :ref:`int<class_int>` | :ref:`_set_view_locate_info_and_get_next_pointer<class_OpenXRExtensionWrapper_private_method__set_view_locate_info_and_get_next_pointer>`\ (\ next_pointer\: ``void*``\ ) |virtual| |
  106. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  107. | :ref:`int<class_int>` | :ref:`_set_viewport_composition_layer_and_get_next_pointer<class_OpenXRExtensionWrapper_private_method__set_viewport_composition_layer_and_get_next_pointer>`\ (\ layer\: ``const void*``, property_values\: :ref:`Dictionary<class_Dictionary>`, next_pointer\: ``void*``\ ) |virtual| |
  108. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  109. | :ref:`OpenXRAPIExtension<class_OpenXRAPIExtension>` | :ref:`get_openxr_api<class_OpenXRExtensionWrapper_method_get_openxr_api>`\ (\ ) |
  110. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  111. | |void| | :ref:`register_extension_wrapper<class_OpenXRExtensionWrapper_method_register_extension_wrapper>`\ (\ ) |
  112. +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  113. .. rst-class:: classref-section-separator
  114. ----
  115. .. rst-class:: classref-descriptions-group
  116. Method Descriptions
  117. -------------------
  118. .. _class_OpenXRExtensionWrapper_private_method__get_composition_layer:
  119. .. rst-class:: classref-method
  120. :ref:`int<class_int>` **_get_composition_layer**\ (\ index\: :ref:`int<class_int>`\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__get_composition_layer>`
  121. Returns a pointer to an ``XrCompositionLayerBaseHeader`` struct to provide the given composition layer.
  122. This will only be called if the extension previously registered itself with :ref:`OpenXRAPIExtension.register_composition_layer_provider()<class_OpenXRAPIExtension_method_register_composition_layer_provider>`.
  123. \ **Note:** This virtual method will be called on the render thread. Additionally, the data it returns will be used shortly after this method is called, so it needs to remain valid until the next time :ref:`_on_pre_render()<class_OpenXRExtensionWrapper_private_method__on_pre_render>` runs.
  124. .. rst-class:: classref-item-separator
  125. ----
  126. .. _class_OpenXRExtensionWrapper_private_method__get_composition_layer_count:
  127. .. rst-class:: classref-method
  128. :ref:`int<class_int>` **_get_composition_layer_count**\ (\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__get_composition_layer_count>`
  129. Returns the number of composition layers this extension wrapper provides via :ref:`_get_composition_layer()<class_OpenXRExtensionWrapper_private_method__get_composition_layer>`.
  130. This will only be called if the extension previously registered itself with :ref:`OpenXRAPIExtension.register_composition_layer_provider()<class_OpenXRAPIExtension_method_register_composition_layer_provider>`.
  131. \ **Note:** This virtual method will be called on the render thread. Additionally, the data it returns will be used shortly after this method is called, so it needs to remain valid until the next time :ref:`_on_pre_render()<class_OpenXRExtensionWrapper_private_method__on_pre_render>` runs.
  132. .. rst-class:: classref-item-separator
  133. ----
  134. .. _class_OpenXRExtensionWrapper_private_method__get_composition_layer_order:
  135. .. rst-class:: classref-method
  136. :ref:`int<class_int>` **_get_composition_layer_order**\ (\ index\: :ref:`int<class_int>`\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__get_composition_layer_order>`
  137. Returns an integer that will be used to sort the given composition layer provided via :ref:`_get_composition_layer()<class_OpenXRExtensionWrapper_private_method__get_composition_layer>`. Lower numbers will move the layer to the front of the list, and higher numbers to the end. The default projection layer has an order of ``0``, so layers provided by this method should probably be above or below (but not exactly) ``0``.
  138. This will only be called if the extension previously registered itself with :ref:`OpenXRAPIExtension.register_composition_layer_provider()<class_OpenXRAPIExtension_method_register_composition_layer_provider>`.
  139. \ **Note:** This virtual method will be called on the render thread. Additionally, the data it returns will be used shortly after this method is called, so it needs to remain valid until the next time :ref:`_on_pre_render()<class_OpenXRExtensionWrapper_private_method__on_pre_render>` runs.
  140. .. rst-class:: classref-item-separator
  141. ----
  142. .. _class_OpenXRExtensionWrapper_private_method__get_requested_extensions:
  143. .. rst-class:: classref-method
  144. :ref:`Dictionary<class_Dictionary>` **_get_requested_extensions**\ (\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__get_requested_extensions>`
  145. Returns a :ref:`Dictionary<class_Dictionary>` of OpenXR extensions related to this extension. The :ref:`Dictionary<class_Dictionary>` should contain the name of the extension, mapped to a ``bool *`` cast to an integer:
  146. - If the ``bool *`` is a ``nullptr`` this extension is mandatory.
  147. - If the ``bool *`` points to a boolean, the boolean will be updated to ``true`` if the extension is enabled.
  148. .. rst-class:: classref-item-separator
  149. ----
  150. .. _class_OpenXRExtensionWrapper_private_method__get_suggested_tracker_names:
  151. .. rst-class:: classref-method
  152. :ref:`PackedStringArray<class_PackedStringArray>` **_get_suggested_tracker_names**\ (\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__get_suggested_tracker_names>`
  153. Returns a :ref:`PackedStringArray<class_PackedStringArray>` of positional tracker names that are used within the extension wrapper.
  154. .. rst-class:: classref-item-separator
  155. ----
  156. .. _class_OpenXRExtensionWrapper_private_method__get_viewport_composition_layer_extension_properties:
  157. .. rst-class:: classref-method
  158. :ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] **_get_viewport_composition_layer_extension_properties**\ (\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__get_viewport_composition_layer_extension_properties>`
  159. Gets an array of :ref:`Dictionary<class_Dictionary>`\ s that represent properties, just like :ref:`Object._get_property_list()<class_Object_private_method__get_property_list>`, that will be added to :ref:`OpenXRCompositionLayer<class_OpenXRCompositionLayer>` nodes.
  160. \ **Note:** This virtual method will be called on the render thread.
  161. .. rst-class:: classref-item-separator
  162. ----
  163. .. _class_OpenXRExtensionWrapper_private_method__get_viewport_composition_layer_extension_property_defaults:
  164. .. rst-class:: classref-method
  165. :ref:`Dictionary<class_Dictionary>` **_get_viewport_composition_layer_extension_property_defaults**\ (\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__get_viewport_composition_layer_extension_property_defaults>`
  166. Gets a :ref:`Dictionary<class_Dictionary>` containing the default values for the properties returned by :ref:`_get_viewport_composition_layer_extension_properties()<class_OpenXRExtensionWrapper_private_method__get_viewport_composition_layer_extension_properties>`.
  167. .. rst-class:: classref-item-separator
  168. ----
  169. .. _class_OpenXRExtensionWrapper_private_method__on_before_instance_created:
  170. .. rst-class:: classref-method
  171. |void| **_on_before_instance_created**\ (\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__on_before_instance_created>`
  172. Called before the OpenXR instance is created.
  173. \ **Note:** This virtual method will be called on the main thread, however, it will be called *before* OpenXR becomes involved in rendering, so it is safe to write to data that will be used by the render thread.
  174. .. rst-class:: classref-item-separator
  175. ----
  176. .. _class_OpenXRExtensionWrapper_private_method__on_event_polled:
  177. .. rst-class:: classref-method
  178. :ref:`bool<class_bool>` **_on_event_polled**\ (\ event\: ``const void*``\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__on_event_polled>`
  179. Called when there is an OpenXR event to process. When implementing, return ``true`` if the event was handled, return ``false`` otherwise.
  180. .. rst-class:: classref-item-separator
  181. ----
  182. .. _class_OpenXRExtensionWrapper_private_method__on_instance_created:
  183. .. rst-class:: classref-method
  184. |void| **_on_instance_created**\ (\ instance\: :ref:`int<class_int>`\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__on_instance_created>`
  185. Called right after the OpenXR instance is created.
  186. \ **Note:** This virtual method will be called on the main thread, however, it will be called *before* OpenXR becomes involved in rendering, so it is safe to write to data that will be used by the render thread.
  187. .. rst-class:: classref-item-separator
  188. ----
  189. .. _class_OpenXRExtensionWrapper_private_method__on_instance_destroyed:
  190. .. rst-class:: classref-method
  191. |void| **_on_instance_destroyed**\ (\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__on_instance_destroyed>`
  192. Called right before the OpenXR instance is destroyed.
  193. \ **Note:** This virtual method will be called on the main thread, however, it will be called *after* OpenXR is done being involved in rendering, so it is safe to write to data that was used by the render thread.
  194. .. rst-class:: classref-item-separator
  195. ----
  196. .. _class_OpenXRExtensionWrapper_private_method__on_main_swapchains_created:
  197. .. rst-class:: classref-method
  198. |void| **_on_main_swapchains_created**\ (\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__on_main_swapchains_created>`
  199. Called right after the main swapchains are (re)created.
  200. \ **Note:** This virtual method will be called on the render thread.
  201. .. rst-class:: classref-item-separator
  202. ----
  203. .. _class_OpenXRExtensionWrapper_private_method__on_post_draw_viewport:
  204. .. rst-class:: classref-method
  205. |void| **_on_post_draw_viewport**\ (\ viewport\: :ref:`RID<class_RID>`\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__on_post_draw_viewport>`
  206. Called right after the given viewport is rendered.
  207. \ **Note:** The draw commands might only be queued at this point, not executed.
  208. \ **Note:** This virtual method will be called on the render thread.
  209. .. rst-class:: classref-item-separator
  210. ----
  211. .. _class_OpenXRExtensionWrapper_private_method__on_pre_draw_viewport:
  212. .. rst-class:: classref-method
  213. |void| **_on_pre_draw_viewport**\ (\ viewport\: :ref:`RID<class_RID>`\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__on_pre_draw_viewport>`
  214. Called right before the given viewport is rendered.
  215. \ **Note:** This virtual method will be called on the render thread.
  216. .. rst-class:: classref-item-separator
  217. ----
  218. .. _class_OpenXRExtensionWrapper_private_method__on_pre_render:
  219. .. rst-class:: classref-method
  220. |void| **_on_pre_render**\ (\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__on_pre_render>`
  221. Called right before the XR viewports begin their rendering step.
  222. \ **Note:** This virtual method will be called on the render thread.
  223. .. rst-class:: classref-item-separator
  224. ----
  225. .. _class_OpenXRExtensionWrapper_private_method__on_process:
  226. .. rst-class:: classref-method
  227. |void| **_on_process**\ (\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__on_process>`
  228. Called as part of the OpenXR process handling. This happens right before general and physics processing steps of the main loop. During this step controller data is queried and made available to game logic.
  229. .. rst-class:: classref-item-separator
  230. ----
  231. .. _class_OpenXRExtensionWrapper_private_method__on_register_metadata:
  232. .. rst-class:: classref-method
  233. |void| **_on_register_metadata**\ (\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__on_register_metadata>`
  234. Allows extensions to register additional controller metadata. This function is called even when the OpenXR API is not constructed as the metadata needs to be available to the editor.
  235. Extensions should also provide metadata regardless of whether they are supported on the host system. The controller data is used to setup action maps for users who may have access to the relevant hardware.
  236. .. rst-class:: classref-item-separator
  237. ----
  238. .. _class_OpenXRExtensionWrapper_private_method__on_session_created:
  239. .. rst-class:: classref-method
  240. |void| **_on_session_created**\ (\ session\: :ref:`int<class_int>`\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__on_session_created>`
  241. Called right after the OpenXR session is created.
  242. \ **Note:** This virtual method will be called on the main thread, however, it will be called *before* OpenXR becomes involved in rendering, so it is safe to write to data that will be used by the render thread.
  243. .. rst-class:: classref-item-separator
  244. ----
  245. .. _class_OpenXRExtensionWrapper_private_method__on_session_destroyed:
  246. .. rst-class:: classref-method
  247. |void| **_on_session_destroyed**\ (\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__on_session_destroyed>`
  248. Called right before the OpenXR session is destroyed.
  249. \ **Note:** This virtual method will be called on the main thread, however, it will be called *after* OpenXR is done being involved in rendering, so it is safe to write to data that was used by the render thread.
  250. .. rst-class:: classref-item-separator
  251. ----
  252. .. _class_OpenXRExtensionWrapper_private_method__on_state_exiting:
  253. .. rst-class:: classref-method
  254. |void| **_on_state_exiting**\ (\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__on_state_exiting>`
  255. Called when the OpenXR session state is changed to exiting.
  256. .. rst-class:: classref-item-separator
  257. ----
  258. .. _class_OpenXRExtensionWrapper_private_method__on_state_focused:
  259. .. rst-class:: classref-method
  260. |void| **_on_state_focused**\ (\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__on_state_focused>`
  261. Called when the OpenXR session state is changed to focused. This state is the active state when the game runs.
  262. .. rst-class:: classref-item-separator
  263. ----
  264. .. _class_OpenXRExtensionWrapper_private_method__on_state_idle:
  265. .. rst-class:: classref-method
  266. |void| **_on_state_idle**\ (\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__on_state_idle>`
  267. Called when the OpenXR session state is changed to idle.
  268. .. rst-class:: classref-item-separator
  269. ----
  270. .. _class_OpenXRExtensionWrapper_private_method__on_state_loss_pending:
  271. .. rst-class:: classref-method
  272. |void| **_on_state_loss_pending**\ (\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__on_state_loss_pending>`
  273. Called when the OpenXR session state is changed to loss pending.
  274. .. rst-class:: classref-item-separator
  275. ----
  276. .. _class_OpenXRExtensionWrapper_private_method__on_state_ready:
  277. .. rst-class:: classref-method
  278. |void| **_on_state_ready**\ (\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__on_state_ready>`
  279. Called when the OpenXR session state is changed to ready. This means OpenXR is ready to set up the session.
  280. .. rst-class:: classref-item-separator
  281. ----
  282. .. _class_OpenXRExtensionWrapper_private_method__on_state_stopping:
  283. .. rst-class:: classref-method
  284. |void| **_on_state_stopping**\ (\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__on_state_stopping>`
  285. Called when the OpenXR session state is changed to stopping.
  286. .. rst-class:: classref-item-separator
  287. ----
  288. .. _class_OpenXRExtensionWrapper_private_method__on_state_synchronized:
  289. .. rst-class:: classref-method
  290. |void| **_on_state_synchronized**\ (\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__on_state_synchronized>`
  291. Called when the OpenXR session state is changed to synchronized. OpenXR also returns to this state when the application loses focus.
  292. .. rst-class:: classref-item-separator
  293. ----
  294. .. _class_OpenXRExtensionWrapper_private_method__on_state_visible:
  295. .. rst-class:: classref-method
  296. |void| **_on_state_visible**\ (\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__on_state_visible>`
  297. Called when the OpenXR session state is changed to visible. This means OpenXR is now ready to receive frames.
  298. .. rst-class:: classref-item-separator
  299. ----
  300. .. _class_OpenXRExtensionWrapper_private_method__on_sync_actions:
  301. .. rst-class:: classref-method
  302. |void| **_on_sync_actions**\ (\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__on_sync_actions>`
  303. Called when OpenXR has performed its action sync.
  304. .. rst-class:: classref-item-separator
  305. ----
  306. .. _class_OpenXRExtensionWrapper_private_method__on_viewport_composition_layer_destroyed:
  307. .. rst-class:: classref-method
  308. |void| **_on_viewport_composition_layer_destroyed**\ (\ layer\: ``const void*``\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__on_viewport_composition_layer_destroyed>`
  309. Called when a composition layer created via :ref:`OpenXRCompositionLayer<class_OpenXRCompositionLayer>` is destroyed.
  310. \ ``layer`` is a pointer to an ``XrCompositionLayerBaseHeader`` struct.
  311. .. rst-class:: classref-item-separator
  312. ----
  313. .. _class_OpenXRExtensionWrapper_private_method__set_android_surface_swapchain_create_info_and_get_next_pointer:
  314. .. rst-class:: classref-method
  315. :ref:`int<class_int>` **_set_android_surface_swapchain_create_info_and_get_next_pointer**\ (\ property_values\: :ref:`Dictionary<class_Dictionary>`, next_pointer\: ``void*``\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__set_android_surface_swapchain_create_info_and_get_next_pointer>`
  316. Adds additional data structures to Android surface swapchains created by :ref:`OpenXRCompositionLayer<class_OpenXRCompositionLayer>`.
  317. \ ``property_values`` contains the values of the properties returned by :ref:`_get_viewport_composition_layer_extension_properties()<class_OpenXRExtensionWrapper_private_method__get_viewport_composition_layer_extension_properties>`.
  318. \ **Note:** This virtual method will be called on the render thread.
  319. .. rst-class:: classref-item-separator
  320. ----
  321. .. _class_OpenXRExtensionWrapper_private_method__set_frame_end_info_and_get_next_pointer:
  322. .. rst-class:: classref-method
  323. :ref:`int<class_int>` **_set_frame_end_info_and_get_next_pointer**\ (\ next_pointer\: ``void*``\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__set_frame_end_info_and_get_next_pointer>`
  324. Adds additional data structures to ``XrFrameEndInfo``.
  325. This will only be called if the extension previously registered itself with :ref:`OpenXRAPIExtension.register_frame_info_extension()<class_OpenXRAPIExtension_method_register_frame_info_extension>`.
  326. \ **Note:** This virtual method will be called on the render thread. Additionally, the data it returns will be used shortly after this method is called, so it needs to remain valid until the next time :ref:`_on_pre_render()<class_OpenXRExtensionWrapper_private_method__on_pre_render>` runs.
  327. .. rst-class:: classref-item-separator
  328. ----
  329. .. _class_OpenXRExtensionWrapper_private_method__set_frame_wait_info_and_get_next_pointer:
  330. .. rst-class:: classref-method
  331. :ref:`int<class_int>` **_set_frame_wait_info_and_get_next_pointer**\ (\ next_pointer\: ``void*``\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__set_frame_wait_info_and_get_next_pointer>`
  332. Adds additional data structures to ``XrFrameWaitInfo``.
  333. This will only be called if the extension previously registered itself with :ref:`OpenXRAPIExtension.register_frame_info_extension()<class_OpenXRAPIExtension_method_register_frame_info_extension>`.
  334. \ **Note:** This virtual method will be called on the render thread.
  335. .. rst-class:: classref-item-separator
  336. ----
  337. .. _class_OpenXRExtensionWrapper_private_method__set_hand_joint_locations_and_get_next_pointer:
  338. .. rst-class:: classref-method
  339. :ref:`int<class_int>` **_set_hand_joint_locations_and_get_next_pointer**\ (\ hand_index\: :ref:`int<class_int>`, next_pointer\: ``void*``\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__set_hand_joint_locations_and_get_next_pointer>`
  340. Adds additional data structures when each hand tracker is created.
  341. .. rst-class:: classref-item-separator
  342. ----
  343. .. _class_OpenXRExtensionWrapper_private_method__set_instance_create_info_and_get_next_pointer:
  344. .. rst-class:: classref-method
  345. :ref:`int<class_int>` **_set_instance_create_info_and_get_next_pointer**\ (\ next_pointer\: ``void*``\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__set_instance_create_info_and_get_next_pointer>`
  346. Adds additional data structures when the OpenXR instance is created.
  347. .. rst-class:: classref-item-separator
  348. ----
  349. .. _class_OpenXRExtensionWrapper_private_method__set_projection_views_and_get_next_pointer:
  350. .. rst-class:: classref-method
  351. :ref:`int<class_int>` **_set_projection_views_and_get_next_pointer**\ (\ view_index\: :ref:`int<class_int>`, next_pointer\: ``void*``\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__set_projection_views_and_get_next_pointer>`
  352. Adds additional data structures to the projection view of the given ``view_index``.
  353. \ **Note:** This virtual method will be called on the render thread. Additionally, the data it returns will be used shortly after this method is called, so it needs to remain valid until the next time :ref:`_on_pre_render()<class_OpenXRExtensionWrapper_private_method__on_pre_render>` runs.
  354. .. rst-class:: classref-item-separator
  355. ----
  356. .. _class_OpenXRExtensionWrapper_private_method__set_reference_space_create_info_and_get_next_pointer:
  357. .. rst-class:: classref-method
  358. :ref:`int<class_int>` **_set_reference_space_create_info_and_get_next_pointer**\ (\ reference_space_type\: :ref:`int<class_int>`, next_pointer\: ``void*``\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__set_reference_space_create_info_and_get_next_pointer>`
  359. Adds additional data structures to ``XrReferenceSpaceCreateInfo``.
  360. .. rst-class:: classref-item-separator
  361. ----
  362. .. _class_OpenXRExtensionWrapper_private_method__set_session_create_and_get_next_pointer:
  363. .. rst-class:: classref-method
  364. :ref:`int<class_int>` **_set_session_create_and_get_next_pointer**\ (\ next_pointer\: ``void*``\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__set_session_create_and_get_next_pointer>`
  365. Adds additional data structures when the OpenXR session is created.
  366. .. rst-class:: classref-item-separator
  367. ----
  368. .. _class_OpenXRExtensionWrapper_private_method__set_swapchain_create_info_and_get_next_pointer:
  369. .. rst-class:: classref-method
  370. :ref:`int<class_int>` **_set_swapchain_create_info_and_get_next_pointer**\ (\ next_pointer\: ``void*``\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__set_swapchain_create_info_and_get_next_pointer>`
  371. Adds additional data structures when creating OpenXR swapchains.
  372. .. rst-class:: classref-item-separator
  373. ----
  374. .. _class_OpenXRExtensionWrapper_private_method__set_system_properties_and_get_next_pointer:
  375. .. rst-class:: classref-method
  376. :ref:`int<class_int>` **_set_system_properties_and_get_next_pointer**\ (\ next_pointer\: ``void*``\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__set_system_properties_and_get_next_pointer>`
  377. Adds additional data structures when querying OpenXR system abilities.
  378. .. rst-class:: classref-item-separator
  379. ----
  380. .. _class_OpenXRExtensionWrapper_private_method__set_view_locate_info_and_get_next_pointer:
  381. .. rst-class:: classref-method
  382. :ref:`int<class_int>` **_set_view_locate_info_and_get_next_pointer**\ (\ next_pointer\: ``void*``\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__set_view_locate_info_and_get_next_pointer>`
  383. Adds additional data structures to ``XrViewLocateInfo``.
  384. This will only be called if the extension previously registered itself with :ref:`OpenXRAPIExtension.register_frame_info_extension()<class_OpenXRAPIExtension_method_register_frame_info_extension>`.
  385. \ **Note:** This virtual method will be called on the render thread. Additionally, the data it returns will be used shortly after this method is called, so it needs to remain valid until the next time :ref:`_on_pre_render()<class_OpenXRExtensionWrapper_private_method__on_pre_render>` runs.
  386. .. rst-class:: classref-item-separator
  387. ----
  388. .. _class_OpenXRExtensionWrapper_private_method__set_viewport_composition_layer_and_get_next_pointer:
  389. .. rst-class:: classref-method
  390. :ref:`int<class_int>` **_set_viewport_composition_layer_and_get_next_pointer**\ (\ layer\: ``const void*``, property_values\: :ref:`Dictionary<class_Dictionary>`, next_pointer\: ``void*``\ ) |virtual| :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_private_method__set_viewport_composition_layer_and_get_next_pointer>`
  391. Adds additional data structures to composition layers created by :ref:`OpenXRCompositionLayer<class_OpenXRCompositionLayer>`.
  392. \ ``property_values`` contains the values of the properties returned by :ref:`_get_viewport_composition_layer_extension_properties()<class_OpenXRExtensionWrapper_private_method__get_viewport_composition_layer_extension_properties>`.
  393. \ ``layer`` is a pointer to an ``XrCompositionLayerBaseHeader`` struct.
  394. \ **Note:** This virtual method will be called on the render thread. Additionally, the data it returns will be used shortly after this method is called, so it needs to remain valid until the next time :ref:`_on_pre_render()<class_OpenXRExtensionWrapper_private_method__on_pre_render>` runs.
  395. .. rst-class:: classref-item-separator
  396. ----
  397. .. _class_OpenXRExtensionWrapper_method_get_openxr_api:
  398. .. rst-class:: classref-method
  399. :ref:`OpenXRAPIExtension<class_OpenXRAPIExtension>` **get_openxr_api**\ (\ ) :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_method_get_openxr_api>`
  400. Returns the created :ref:`OpenXRAPIExtension<class_OpenXRAPIExtension>`, which can be used to access the OpenXR API.
  401. .. rst-class:: classref-item-separator
  402. ----
  403. .. _class_OpenXRExtensionWrapper_method_register_extension_wrapper:
  404. .. rst-class:: classref-method
  405. |void| **register_extension_wrapper**\ (\ ) :ref:`๐Ÿ”—<class_OpenXRExtensionWrapper_method_register_extension_wrapper>`
  406. Registers the extension. This should happen at core module initialization level.
  407. \ **Note:** This cannot be called once OpenXR has been initialized.
  408. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  409. .. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
  410. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  411. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  412. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  413. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  414. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
  415. .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`
  416. .. |void| replace:: :abbr:`void (No return value.)`