class_gpuparticles2d.rst 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628
  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/4.0/doc/tools/make_rst.py.
  5. .. XML source: https://github.com/godotengine/godot/tree/4.0/doc/classes/GPUParticles2D.xml.
  6. .. _class_GPUParticles2D:
  7. GPUParticles2D
  8. ==============
  9. **Inherits:** :ref:`Node2D<class_Node2D>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
  10. 2D particle emitter.
  11. .. rst-class:: classref-introduction-group
  12. Description
  13. -----------
  14. 2D particle node used to create a variety of particle systems and effects. **GPUParticles2D** features an emitter that generates some number of particles at a given rate.
  15. Use the :ref:`process_material<class_GPUParticles2D_property_process_material>` property to add a :ref:`ParticleProcessMaterial<class_ParticleProcessMaterial>` to configure particle appearance and behavior. Alternatively, you can add a :ref:`ShaderMaterial<class_ShaderMaterial>` which will be applied to all particles.
  16. 2D particles can optionally collide with :ref:`LightOccluder2D<class_LightOccluder2D>` nodes (note: they don't collide with :ref:`PhysicsBody2D<class_PhysicsBody2D>` nodes).
  17. .. rst-class:: classref-introduction-group
  18. Tutorials
  19. ---------
  20. - :doc:`Particle systems (2D) <../tutorials/2d/particle_systems_2d>`
  21. - `2D Particles Demo <https://godotengine.org/asset-library/asset/118>`__
  22. - `2D Dodge The Creeps Demo (uses GPUParticles2D for the trail behind the player) <https://godotengine.org/asset-library/asset/515>`__
  23. .. rst-class:: classref-reftable-group
  24. Properties
  25. ----------
  26. .. table::
  27. :widths: auto
  28. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  29. | :ref:`int<class_int>` | :ref:`amount<class_GPUParticles2D_property_amount>` | ``8`` |
  30. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  31. | :ref:`float<class_float>` | :ref:`collision_base_size<class_GPUParticles2D_property_collision_base_size>` | ``1.0`` |
  32. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  33. | :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` | :ref:`draw_order<class_GPUParticles2D_property_draw_order>` | ``1`` |
  34. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  35. | :ref:`bool<class_bool>` | :ref:`emitting<class_GPUParticles2D_property_emitting>` | ``true`` |
  36. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  37. | :ref:`float<class_float>` | :ref:`explosiveness<class_GPUParticles2D_property_explosiveness>` | ``0.0`` |
  38. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  39. | :ref:`int<class_int>` | :ref:`fixed_fps<class_GPUParticles2D_property_fixed_fps>` | ``30`` |
  40. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  41. | :ref:`bool<class_bool>` | :ref:`fract_delta<class_GPUParticles2D_property_fract_delta>` | ``true`` |
  42. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  43. | :ref:`bool<class_bool>` | :ref:`interpolate<class_GPUParticles2D_property_interpolate>` | ``true`` |
  44. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  45. | :ref:`float<class_float>` | :ref:`lifetime<class_GPUParticles2D_property_lifetime>` | ``1.0`` |
  46. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  47. | :ref:`bool<class_bool>` | :ref:`local_coords<class_GPUParticles2D_property_local_coords>` | ``false`` |
  48. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  49. | :ref:`bool<class_bool>` | :ref:`one_shot<class_GPUParticles2D_property_one_shot>` | ``false`` |
  50. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  51. | :ref:`float<class_float>` | :ref:`preprocess<class_GPUParticles2D_property_preprocess>` | ``0.0`` |
  52. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  53. | :ref:`Material<class_Material>` | :ref:`process_material<class_GPUParticles2D_property_process_material>` | |
  54. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  55. | :ref:`float<class_float>` | :ref:`randomness<class_GPUParticles2D_property_randomness>` | ``0.0`` |
  56. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  57. | :ref:`float<class_float>` | :ref:`speed_scale<class_GPUParticles2D_property_speed_scale>` | ``1.0`` |
  58. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  59. | :ref:`NodePath<class_NodePath>` | :ref:`sub_emitter<class_GPUParticles2D_property_sub_emitter>` | ``NodePath("")`` |
  60. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  61. | :ref:`Texture2D<class_Texture2D>` | :ref:`texture<class_GPUParticles2D_property_texture>` | |
  62. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  63. | :ref:`bool<class_bool>` | :ref:`trail_enabled<class_GPUParticles2D_property_trail_enabled>` | ``false`` |
  64. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  65. | :ref:`float<class_float>` | :ref:`trail_lifetime<class_GPUParticles2D_property_trail_lifetime>` | ``0.3`` |
  66. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  67. | :ref:`int<class_int>` | :ref:`trail_section_subdivisions<class_GPUParticles2D_property_trail_section_subdivisions>` | ``4`` |
  68. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  69. | :ref:`int<class_int>` | :ref:`trail_sections<class_GPUParticles2D_property_trail_sections>` | ``8`` |
  70. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  71. | :ref:`Rect2<class_Rect2>` | :ref:`visibility_rect<class_GPUParticles2D_property_visibility_rect>` | ``Rect2(-100, -100, 200, 200)`` |
  72. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  73. .. rst-class:: classref-reftable-group
  74. Methods
  75. -------
  76. .. table::
  77. :widths: auto
  78. +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  79. | :ref:`Rect2<class_Rect2>` | :ref:`capture_rect<class_GPUParticles2D_method_capture_rect>` **(** **)** |const| |
  80. +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  81. | void | :ref:`emit_particle<class_GPUParticles2D_method_emit_particle>` **(** :ref:`Transform2D<class_Transform2D>` xform, :ref:`Vector2<class_Vector2>` velocity, :ref:`Color<class_Color>` color, :ref:`Color<class_Color>` custom, :ref:`int<class_int>` flags **)** |
  82. +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  83. | void | :ref:`restart<class_GPUParticles2D_method_restart>` **(** **)** |
  84. +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  85. .. rst-class:: classref-section-separator
  86. ----
  87. .. rst-class:: classref-descriptions-group
  88. Enumerations
  89. ------------
  90. .. _enum_GPUParticles2D_DrawOrder:
  91. .. rst-class:: classref-enumeration
  92. enum **DrawOrder**:
  93. .. _class_GPUParticles2D_constant_DRAW_ORDER_INDEX:
  94. .. rst-class:: classref-enumeration-constant
  95. :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **DRAW_ORDER_INDEX** = ``0``
  96. Particles are drawn in the order emitted.
  97. .. _class_GPUParticles2D_constant_DRAW_ORDER_LIFETIME:
  98. .. rst-class:: classref-enumeration-constant
  99. :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **DRAW_ORDER_LIFETIME** = ``1``
  100. Particles are drawn in order of remaining lifetime.
  101. .. _class_GPUParticles2D_constant_DRAW_ORDER_REVERSE_LIFETIME:
  102. .. rst-class:: classref-enumeration-constant
  103. :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **DRAW_ORDER_REVERSE_LIFETIME** = ``2``
  104. .. rst-class:: classref-item-separator
  105. ----
  106. .. _enum_GPUParticles2D_EmitFlags:
  107. .. rst-class:: classref-enumeration
  108. enum **EmitFlags**:
  109. .. _class_GPUParticles2D_constant_EMIT_FLAG_POSITION:
  110. .. rst-class:: classref-enumeration-constant
  111. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_POSITION** = ``1``
  112. Particle starts at the specified position.
  113. .. _class_GPUParticles2D_constant_EMIT_FLAG_ROTATION_SCALE:
  114. .. rst-class:: classref-enumeration-constant
  115. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_ROTATION_SCALE** = ``2``
  116. Particle starts with specified rotation and scale.
  117. .. _class_GPUParticles2D_constant_EMIT_FLAG_VELOCITY:
  118. .. rst-class:: classref-enumeration-constant
  119. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_VELOCITY** = ``4``
  120. Particle starts with the specified velocity vector, which defines the emission direction and speed.
  121. .. _class_GPUParticles2D_constant_EMIT_FLAG_COLOR:
  122. .. rst-class:: classref-enumeration-constant
  123. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_COLOR** = ``8``
  124. Particle starts with specified color.
  125. .. _class_GPUParticles2D_constant_EMIT_FLAG_CUSTOM:
  126. .. rst-class:: classref-enumeration-constant
  127. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_CUSTOM** = ``16``
  128. Particle starts with specified ``CUSTOM`` data.
  129. .. rst-class:: classref-section-separator
  130. ----
  131. .. rst-class:: classref-descriptions-group
  132. Property Descriptions
  133. ---------------------
  134. .. _class_GPUParticles2D_property_amount:
  135. .. rst-class:: classref-property
  136. :ref:`int<class_int>` **amount** = ``8``
  137. .. rst-class:: classref-property-setget
  138. - void **set_amount** **(** :ref:`int<class_int>` value **)**
  139. - :ref:`int<class_int>` **get_amount** **(** **)**
  140. Number of particles emitted in one emission cycle.
  141. .. rst-class:: classref-item-separator
  142. ----
  143. .. _class_GPUParticles2D_property_collision_base_size:
  144. .. rst-class:: classref-property
  145. :ref:`float<class_float>` **collision_base_size** = ``1.0``
  146. .. rst-class:: classref-property-setget
  147. - void **set_collision_base_size** **(** :ref:`float<class_float>` value **)**
  148. - :ref:`float<class_float>` **get_collision_base_size** **(** **)**
  149. Multiplier for particle's collision radius. ``1.0`` corresponds to the size of the sprite.
  150. .. rst-class:: classref-item-separator
  151. ----
  152. .. _class_GPUParticles2D_property_draw_order:
  153. .. rst-class:: classref-property
  154. :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **draw_order** = ``1``
  155. .. rst-class:: classref-property-setget
  156. - void **set_draw_order** **(** :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` value **)**
  157. - :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **get_draw_order** **(** **)**
  158. Particle draw order. Uses :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` values.
  159. .. rst-class:: classref-item-separator
  160. ----
  161. .. _class_GPUParticles2D_property_emitting:
  162. .. rst-class:: classref-property
  163. :ref:`bool<class_bool>` **emitting** = ``true``
  164. .. rst-class:: classref-property-setget
  165. - void **set_emitting** **(** :ref:`bool<class_bool>` value **)**
  166. - :ref:`bool<class_bool>` **is_emitting** **(** **)**
  167. If ``true``, particles are being emitted.
  168. .. rst-class:: classref-item-separator
  169. ----
  170. .. _class_GPUParticles2D_property_explosiveness:
  171. .. rst-class:: classref-property
  172. :ref:`float<class_float>` **explosiveness** = ``0.0``
  173. .. rst-class:: classref-property-setget
  174. - void **set_explosiveness_ratio** **(** :ref:`float<class_float>` value **)**
  175. - :ref:`float<class_float>` **get_explosiveness_ratio** **(** **)**
  176. How rapidly particles in an emission cycle are emitted. If greater than ``0``, there will be a gap in emissions before the next cycle begins.
  177. .. rst-class:: classref-item-separator
  178. ----
  179. .. _class_GPUParticles2D_property_fixed_fps:
  180. .. rst-class:: classref-property
  181. :ref:`int<class_int>` **fixed_fps** = ``30``
  182. .. rst-class:: classref-property-setget
  183. - void **set_fixed_fps** **(** :ref:`int<class_int>` value **)**
  184. - :ref:`int<class_int>` **get_fixed_fps** **(** **)**
  185. The particle system's frame rate is fixed to a value. For example, changing the value to 2 will make the particles render at 2 frames per second. Note this does not slow down the simulation of the particle system itself.
  186. .. rst-class:: classref-item-separator
  187. ----
  188. .. _class_GPUParticles2D_property_fract_delta:
  189. .. rst-class:: classref-property
  190. :ref:`bool<class_bool>` **fract_delta** = ``true``
  191. .. rst-class:: classref-property-setget
  192. - void **set_fractional_delta** **(** :ref:`bool<class_bool>` value **)**
  193. - :ref:`bool<class_bool>` **get_fractional_delta** **(** **)**
  194. If ``true``, results in fractional delta calculation which has a smoother particles display effect.
  195. .. rst-class:: classref-item-separator
  196. ----
  197. .. _class_GPUParticles2D_property_interpolate:
  198. .. rst-class:: classref-property
  199. :ref:`bool<class_bool>` **interpolate** = ``true``
  200. .. rst-class:: classref-property-setget
  201. - void **set_interpolate** **(** :ref:`bool<class_bool>` value **)**
  202. - :ref:`bool<class_bool>` **get_interpolate** **(** **)**
  203. Enables particle interpolation, which makes the particle movement smoother when their :ref:`fixed_fps<class_GPUParticles2D_property_fixed_fps>` is lower than the screen refresh rate.
  204. .. rst-class:: classref-item-separator
  205. ----
  206. .. _class_GPUParticles2D_property_lifetime:
  207. .. rst-class:: classref-property
  208. :ref:`float<class_float>` **lifetime** = ``1.0``
  209. .. rst-class:: classref-property-setget
  210. - void **set_lifetime** **(** :ref:`float<class_float>` value **)**
  211. - :ref:`float<class_float>` **get_lifetime** **(** **)**
  212. Amount of time each particle will exist.
  213. .. rst-class:: classref-item-separator
  214. ----
  215. .. _class_GPUParticles2D_property_local_coords:
  216. .. rst-class:: classref-property
  217. :ref:`bool<class_bool>` **local_coords** = ``false``
  218. .. rst-class:: classref-property-setget
  219. - void **set_use_local_coordinates** **(** :ref:`bool<class_bool>` value **)**
  220. - :ref:`bool<class_bool>` **get_use_local_coordinates** **(** **)**
  221. If ``true``, particles use the parent node's coordinate space (known as local coordinates). This will cause particles to move and rotate along the **GPUParticles2D** node (and its parents) when it is moved or rotated. If ``false``, particles use global coordinates; they will not move or rotate along the **GPUParticles2D** node (and its parents) when it is moved or rotated.
  222. .. rst-class:: classref-item-separator
  223. ----
  224. .. _class_GPUParticles2D_property_one_shot:
  225. .. rst-class:: classref-property
  226. :ref:`bool<class_bool>` **one_shot** = ``false``
  227. .. rst-class:: classref-property-setget
  228. - void **set_one_shot** **(** :ref:`bool<class_bool>` value **)**
  229. - :ref:`bool<class_bool>` **get_one_shot** **(** **)**
  230. If ``true``, only one emission cycle occurs. If set ``true`` during a cycle, emission will stop at the cycle's end.
  231. .. rst-class:: classref-item-separator
  232. ----
  233. .. _class_GPUParticles2D_property_preprocess:
  234. .. rst-class:: classref-property
  235. :ref:`float<class_float>` **preprocess** = ``0.0``
  236. .. rst-class:: classref-property-setget
  237. - void **set_pre_process_time** **(** :ref:`float<class_float>` value **)**
  238. - :ref:`float<class_float>` **get_pre_process_time** **(** **)**
  239. Particle system starts as if it had already run for this many seconds.
  240. .. rst-class:: classref-item-separator
  241. ----
  242. .. _class_GPUParticles2D_property_process_material:
  243. .. rst-class:: classref-property
  244. :ref:`Material<class_Material>` **process_material**
  245. .. rst-class:: classref-property-setget
  246. - void **set_process_material** **(** :ref:`Material<class_Material>` value **)**
  247. - :ref:`Material<class_Material>` **get_process_material** **(** **)**
  248. :ref:`Material<class_Material>` for processing particles. Can be a :ref:`ParticleProcessMaterial<class_ParticleProcessMaterial>` or a :ref:`ShaderMaterial<class_ShaderMaterial>`.
  249. .. rst-class:: classref-item-separator
  250. ----
  251. .. _class_GPUParticles2D_property_randomness:
  252. .. rst-class:: classref-property
  253. :ref:`float<class_float>` **randomness** = ``0.0``
  254. .. rst-class:: classref-property-setget
  255. - void **set_randomness_ratio** **(** :ref:`float<class_float>` value **)**
  256. - :ref:`float<class_float>` **get_randomness_ratio** **(** **)**
  257. Emission lifetime randomness ratio.
  258. .. rst-class:: classref-item-separator
  259. ----
  260. .. _class_GPUParticles2D_property_speed_scale:
  261. .. rst-class:: classref-property
  262. :ref:`float<class_float>` **speed_scale** = ``1.0``
  263. .. rst-class:: classref-property-setget
  264. - void **set_speed_scale** **(** :ref:`float<class_float>` value **)**
  265. - :ref:`float<class_float>` **get_speed_scale** **(** **)**
  266. Particle system's running speed scaling ratio. A value of ``0`` can be used to pause the particles.
  267. .. rst-class:: classref-item-separator
  268. ----
  269. .. _class_GPUParticles2D_property_sub_emitter:
  270. .. rst-class:: classref-property
  271. :ref:`NodePath<class_NodePath>` **sub_emitter** = ``NodePath("")``
  272. .. rst-class:: classref-property-setget
  273. - void **set_sub_emitter** **(** :ref:`NodePath<class_NodePath>` value **)**
  274. - :ref:`NodePath<class_NodePath>` **get_sub_emitter** **(** **)**
  275. The :ref:`NodePath<class_NodePath>` to the **GPUParticles2D** used for sub-emissions.
  276. .. rst-class:: classref-item-separator
  277. ----
  278. .. _class_GPUParticles2D_property_texture:
  279. .. rst-class:: classref-property
  280. :ref:`Texture2D<class_Texture2D>` **texture**
  281. .. rst-class:: classref-property-setget
  282. - void **set_texture** **(** :ref:`Texture2D<class_Texture2D>` value **)**
  283. - :ref:`Texture2D<class_Texture2D>` **get_texture** **(** **)**
  284. Particle texture. If ``null``, particles will be squares.
  285. .. rst-class:: classref-item-separator
  286. ----
  287. .. _class_GPUParticles2D_property_trail_enabled:
  288. .. rst-class:: classref-property
  289. :ref:`bool<class_bool>` **trail_enabled** = ``false``
  290. .. rst-class:: classref-property-setget
  291. - void **set_trail_enabled** **(** :ref:`bool<class_bool>` value **)**
  292. - :ref:`bool<class_bool>` **is_trail_enabled** **(** **)**
  293. If ``true``, enables particle trails using a mesh skinning system.
  294. \ **Note:** Unlike :ref:`GPUParticles3D<class_GPUParticles3D>`, the number of trail sections and subdivisions is set with the :ref:`trail_sections<class_GPUParticles2D_property_trail_sections>` and :ref:`trail_section_subdivisions<class_GPUParticles2D_property_trail_section_subdivisions>` properties.
  295. .. rst-class:: classref-item-separator
  296. ----
  297. .. _class_GPUParticles2D_property_trail_lifetime:
  298. .. rst-class:: classref-property
  299. :ref:`float<class_float>` **trail_lifetime** = ``0.3``
  300. .. rst-class:: classref-property-setget
  301. - void **set_trail_lifetime** **(** :ref:`float<class_float>` value **)**
  302. - :ref:`float<class_float>` **get_trail_lifetime** **(** **)**
  303. The amount of time the particle's trail should represent (in seconds). Only effective if :ref:`trail_enabled<class_GPUParticles2D_property_trail_enabled>` is ``true``.
  304. .. rst-class:: classref-item-separator
  305. ----
  306. .. _class_GPUParticles2D_property_trail_section_subdivisions:
  307. .. rst-class:: classref-property
  308. :ref:`int<class_int>` **trail_section_subdivisions** = ``4``
  309. .. rst-class:: classref-property-setget
  310. - void **set_trail_section_subdivisions** **(** :ref:`int<class_int>` value **)**
  311. - :ref:`int<class_int>` **get_trail_section_subdivisions** **(** **)**
  312. The number of subdivisions to use for the particle trail rendering. Higher values can result in smoother trail curves, at the cost of performance due to increased mesh complexity. See also :ref:`trail_sections<class_GPUParticles2D_property_trail_sections>`. Only effective if :ref:`trail_enabled<class_GPUParticles2D_property_trail_enabled>` is ``true``.
  313. .. rst-class:: classref-item-separator
  314. ----
  315. .. _class_GPUParticles2D_property_trail_sections:
  316. .. rst-class:: classref-property
  317. :ref:`int<class_int>` **trail_sections** = ``8``
  318. .. rst-class:: classref-property-setget
  319. - void **set_trail_sections** **(** :ref:`int<class_int>` value **)**
  320. - :ref:`int<class_int>` **get_trail_sections** **(** **)**
  321. The number of sections to use for the particle trail rendering. Higher values can result in smoother trail curves, at the cost of performance due to increased mesh complexity. See also :ref:`trail_section_subdivisions<class_GPUParticles2D_property_trail_section_subdivisions>`. Only effective if :ref:`trail_enabled<class_GPUParticles2D_property_trail_enabled>` is ``true``.
  322. .. rst-class:: classref-item-separator
  323. ----
  324. .. _class_GPUParticles2D_property_visibility_rect:
  325. .. rst-class:: classref-property
  326. :ref:`Rect2<class_Rect2>` **visibility_rect** = ``Rect2(-100, -100, 200, 200)``
  327. .. rst-class:: classref-property-setget
  328. - void **set_visibility_rect** **(** :ref:`Rect2<class_Rect2>` value **)**
  329. - :ref:`Rect2<class_Rect2>` **get_visibility_rect** **(** **)**
  330. The :ref:`Rect2<class_Rect2>` that determines the node's region which needs to be visible on screen for the particle system to be active.
  331. Grow the rect if particles suddenly appear/disappear when the node enters/exits the screen. The :ref:`Rect2<class_Rect2>` can be grown via code or with the **Particles → Generate Visibility Rect** editor tool.
  332. .. rst-class:: classref-section-separator
  333. ----
  334. .. rst-class:: classref-descriptions-group
  335. Method Descriptions
  336. -------------------
  337. .. _class_GPUParticles2D_method_capture_rect:
  338. .. rst-class:: classref-method
  339. :ref:`Rect2<class_Rect2>` **capture_rect** **(** **)** |const|
  340. Returns a rectangle containing the positions of all existing particles.
  341. .. rst-class:: classref-item-separator
  342. ----
  343. .. _class_GPUParticles2D_method_emit_particle:
  344. .. rst-class:: classref-method
  345. void **emit_particle** **(** :ref:`Transform2D<class_Transform2D>` xform, :ref:`Vector2<class_Vector2>` velocity, :ref:`Color<class_Color>` color, :ref:`Color<class_Color>` custom, :ref:`int<class_int>` flags **)**
  346. Emits a single particle. Whether ``xform``, ``velocity``, ``color`` and ``custom`` are applied depends on the value of ``flags``. See :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>`.
  347. .. rst-class:: classref-item-separator
  348. ----
  349. .. _class_GPUParticles2D_method_restart:
  350. .. rst-class:: classref-method
  351. void **restart** **(** **)**
  352. Restarts all the existing particles.
  353. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  354. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  355. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  356. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  357. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  358. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`