class_gpuparticles2d.rst 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663
  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/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. A 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>`, but 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:`convert_from_particles<class_GPUParticles2D_method_convert_from_particles>` **(** :ref:`Node<class_Node>` particles **)** |
  82. +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  83. | 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 **)** |
  84. +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  85. | void | :ref:`restart<class_GPUParticles2D_method_restart>` **(** **)** |
  86. +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  87. .. rst-class:: classref-section-separator
  88. ----
  89. .. rst-class:: classref-descriptions-group
  90. Signals
  91. -------
  92. .. _class_GPUParticles2D_signal_finished:
  93. .. rst-class:: classref-signal
  94. **finished** **(** **)**
  95. Emitted when all active particles have finished processing. When :ref:`one_shot<class_GPUParticles2D_property_one_shot>` is disabled, particles will process continuously, so this is never emitted.
  96. \ **Note:** Due to the particles being computed on the GPU there might be a delay before the signal gets emitted.
  97. .. rst-class:: classref-section-separator
  98. ----
  99. .. rst-class:: classref-descriptions-group
  100. Enumerations
  101. ------------
  102. .. _enum_GPUParticles2D_DrawOrder:
  103. .. rst-class:: classref-enumeration
  104. enum **DrawOrder**:
  105. .. _class_GPUParticles2D_constant_DRAW_ORDER_INDEX:
  106. .. rst-class:: classref-enumeration-constant
  107. :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **DRAW_ORDER_INDEX** = ``0``
  108. Particles are drawn in the order emitted.
  109. .. _class_GPUParticles2D_constant_DRAW_ORDER_LIFETIME:
  110. .. rst-class:: classref-enumeration-constant
  111. :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **DRAW_ORDER_LIFETIME** = ``1``
  112. Particles are drawn in order of remaining lifetime.
  113. .. _class_GPUParticles2D_constant_DRAW_ORDER_REVERSE_LIFETIME:
  114. .. rst-class:: classref-enumeration-constant
  115. :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **DRAW_ORDER_REVERSE_LIFETIME** = ``2``
  116. .. rst-class:: classref-item-separator
  117. ----
  118. .. _enum_GPUParticles2D_EmitFlags:
  119. .. rst-class:: classref-enumeration
  120. enum **EmitFlags**:
  121. .. _class_GPUParticles2D_constant_EMIT_FLAG_POSITION:
  122. .. rst-class:: classref-enumeration-constant
  123. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_POSITION** = ``1``
  124. Particle starts at the specified position.
  125. .. _class_GPUParticles2D_constant_EMIT_FLAG_ROTATION_SCALE:
  126. .. rst-class:: classref-enumeration-constant
  127. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_ROTATION_SCALE** = ``2``
  128. Particle starts with specified rotation and scale.
  129. .. _class_GPUParticles2D_constant_EMIT_FLAG_VELOCITY:
  130. .. rst-class:: classref-enumeration-constant
  131. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_VELOCITY** = ``4``
  132. Particle starts with the specified velocity vector, which defines the emission direction and speed.
  133. .. _class_GPUParticles2D_constant_EMIT_FLAG_COLOR:
  134. .. rst-class:: classref-enumeration-constant
  135. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_COLOR** = ``8``
  136. Particle starts with specified color.
  137. .. _class_GPUParticles2D_constant_EMIT_FLAG_CUSTOM:
  138. .. rst-class:: classref-enumeration-constant
  139. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_CUSTOM** = ``16``
  140. Particle starts with specified ``CUSTOM`` data.
  141. .. rst-class:: classref-section-separator
  142. ----
  143. .. rst-class:: classref-descriptions-group
  144. Property Descriptions
  145. ---------------------
  146. .. _class_GPUParticles2D_property_amount:
  147. .. rst-class:: classref-property
  148. :ref:`int<class_int>` **amount** = ``8``
  149. .. rst-class:: classref-property-setget
  150. - void **set_amount** **(** :ref:`int<class_int>` value **)**
  151. - :ref:`int<class_int>` **get_amount** **(** **)**
  152. Number of particles emitted in one emission cycle.
  153. .. rst-class:: classref-item-separator
  154. ----
  155. .. _class_GPUParticles2D_property_collision_base_size:
  156. .. rst-class:: classref-property
  157. :ref:`float<class_float>` **collision_base_size** = ``1.0``
  158. .. rst-class:: classref-property-setget
  159. - void **set_collision_base_size** **(** :ref:`float<class_float>` value **)**
  160. - :ref:`float<class_float>` **get_collision_base_size** **(** **)**
  161. Multiplier for particle's collision radius. ``1.0`` corresponds to the size of the sprite.
  162. .. rst-class:: classref-item-separator
  163. ----
  164. .. _class_GPUParticles2D_property_draw_order:
  165. .. rst-class:: classref-property
  166. :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **draw_order** = ``1``
  167. .. rst-class:: classref-property-setget
  168. - void **set_draw_order** **(** :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` value **)**
  169. - :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **get_draw_order** **(** **)**
  170. Particle draw order. Uses :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` values.
  171. .. rst-class:: classref-item-separator
  172. ----
  173. .. _class_GPUParticles2D_property_emitting:
  174. .. rst-class:: classref-property
  175. :ref:`bool<class_bool>` **emitting** = ``true``
  176. .. rst-class:: classref-property-setget
  177. - void **set_emitting** **(** :ref:`bool<class_bool>` value **)**
  178. - :ref:`bool<class_bool>` **is_emitting** **(** **)**
  179. If ``true``, particles are being emitted. :ref:`emitting<class_GPUParticles2D_property_emitting>` can be used to start and stop particles from emitting. However, if :ref:`one_shot<class_GPUParticles2D_property_one_shot>` is ``true`` setting :ref:`emitting<class_GPUParticles2D_property_emitting>` to ``true`` will not restart the emission cycle until after all active particles finish processing. You can use the :ref:`finished<class_GPUParticles2D_signal_finished>` signal to be notified once all active particles finish processing.
  180. .. rst-class:: classref-item-separator
  181. ----
  182. .. _class_GPUParticles2D_property_explosiveness:
  183. .. rst-class:: classref-property
  184. :ref:`float<class_float>` **explosiveness** = ``0.0``
  185. .. rst-class:: classref-property-setget
  186. - void **set_explosiveness_ratio** **(** :ref:`float<class_float>` value **)**
  187. - :ref:`float<class_float>` **get_explosiveness_ratio** **(** **)**
  188. 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.
  189. .. rst-class:: classref-item-separator
  190. ----
  191. .. _class_GPUParticles2D_property_fixed_fps:
  192. .. rst-class:: classref-property
  193. :ref:`int<class_int>` **fixed_fps** = ``30``
  194. .. rst-class:: classref-property-setget
  195. - void **set_fixed_fps** **(** :ref:`int<class_int>` value **)**
  196. - :ref:`int<class_int>` **get_fixed_fps** **(** **)**
  197. 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.
  198. .. rst-class:: classref-item-separator
  199. ----
  200. .. _class_GPUParticles2D_property_fract_delta:
  201. .. rst-class:: classref-property
  202. :ref:`bool<class_bool>` **fract_delta** = ``true``
  203. .. rst-class:: classref-property-setget
  204. - void **set_fractional_delta** **(** :ref:`bool<class_bool>` value **)**
  205. - :ref:`bool<class_bool>` **get_fractional_delta** **(** **)**
  206. If ``true``, results in fractional delta calculation which has a smoother particles display effect.
  207. .. rst-class:: classref-item-separator
  208. ----
  209. .. _class_GPUParticles2D_property_interpolate:
  210. .. rst-class:: classref-property
  211. :ref:`bool<class_bool>` **interpolate** = ``true``
  212. .. rst-class:: classref-property-setget
  213. - void **set_interpolate** **(** :ref:`bool<class_bool>` value **)**
  214. - :ref:`bool<class_bool>` **get_interpolate** **(** **)**
  215. 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.
  216. .. rst-class:: classref-item-separator
  217. ----
  218. .. _class_GPUParticles2D_property_lifetime:
  219. .. rst-class:: classref-property
  220. :ref:`float<class_float>` **lifetime** = ``1.0``
  221. .. rst-class:: classref-property-setget
  222. - void **set_lifetime** **(** :ref:`float<class_float>` value **)**
  223. - :ref:`float<class_float>` **get_lifetime** **(** **)**
  224. Amount of time each particle will exist.
  225. .. rst-class:: classref-item-separator
  226. ----
  227. .. _class_GPUParticles2D_property_local_coords:
  228. .. rst-class:: classref-property
  229. :ref:`bool<class_bool>` **local_coords** = ``false``
  230. .. rst-class:: classref-property-setget
  231. - void **set_use_local_coordinates** **(** :ref:`bool<class_bool>` value **)**
  232. - :ref:`bool<class_bool>` **get_use_local_coordinates** **(** **)**
  233. 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.
  234. .. rst-class:: classref-item-separator
  235. ----
  236. .. _class_GPUParticles2D_property_one_shot:
  237. .. rst-class:: classref-property
  238. :ref:`bool<class_bool>` **one_shot** = ``false``
  239. .. rst-class:: classref-property-setget
  240. - void **set_one_shot** **(** :ref:`bool<class_bool>` value **)**
  241. - :ref:`bool<class_bool>` **get_one_shot** **(** **)**
  242. If ``true``, only one emission cycle occurs. If set ``true`` during a cycle, emission will stop at the cycle's end.
  243. .. rst-class:: classref-item-separator
  244. ----
  245. .. _class_GPUParticles2D_property_preprocess:
  246. .. rst-class:: classref-property
  247. :ref:`float<class_float>` **preprocess** = ``0.0``
  248. .. rst-class:: classref-property-setget
  249. - void **set_pre_process_time** **(** :ref:`float<class_float>` value **)**
  250. - :ref:`float<class_float>` **get_pre_process_time** **(** **)**
  251. Particle system starts as if it had already run for this many seconds.
  252. .. rst-class:: classref-item-separator
  253. ----
  254. .. _class_GPUParticles2D_property_process_material:
  255. .. rst-class:: classref-property
  256. :ref:`Material<class_Material>` **process_material**
  257. .. rst-class:: classref-property-setget
  258. - void **set_process_material** **(** :ref:`Material<class_Material>` value **)**
  259. - :ref:`Material<class_Material>` **get_process_material** **(** **)**
  260. :ref:`Material<class_Material>` for processing particles. Can be a :ref:`ParticleProcessMaterial<class_ParticleProcessMaterial>` or a :ref:`ShaderMaterial<class_ShaderMaterial>`.
  261. .. rst-class:: classref-item-separator
  262. ----
  263. .. _class_GPUParticles2D_property_randomness:
  264. .. rst-class:: classref-property
  265. :ref:`float<class_float>` **randomness** = ``0.0``
  266. .. rst-class:: classref-property-setget
  267. - void **set_randomness_ratio** **(** :ref:`float<class_float>` value **)**
  268. - :ref:`float<class_float>` **get_randomness_ratio** **(** **)**
  269. Emission lifetime randomness ratio.
  270. .. rst-class:: classref-item-separator
  271. ----
  272. .. _class_GPUParticles2D_property_speed_scale:
  273. .. rst-class:: classref-property
  274. :ref:`float<class_float>` **speed_scale** = ``1.0``
  275. .. rst-class:: classref-property-setget
  276. - void **set_speed_scale** **(** :ref:`float<class_float>` value **)**
  277. - :ref:`float<class_float>` **get_speed_scale** **(** **)**
  278. Particle system's running speed scaling ratio. A value of ``0`` can be used to pause the particles.
  279. .. rst-class:: classref-item-separator
  280. ----
  281. .. _class_GPUParticles2D_property_sub_emitter:
  282. .. rst-class:: classref-property
  283. :ref:`NodePath<class_NodePath>` **sub_emitter** = ``NodePath("")``
  284. .. rst-class:: classref-property-setget
  285. - void **set_sub_emitter** **(** :ref:`NodePath<class_NodePath>` value **)**
  286. - :ref:`NodePath<class_NodePath>` **get_sub_emitter** **(** **)**
  287. The :ref:`NodePath<class_NodePath>` to the **GPUParticles2D** used for sub-emissions.
  288. .. rst-class:: classref-item-separator
  289. ----
  290. .. _class_GPUParticles2D_property_texture:
  291. .. rst-class:: classref-property
  292. :ref:`Texture2D<class_Texture2D>` **texture**
  293. .. rst-class:: classref-property-setget
  294. - void **set_texture** **(** :ref:`Texture2D<class_Texture2D>` value **)**
  295. - :ref:`Texture2D<class_Texture2D>` **get_texture** **(** **)**
  296. Particle texture. If ``null``, particles will be squares.
  297. .. rst-class:: classref-item-separator
  298. ----
  299. .. _class_GPUParticles2D_property_trail_enabled:
  300. .. rst-class:: classref-property
  301. :ref:`bool<class_bool>` **trail_enabled** = ``false``
  302. .. rst-class:: classref-property-setget
  303. - void **set_trail_enabled** **(** :ref:`bool<class_bool>` value **)**
  304. - :ref:`bool<class_bool>` **is_trail_enabled** **(** **)**
  305. If ``true``, enables particle trails using a mesh skinning system.
  306. \ **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.
  307. .. rst-class:: classref-item-separator
  308. ----
  309. .. _class_GPUParticles2D_property_trail_lifetime:
  310. .. rst-class:: classref-property
  311. :ref:`float<class_float>` **trail_lifetime** = ``0.3``
  312. .. rst-class:: classref-property-setget
  313. - void **set_trail_lifetime** **(** :ref:`float<class_float>` value **)**
  314. - :ref:`float<class_float>` **get_trail_lifetime** **(** **)**
  315. 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``.
  316. .. rst-class:: classref-item-separator
  317. ----
  318. .. _class_GPUParticles2D_property_trail_section_subdivisions:
  319. .. rst-class:: classref-property
  320. :ref:`int<class_int>` **trail_section_subdivisions** = ``4``
  321. .. rst-class:: classref-property-setget
  322. - void **set_trail_section_subdivisions** **(** :ref:`int<class_int>` value **)**
  323. - :ref:`int<class_int>` **get_trail_section_subdivisions** **(** **)**
  324. 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``.
  325. .. rst-class:: classref-item-separator
  326. ----
  327. .. _class_GPUParticles2D_property_trail_sections:
  328. .. rst-class:: classref-property
  329. :ref:`int<class_int>` **trail_sections** = ``8``
  330. .. rst-class:: classref-property-setget
  331. - void **set_trail_sections** **(** :ref:`int<class_int>` value **)**
  332. - :ref:`int<class_int>` **get_trail_sections** **(** **)**
  333. 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``.
  334. .. rst-class:: classref-item-separator
  335. ----
  336. .. _class_GPUParticles2D_property_visibility_rect:
  337. .. rst-class:: classref-property
  338. :ref:`Rect2<class_Rect2>` **visibility_rect** = ``Rect2(-100, -100, 200, 200)``
  339. .. rst-class:: classref-property-setget
  340. - void **set_visibility_rect** **(** :ref:`Rect2<class_Rect2>` value **)**
  341. - :ref:`Rect2<class_Rect2>` **get_visibility_rect** **(** **)**
  342. 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.
  343. 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.
  344. .. rst-class:: classref-section-separator
  345. ----
  346. .. rst-class:: classref-descriptions-group
  347. Method Descriptions
  348. -------------------
  349. .. _class_GPUParticles2D_method_capture_rect:
  350. .. rst-class:: classref-method
  351. :ref:`Rect2<class_Rect2>` **capture_rect** **(** **)** |const|
  352. Returns a rectangle containing the positions of all existing particles.
  353. \ **Note:** When using threaded rendering this method synchronizes the rendering thread. Calling it often may have a negative impact on performance.
  354. .. rst-class:: classref-item-separator
  355. ----
  356. .. _class_GPUParticles2D_method_convert_from_particles:
  357. .. rst-class:: classref-method
  358. void **convert_from_particles** **(** :ref:`Node<class_Node>` particles **)**
  359. Sets this node's properties to match a given :ref:`CPUParticles2D<class_CPUParticles2D>` node.
  360. .. rst-class:: classref-item-separator
  361. ----
  362. .. _class_GPUParticles2D_method_emit_particle:
  363. .. rst-class:: classref-method
  364. 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 **)**
  365. Emits a single particle. Whether ``xform``, ``velocity``, ``color`` and ``custom`` are applied depends on the value of ``flags``. See :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>`.
  366. .. rst-class:: classref-item-separator
  367. ----
  368. .. _class_GPUParticles2D_method_restart:
  369. .. rst-class:: classref-method
  370. void **restart** **(** **)**
  371. Restarts all the existing particles.
  372. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  373. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  374. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  375. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  376. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  377. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
  378. .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`