class_xrinterfaceextension.rst 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. :github_url: hide
  2. .. Generated automatically by doc/tools/make_rst.py in Godot's source tree.
  3. .. DO NOT EDIT THIS FILE, but the XRInterfaceExtension.xml source instead.
  4. .. The source is found in doc/classes or modules/<name>/doc_classes.
  5. .. _class_XRInterfaceExtension:
  6. XRInterfaceExtension
  7. ====================
  8. **Inherits:** :ref:`XRInterface<class_XRInterface>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
  9. Base class for XR interface extensions (plugins).
  10. Description
  11. -----------
  12. External XR interface plugins should inherit from this class.
  13. Methods
  14. -------
  15. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  16. | void | :ref:`_end_frame<class_XRInterfaceExtension_method__end_frame>` **(** **)** |virtual| |
  17. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  18. | :ref:`bool<class_bool>` | :ref:`_get_anchor_detection_is_enabled<class_XRInterfaceExtension_method__get_anchor_detection_is_enabled>` **(** **)** |virtual| |const| |
  19. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  20. | :ref:`int<class_int>` | :ref:`_get_camera_feed_id<class_XRInterfaceExtension_method__get_camera_feed_id>` **(** **)** |virtual| |const| |
  21. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  22. | :ref:`Transform3D<class_Transform3D>` | :ref:`_get_camera_transform<class_XRInterfaceExtension_method__get_camera_transform>` **(** **)** |virtual| |
  23. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  24. | :ref:`int<class_int>` | :ref:`_get_capabilities<class_XRInterfaceExtension_method__get_capabilities>` **(** **)** |virtual| |const| |
  25. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  26. | :ref:`StringName<class_StringName>` | :ref:`_get_name<class_XRInterfaceExtension_method__get_name>` **(** **)** |virtual| |const| |
  27. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  28. | :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`_get_play_area<class_XRInterfaceExtension_method__get_play_area>` **(** **)** |virtual| |const| |
  29. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  30. | :ref:`int<class_int>` | :ref:`_get_play_area_mode<class_XRInterfaceExtension_method__get_play_area_mode>` **(** **)** |virtual| |const| |
  31. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  32. | :ref:`PackedFloat64Array<class_PackedFloat64Array>` | :ref:`_get_projection_for_view<class_XRInterfaceExtension_method__get_projection_for_view>` **(** :ref:`int<class_int>` view, :ref:`float<class_float>` aspect, :ref:`float<class_float>` z_near, :ref:`float<class_float>` z_far **)** |virtual| |
  33. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  34. | :ref:`Vector2<class_Vector2>` | :ref:`_get_render_target_size<class_XRInterfaceExtension_method__get_render_target_size>` **(** **)** |virtual| |
  35. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  36. | :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`_get_suggested_pose_names<class_XRInterfaceExtension_method__get_suggested_pose_names>` **(** :ref:`StringName<class_StringName>` tracker_name **)** |virtual| |const| |
  37. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  38. | :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`_get_suggested_tracker_names<class_XRInterfaceExtension_method__get_suggested_tracker_names>` **(** **)** |virtual| |const| |
  39. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  40. | :ref:`int<class_int>` | :ref:`_get_tracking_status<class_XRInterfaceExtension_method__get_tracking_status>` **(** **)** |virtual| |const| |
  41. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  42. | :ref:`Transform3D<class_Transform3D>` | :ref:`_get_transform_for_view<class_XRInterfaceExtension_method__get_transform_for_view>` **(** :ref:`int<class_int>` view, :ref:`Transform3D<class_Transform3D>` cam_transform **)** |virtual| |
  43. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  44. | :ref:`int<class_int>` | :ref:`_get_view_count<class_XRInterfaceExtension_method__get_view_count>` **(** **)** |virtual| |
  45. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  46. | :ref:`bool<class_bool>` | :ref:`_initialize<class_XRInterfaceExtension_method__initialize>` **(** **)** |virtual| |
  47. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  48. | :ref:`bool<class_bool>` | :ref:`_is_initialized<class_XRInterfaceExtension_method__is_initialized>` **(** **)** |virtual| |const| |
  49. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  50. | void | :ref:`_notification<class_XRInterfaceExtension_method__notification>` **(** :ref:`int<class_int>` what **)** |virtual| |
  51. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  52. | void | :ref:`_post_draw_viewport<class_XRInterfaceExtension_method__post_draw_viewport>` **(** :ref:`RID<class_RID>` render_target, :ref:`Rect2<class_Rect2>` screen_rect **)** |virtual| |
  53. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  54. | :ref:`bool<class_bool>` | :ref:`_pre_draw_viewport<class_XRInterfaceExtension_method__pre_draw_viewport>` **(** :ref:`RID<class_RID>` render_target **)** |virtual| |
  55. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  56. | void | :ref:`_pre_render<class_XRInterfaceExtension_method__pre_render>` **(** **)** |virtual| |
  57. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  58. | void | :ref:`_process<class_XRInterfaceExtension_method__process>` **(** **)** |virtual| |
  59. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  60. | void | :ref:`_set_anchor_detection_is_enabled<class_XRInterfaceExtension_method__set_anchor_detection_is_enabled>` **(** :ref:`bool<class_bool>` enabled **)** |virtual| |
  61. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  62. | :ref:`bool<class_bool>` | :ref:`_set_play_area_mode<class_XRInterfaceExtension_method__set_play_area_mode>` **(** :ref:`int<class_int>` mode **)** |virtual| |const| |
  63. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  64. | :ref:`bool<class_bool>` | :ref:`_supports_play_area_mode<class_XRInterfaceExtension_method__supports_play_area_mode>` **(** :ref:`PlayAreaMode<enum_XRInterface_PlayAreaMode>` mode **)** |virtual| |const| |
  65. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  66. | void | :ref:`_trigger_haptic_pulse<class_XRInterfaceExtension_method__trigger_haptic_pulse>` **(** :ref:`String<class_String>` action_name, :ref:`StringName<class_StringName>` tracker_name, :ref:`float<class_float>` frequency, :ref:`float<class_float>` amplitude, :ref:`float<class_float>` duration_sec, :ref:`float<class_float>` delay_sec **)** |virtual| |
  67. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  68. | void | :ref:`_uninitialize<class_XRInterfaceExtension_method__uninitialize>` **(** **)** |virtual| |
  69. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  70. | void | :ref:`add_blit<class_XRInterfaceExtension_method_add_blit>` **(** :ref:`RID<class_RID>` render_target, :ref:`Rect2<class_Rect2>` src_rect, :ref:`Rect2i<class_Rect2i>` dst_rect, :ref:`bool<class_bool>` use_layer, :ref:`int<class_int>` layer, :ref:`bool<class_bool>` apply_lens_distortion, :ref:`Vector2<class_Vector2>` eye_center, :ref:`float<class_float>` k1, :ref:`float<class_float>` k2, :ref:`float<class_float>` upscale, :ref:`float<class_float>` aspect_ratio **)** |
  71. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  72. | :ref:`RID<class_RID>` | :ref:`get_render_target_texture<class_XRInterfaceExtension_method_get_render_target_texture>` **(** :ref:`RID<class_RID>` render_target **)** |
  73. +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  74. Method Descriptions
  75. -------------------
  76. .. _class_XRInterfaceExtension_method__end_frame:
  77. - void **_end_frame** **(** **)** |virtual|
  78. Called if interface is active and queues have been submitted.
  79. ----
  80. .. _class_XRInterfaceExtension_method__get_anchor_detection_is_enabled:
  81. - :ref:`bool<class_bool>` **_get_anchor_detection_is_enabled** **(** **)** |virtual| |const|
  82. Return ``true`` if anchor detection is enabled for this interface.
  83. ----
  84. .. _class_XRInterfaceExtension_method__get_camera_feed_id:
  85. - :ref:`int<class_int>` **_get_camera_feed_id** **(** **)** |virtual| |const|
  86. Returns the camera feed id for the :ref:`CameraFeed<class_CameraFeed>` registered with the :ref:`CameraServer<class_CameraServer>` that should be presented as the background on an AR capable device (if applicable).
  87. ----
  88. .. _class_XRInterfaceExtension_method__get_camera_transform:
  89. - :ref:`Transform3D<class_Transform3D>` **_get_camera_transform** **(** **)** |virtual|
  90. Returns the :ref:`Transform3D<class_Transform3D>` that positions the :ref:`XRCamera3D<class_XRCamera3D>` in the world.
  91. ----
  92. .. _class_XRInterfaceExtension_method__get_capabilities:
  93. - :ref:`int<class_int>` **_get_capabilities** **(** **)** |virtual| |const|
  94. Returns the capabilities of this interface.
  95. ----
  96. .. _class_XRInterfaceExtension_method__get_name:
  97. - :ref:`StringName<class_StringName>` **_get_name** **(** **)** |virtual| |const|
  98. Returns the name of this interface.
  99. ----
  100. .. _class_XRInterfaceExtension_method__get_play_area:
  101. - :ref:`PackedVector3Array<class_PackedVector3Array>` **_get_play_area** **(** **)** |virtual| |const|
  102. Returns an :ref:`PackedVector3Array<class_PackedVector3Array>` that denotes the play areas boundaries (if applicable).
  103. ----
  104. .. _class_XRInterfaceExtension_method__get_play_area_mode:
  105. - :ref:`int<class_int>` **_get_play_area_mode** **(** **)** |virtual| |const|
  106. Returns the :ref:`PlayAreaMode<enum_XRInterface_PlayAreaMode>` that sets up our play area.
  107. ----
  108. .. _class_XRInterfaceExtension_method__get_projection_for_view:
  109. - :ref:`PackedFloat64Array<class_PackedFloat64Array>` **_get_projection_for_view** **(** :ref:`int<class_int>` view, :ref:`float<class_float>` aspect, :ref:`float<class_float>` z_near, :ref:`float<class_float>` z_far **)** |virtual|
  110. Returns the projection matrix for the given view as a :ref:`PackedFloat64Array<class_PackedFloat64Array>`.
  111. ----
  112. .. _class_XRInterfaceExtension_method__get_render_target_size:
  113. - :ref:`Vector2<class_Vector2>` **_get_render_target_size** **(** **)** |virtual|
  114. Returns the size of our render target for this interface, this overrides the size of the :ref:`Viewport<class_Viewport>` marked as the xr viewport.
  115. ----
  116. .. _class_XRInterfaceExtension_method__get_suggested_pose_names:
  117. - :ref:`PackedStringArray<class_PackedStringArray>` **_get_suggested_pose_names** **(** :ref:`StringName<class_StringName>` tracker_name **)** |virtual| |const|
  118. Returns a :ref:`PackedStringArray<class_PackedStringArray>` with pose names configured by this interface. Note that user configuration can override this list.
  119. ----
  120. .. _class_XRInterfaceExtension_method__get_suggested_tracker_names:
  121. - :ref:`PackedStringArray<class_PackedStringArray>` **_get_suggested_tracker_names** **(** **)** |virtual| |const|
  122. Returns a :ref:`PackedStringArray<class_PackedStringArray>` with tracker names configured by this interface. Note that user configuration can override this list.
  123. ----
  124. .. _class_XRInterfaceExtension_method__get_tracking_status:
  125. - :ref:`int<class_int>` **_get_tracking_status** **(** **)** |virtual| |const|
  126. Returns a :ref:`TrackingStatus<enum_XRInterface_TrackingStatus>` specifying the current status of our tracking.
  127. ----
  128. .. _class_XRInterfaceExtension_method__get_transform_for_view:
  129. - :ref:`Transform3D<class_Transform3D>` **_get_transform_for_view** **(** :ref:`int<class_int>` view, :ref:`Transform3D<class_Transform3D>` cam_transform **)** |virtual|
  130. Returns a :ref:`Transform3D<class_Transform3D>` for a given view.
  131. ----
  132. .. _class_XRInterfaceExtension_method__get_view_count:
  133. - :ref:`int<class_int>` **_get_view_count** **(** **)** |virtual|
  134. Returns the number of views this interface requires, 1 for mono, 2 for stereoscopic.
  135. ----
  136. .. _class_XRInterfaceExtension_method__initialize:
  137. - :ref:`bool<class_bool>` **_initialize** **(** **)** |virtual|
  138. Initializes the interface, returns ``true`` on success.
  139. ----
  140. .. _class_XRInterfaceExtension_method__is_initialized:
  141. - :ref:`bool<class_bool>` **_is_initialized** **(** **)** |virtual| |const|
  142. Returns ``true`` if this interface has been initialised.
  143. ----
  144. .. _class_XRInterfaceExtension_method__notification:
  145. - void **_notification** **(** :ref:`int<class_int>` what **)** |virtual|
  146. Informs the interface of an applicable system notification.
  147. ----
  148. .. _class_XRInterfaceExtension_method__post_draw_viewport:
  149. - void **_post_draw_viewport** **(** :ref:`RID<class_RID>` render_target, :ref:`Rect2<class_Rect2>` screen_rect **)** |virtual|
  150. Called after the XR :ref:`Viewport<class_Viewport>` draw logic has completed.
  151. ----
  152. .. _class_XRInterfaceExtension_method__pre_draw_viewport:
  153. - :ref:`bool<class_bool>` **_pre_draw_viewport** **(** :ref:`RID<class_RID>` render_target **)** |virtual|
  154. Called if this is our primary ``XRInterfaceExtension`` before we start processing a :ref:`Viewport<class_Viewport>` for every active XR :ref:`Viewport<class_Viewport>`, returns ``true`` if that viewport should be rendered. An XR interface may return ``false`` if the user has taken off their headset and we can pause rendering.
  155. ----
  156. .. _class_XRInterfaceExtension_method__pre_render:
  157. - void **_pre_render** **(** **)** |virtual|
  158. Called if this ``XRInterfaceExtension`` is active before rendering starts, most XR interfaces will sync tracking at this point in time.
  159. ----
  160. .. _class_XRInterfaceExtension_method__process:
  161. - void **_process** **(** **)** |virtual|
  162. Called if this ``XRInterfaceExtension`` is active before our physics and game process is called. most XR interfaces will update its :ref:`XRPositionalTracker<class_XRPositionalTracker>`\ s at this point in time.
  163. ----
  164. .. _class_XRInterfaceExtension_method__set_anchor_detection_is_enabled:
  165. - void **_set_anchor_detection_is_enabled** **(** :ref:`bool<class_bool>` enabled **)** |virtual|
  166. Enables anchor detection on this interface if supported.
  167. ----
  168. .. _class_XRInterfaceExtension_method__set_play_area_mode:
  169. - :ref:`bool<class_bool>` **_set_play_area_mode** **(** :ref:`int<class_int>` mode **)** |virtual| |const|
  170. Set the play area mode for this interface.
  171. ----
  172. .. _class_XRInterfaceExtension_method__supports_play_area_mode:
  173. - :ref:`bool<class_bool>` **_supports_play_area_mode** **(** :ref:`PlayAreaMode<enum_XRInterface_PlayAreaMode>` mode **)** |virtual| |const|
  174. Returns ``true`` if this interface supports this play area mode.
  175. ----
  176. .. _class_XRInterfaceExtension_method__trigger_haptic_pulse:
  177. - void **_trigger_haptic_pulse** **(** :ref:`String<class_String>` action_name, :ref:`StringName<class_StringName>` tracker_name, :ref:`float<class_float>` frequency, :ref:`float<class_float>` amplitude, :ref:`float<class_float>` duration_sec, :ref:`float<class_float>` delay_sec **)** |virtual|
  178. Triggers a haptic pulse to be emitted on the specified tracker.
  179. ----
  180. .. _class_XRInterfaceExtension_method__uninitialize:
  181. - void **_uninitialize** **(** **)** |virtual|
  182. Uninitialize the interface.
  183. ----
  184. .. _class_XRInterfaceExtension_method_add_blit:
  185. - void **add_blit** **(** :ref:`RID<class_RID>` render_target, :ref:`Rect2<class_Rect2>` src_rect, :ref:`Rect2i<class_Rect2i>` dst_rect, :ref:`bool<class_bool>` use_layer, :ref:`int<class_int>` layer, :ref:`bool<class_bool>` apply_lens_distortion, :ref:`Vector2<class_Vector2>` eye_center, :ref:`float<class_float>` k1, :ref:`float<class_float>` k2, :ref:`float<class_float>` upscale, :ref:`float<class_float>` aspect_ratio **)**
  186. Blits our render results to screen optionally applying lens distortion. This can only be called while processing ``_commit_views``.
  187. ----
  188. .. _class_XRInterfaceExtension_method_get_render_target_texture:
  189. - :ref:`RID<class_RID>` **get_render_target_texture** **(** :ref:`RID<class_RID>` render_target **)**
  190. Returns a valid :ref:`RID<class_RID>` for a texture to which we should render the current frame if supported by the interface.
  191. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  192. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  193. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  194. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  195. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  196. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`