class_portal.rst 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  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/3.5/doc/tools/make_rst.py.
  5. .. XML source: https://github.com/godotengine/godot/tree/3.5/doc/classes/Portal.xml.
  6. .. _class_Portal:
  7. Portal
  8. ======
  9. **Inherits:** :ref:`Spatial<class_Spatial>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
  10. Portal nodes are used to enable visibility between :ref:`Room<class_Room>`\ s.
  11. .. rst-class:: classref-introduction-group
  12. Description
  13. -----------
  14. **Portal**\ s are a special type of :ref:`MeshInstance<class_MeshInstance>` that allow the portal culling system to 'see' from one room to the next. They often correspond to doors and windows in level geometry. By only allowing :ref:`Camera<class_Camera>`\ s to see through portals, this allows the system to cull out all the objects in rooms that cannot be seen through portals. This is a form of **occlusion culling**, and can greatly increase performance.
  15. There are some limitations to the form of portals:
  16. They must be single sided convex polygons, and usually you would orientate their front faces **outward** from the :ref:`Room<class_Room>` they are placed in. The vertices should be positioned on a single plane (although their positioning does not have to be perfect).
  17. There is no need to place an opposite portal in an adjacent room, links are made two-way automatically.
  18. .. rst-class:: classref-reftable-group
  19. Properties
  20. ----------
  21. .. table::
  22. :widths: auto
  23. +-------------------------------------------------+---------------------------------------------------------------------+----------------------------------------------------+
  24. | :ref:`NodePath<class_NodePath>` | :ref:`linked_room<class_Portal_property_linked_room>` | ``NodePath("")`` |
  25. +-------------------------------------------------+---------------------------------------------------------------------+----------------------------------------------------+
  26. | :ref:`PoolVector2Array<class_PoolVector2Array>` | :ref:`points<class_Portal_property_points>` | ``PoolVector2Array( 1, -1, 1, 1, -1, 1, -1, -1 )`` |
  27. +-------------------------------------------------+---------------------------------------------------------------------+----------------------------------------------------+
  28. | :ref:`bool<class_bool>` | :ref:`portal_active<class_Portal_property_portal_active>` | ``true`` |
  29. +-------------------------------------------------+---------------------------------------------------------------------+----------------------------------------------------+
  30. | :ref:`float<class_float>` | :ref:`portal_margin<class_Portal_property_portal_margin>` | ``1.0`` |
  31. +-------------------------------------------------+---------------------------------------------------------------------+----------------------------------------------------+
  32. | :ref:`bool<class_bool>` | :ref:`two_way<class_Portal_property_two_way>` | ``true`` |
  33. +-------------------------------------------------+---------------------------------------------------------------------+----------------------------------------------------+
  34. | :ref:`bool<class_bool>` | :ref:`use_default_margin<class_Portal_property_use_default_margin>` | ``true`` |
  35. +-------------------------------------------------+---------------------------------------------------------------------+----------------------------------------------------+
  36. .. rst-class:: classref-reftable-group
  37. Methods
  38. -------
  39. .. table::
  40. :widths: auto
  41. +------+---------------------------------------------------------------------------------------------------------------------------------+
  42. | void | :ref:`set_point<class_Portal_method_set_point>` **(** :ref:`int<class_int>` index, :ref:`Vector2<class_Vector2>` position **)** |
  43. +------+---------------------------------------------------------------------------------------------------------------------------------+
  44. .. rst-class:: classref-section-separator
  45. ----
  46. .. rst-class:: classref-descriptions-group
  47. Property Descriptions
  48. ---------------------
  49. .. _class_Portal_property_linked_room:
  50. .. rst-class:: classref-property
  51. :ref:`NodePath<class_NodePath>` **linked_room** = ``NodePath("")``
  52. .. rst-class:: classref-property-setget
  53. - void **set_linked_room** **(** :ref:`NodePath<class_NodePath>` value **)**
  54. - :ref:`NodePath<class_NodePath>` **get_linked_room** **(** **)**
  55. This is a shortcut for setting the linked :ref:`Room<class_Room>` in the name of the **Portal** (the name is used during conversion).
  56. .. rst-class:: classref-item-separator
  57. ----
  58. .. _class_Portal_property_points:
  59. .. rst-class:: classref-property
  60. :ref:`PoolVector2Array<class_PoolVector2Array>` **points** = ``PoolVector2Array( 1, -1, 1, 1, -1, 1, -1, -1 )``
  61. .. rst-class:: classref-property-setget
  62. - void **set_points** **(** :ref:`PoolVector2Array<class_PoolVector2Array>` value **)**
  63. - :ref:`PoolVector2Array<class_PoolVector2Array>` **get_points** **(** **)**
  64. The points defining the shape of the **Portal** polygon (which should be convex).
  65. These are defined in 2D, with ``0,0`` being the origin of the **Portal** node's :ref:`Spatial.global_transform<class_Spatial_property_global_transform>`.
  66. \ **Note:** These raw points are sanitized for winding order internally.
  67. .. rst-class:: classref-item-separator
  68. ----
  69. .. _class_Portal_property_portal_active:
  70. .. rst-class:: classref-property
  71. :ref:`bool<class_bool>` **portal_active** = ``true``
  72. .. rst-class:: classref-property-setget
  73. - void **set_portal_active** **(** :ref:`bool<class_bool>` value **)**
  74. - :ref:`bool<class_bool>` **get_portal_active** **(** **)**
  75. Visibility through **Portal**\ s can be turned on and off at runtime - this is useful for having closable doors.
  76. .. rst-class:: classref-item-separator
  77. ----
  78. .. _class_Portal_property_portal_margin:
  79. .. rst-class:: classref-property
  80. :ref:`float<class_float>` **portal_margin** = ``1.0``
  81. .. rst-class:: classref-property-setget
  82. - void **set_portal_margin** **(** :ref:`float<class_float>` value **)**
  83. - :ref:`float<class_float>` **get_portal_margin** **(** **)**
  84. Some objects are so big that they may be present in more than one :ref:`Room<class_Room>` ('sprawling'). As we often don't want objects that \*just\* breach the edges to be assigned to neighbouring rooms, you can assign an extra margin through the **Portal** to allow objects to breach without sprawling.
  85. .. rst-class:: classref-item-separator
  86. ----
  87. .. _class_Portal_property_two_way:
  88. .. rst-class:: classref-property
  89. :ref:`bool<class_bool>` **two_way** = ``true``
  90. .. rst-class:: classref-property-setget
  91. - void **set_two_way** **(** :ref:`bool<class_bool>` value **)**
  92. - :ref:`bool<class_bool>` **is_two_way** **(** **)**
  93. Portals default to being two way - see through in both directions, however you can make them one way, visible from the source room only.
  94. .. rst-class:: classref-item-separator
  95. ----
  96. .. _class_Portal_property_use_default_margin:
  97. .. rst-class:: classref-property
  98. :ref:`bool<class_bool>` **use_default_margin** = ``true``
  99. .. rst-class:: classref-property-setget
  100. - void **set_use_default_margin** **(** :ref:`bool<class_bool>` value **)**
  101. - :ref:`bool<class_bool>` **get_use_default_margin** **(** **)**
  102. In most cases you will want to use the default **Portal** margin in your portals (this is set in the :ref:`RoomManager<class_RoomManager>`).
  103. If you want to override this default, set this value to ``false``, and the local :ref:`portal_margin<class_Portal_property_portal_margin>` will take effect.
  104. .. rst-class:: classref-section-separator
  105. ----
  106. .. rst-class:: classref-descriptions-group
  107. Method Descriptions
  108. -------------------
  109. .. _class_Portal_method_set_point:
  110. .. rst-class:: classref-method
  111. void **set_point** **(** :ref:`int<class_int>` index, :ref:`Vector2<class_Vector2>` position **)**
  112. Sets individual points. Primarily for use by the editor.
  113. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  114. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  115. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  116. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`