class_gpuparticles2d.rst 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714
  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:`amount_ratio<class_GPUParticles2D_property_amount_ratio>` | ``1.0`` |
  32. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  33. | :ref:`float<class_float>` | :ref:`collision_base_size<class_GPUParticles2D_property_collision_base_size>` | ``1.0`` |
  34. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  35. | :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` | :ref:`draw_order<class_GPUParticles2D_property_draw_order>` | ``1`` |
  36. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  37. | :ref:`bool<class_bool>` | :ref:`emitting<class_GPUParticles2D_property_emitting>` | ``true`` |
  38. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  39. | :ref:`float<class_float>` | :ref:`explosiveness<class_GPUParticles2D_property_explosiveness>` | ``0.0`` |
  40. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  41. | :ref:`int<class_int>` | :ref:`fixed_fps<class_GPUParticles2D_property_fixed_fps>` | ``30`` |
  42. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  43. | :ref:`bool<class_bool>` | :ref:`fract_delta<class_GPUParticles2D_property_fract_delta>` | ``true`` |
  44. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  45. | :ref:`float<class_float>` | :ref:`interp_to_end<class_GPUParticles2D_property_interp_to_end>` | ``0.0`` |
  46. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  47. | :ref:`bool<class_bool>` | :ref:`interpolate<class_GPUParticles2D_property_interpolate>` | ``true`` |
  48. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  49. | :ref:`float<class_float>` | :ref:`lifetime<class_GPUParticles2D_property_lifetime>` | ``1.0`` |
  50. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  51. | :ref:`bool<class_bool>` | :ref:`local_coords<class_GPUParticles2D_property_local_coords>` | ``false`` |
  52. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  53. | :ref:`bool<class_bool>` | :ref:`one_shot<class_GPUParticles2D_property_one_shot>` | ``false`` |
  54. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  55. | :ref:`float<class_float>` | :ref:`preprocess<class_GPUParticles2D_property_preprocess>` | ``0.0`` |
  56. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  57. | :ref:`Material<class_Material>` | :ref:`process_material<class_GPUParticles2D_property_process_material>` | |
  58. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  59. | :ref:`float<class_float>` | :ref:`randomness<class_GPUParticles2D_property_randomness>` | ``0.0`` |
  60. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  61. | :ref:`float<class_float>` | :ref:`speed_scale<class_GPUParticles2D_property_speed_scale>` | ``1.0`` |
  62. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  63. | :ref:`NodePath<class_NodePath>` | :ref:`sub_emitter<class_GPUParticles2D_property_sub_emitter>` | ``NodePath("")`` |
  64. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  65. | :ref:`Texture2D<class_Texture2D>` | :ref:`texture<class_GPUParticles2D_property_texture>` | |
  66. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  67. | :ref:`bool<class_bool>` | :ref:`trail_enabled<class_GPUParticles2D_property_trail_enabled>` | ``false`` |
  68. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  69. | :ref:`float<class_float>` | :ref:`trail_lifetime<class_GPUParticles2D_property_trail_lifetime>` | ``0.3`` |
  70. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  71. | :ref:`int<class_int>` | :ref:`trail_section_subdivisions<class_GPUParticles2D_property_trail_section_subdivisions>` | ``4`` |
  72. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  73. | :ref:`int<class_int>` | :ref:`trail_sections<class_GPUParticles2D_property_trail_sections>` | ``8`` |
  74. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  75. | :ref:`Rect2<class_Rect2>` | :ref:`visibility_rect<class_GPUParticles2D_property_visibility_rect>` | ``Rect2(-100, -100, 200, 200)`` |
  76. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  77. .. rst-class:: classref-reftable-group
  78. Methods
  79. -------
  80. .. table::
  81. :widths: auto
  82. +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  83. | :ref:`Rect2<class_Rect2>` | :ref:`capture_rect<class_GPUParticles2D_method_capture_rect>` **(** **)** |const| |
  84. +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  85. | void | :ref:`convert_from_particles<class_GPUParticles2D_method_convert_from_particles>` **(** :ref:`Node<class_Node>` particles **)** |
  86. +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  87. | 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 **)** |
  88. +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  89. | void | :ref:`restart<class_GPUParticles2D_method_restart>` **(** **)** |
  90. +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  91. .. rst-class:: classref-section-separator
  92. ----
  93. .. rst-class:: classref-descriptions-group
  94. Signals
  95. -------
  96. .. _class_GPUParticles2D_signal_finished:
  97. .. rst-class:: classref-signal
  98. **finished** **(** **)**
  99. 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.
  100. \ **Note:** Due to the particles being computed on the GPU there might be a delay before the signal gets emitted.
  101. .. rst-class:: classref-section-separator
  102. ----
  103. .. rst-class:: classref-descriptions-group
  104. Enumerations
  105. ------------
  106. .. _enum_GPUParticles2D_DrawOrder:
  107. .. rst-class:: classref-enumeration
  108. enum **DrawOrder**:
  109. .. _class_GPUParticles2D_constant_DRAW_ORDER_INDEX:
  110. .. rst-class:: classref-enumeration-constant
  111. :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **DRAW_ORDER_INDEX** = ``0``
  112. Particles are drawn in the order emitted.
  113. .. _class_GPUParticles2D_constant_DRAW_ORDER_LIFETIME:
  114. .. rst-class:: classref-enumeration-constant
  115. :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **DRAW_ORDER_LIFETIME** = ``1``
  116. Particles are drawn in order of remaining lifetime. In other words, the particle with the highest lifetime is drawn at the front.
  117. .. _class_GPUParticles2D_constant_DRAW_ORDER_REVERSE_LIFETIME:
  118. .. rst-class:: classref-enumeration-constant
  119. :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **DRAW_ORDER_REVERSE_LIFETIME** = ``2``
  120. Particles are drawn in reverse order of remaining lifetime. In other words, the particle with the lowest lifetime is drawn at the front.
  121. .. rst-class:: classref-item-separator
  122. ----
  123. .. _enum_GPUParticles2D_EmitFlags:
  124. .. rst-class:: classref-enumeration
  125. enum **EmitFlags**:
  126. .. _class_GPUParticles2D_constant_EMIT_FLAG_POSITION:
  127. .. rst-class:: classref-enumeration-constant
  128. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_POSITION** = ``1``
  129. Particle starts at the specified position.
  130. .. _class_GPUParticles2D_constant_EMIT_FLAG_ROTATION_SCALE:
  131. .. rst-class:: classref-enumeration-constant
  132. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_ROTATION_SCALE** = ``2``
  133. Particle starts with specified rotation and scale.
  134. .. _class_GPUParticles2D_constant_EMIT_FLAG_VELOCITY:
  135. .. rst-class:: classref-enumeration-constant
  136. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_VELOCITY** = ``4``
  137. Particle starts with the specified velocity vector, which defines the emission direction and speed.
  138. .. _class_GPUParticles2D_constant_EMIT_FLAG_COLOR:
  139. .. rst-class:: classref-enumeration-constant
  140. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_COLOR** = ``8``
  141. Particle starts with specified color.
  142. .. _class_GPUParticles2D_constant_EMIT_FLAG_CUSTOM:
  143. .. rst-class:: classref-enumeration-constant
  144. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_CUSTOM** = ``16``
  145. Particle starts with specified ``CUSTOM`` data.
  146. .. rst-class:: classref-section-separator
  147. ----
  148. .. rst-class:: classref-descriptions-group
  149. Property Descriptions
  150. ---------------------
  151. .. _class_GPUParticles2D_property_amount:
  152. .. rst-class:: classref-property
  153. :ref:`int<class_int>` **amount** = ``8``
  154. .. rst-class:: classref-property-setget
  155. - void **set_amount** **(** :ref:`int<class_int>` value **)**
  156. - :ref:`int<class_int>` **get_amount** **(** **)**
  157. The number of particles to emit in one emission cycle. The effective emission rate is ``(amount * amount_ratio) / lifetime`` particles per second. Higher values will increase GPU requirements, even if not all particles are visible at a given time or if :ref:`amount_ratio<class_GPUParticles2D_property_amount_ratio>` is decreased.
  158. \ **Note:** Changing this value will cause the particle system to restart. To avoid this, change :ref:`amount_ratio<class_GPUParticles2D_property_amount_ratio>` instead.
  159. .. rst-class:: classref-item-separator
  160. ----
  161. .. _class_GPUParticles2D_property_amount_ratio:
  162. .. rst-class:: classref-property
  163. :ref:`float<class_float>` **amount_ratio** = ``1.0``
  164. .. rst-class:: classref-property-setget
  165. - void **set_amount_ratio** **(** :ref:`float<class_float>` value **)**
  166. - :ref:`float<class_float>` **get_amount_ratio** **(** **)**
  167. The ratio of particles that should actually be emitted. If set to a value lower than ``1.0``, this will set the amount of emitted particles throughout the lifetime to ``amount * amount_ratio``. Unlike changing :ref:`amount<class_GPUParticles2D_property_amount>`, changing :ref:`amount_ratio<class_GPUParticles2D_property_amount_ratio>` while emitting does not affect already-emitted particles and doesn't cause the particle system to restart. :ref:`amount_ratio<class_GPUParticles2D_property_amount_ratio>` can be used to create effects that make the number of emitted particles vary over time.
  168. \ **Note:** Reducing the :ref:`amount_ratio<class_GPUParticles2D_property_amount_ratio>` has no performance benefit, since resources need to be allocated and processed for the total :ref:`amount<class_GPUParticles2D_property_amount>` of particles regardless of the :ref:`amount_ratio<class_GPUParticles2D_property_amount_ratio>`. If you don't intend to change the number of particles emitted while the particles are emitting, make sure :ref:`amount_ratio<class_GPUParticles2D_property_amount_ratio>` is set to ``1`` and change :ref:`amount<class_GPUParticles2D_property_amount>` to your liking instead.
  169. .. rst-class:: classref-item-separator
  170. ----
  171. .. _class_GPUParticles2D_property_collision_base_size:
  172. .. rst-class:: classref-property
  173. :ref:`float<class_float>` **collision_base_size** = ``1.0``
  174. .. rst-class:: classref-property-setget
  175. - void **set_collision_base_size** **(** :ref:`float<class_float>` value **)**
  176. - :ref:`float<class_float>` **get_collision_base_size** **(** **)**
  177. Multiplier for particle's collision radius. ``1.0`` corresponds to the size of the sprite. If particles appear to sink into the ground when colliding, increase this value. If particles appear to float when colliding, decrease this value. Only effective if :ref:`ParticleProcessMaterial.collision_mode<class_ParticleProcessMaterial_property_collision_mode>` is :ref:`ParticleProcessMaterial.COLLISION_RIGID<class_ParticleProcessMaterial_constant_COLLISION_RIGID>` or :ref:`ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT<class_ParticleProcessMaterial_constant_COLLISION_HIDE_ON_CONTACT>`.
  178. \ **Note:** Particles always have a spherical collision shape.
  179. .. rst-class:: classref-item-separator
  180. ----
  181. .. _class_GPUParticles2D_property_draw_order:
  182. .. rst-class:: classref-property
  183. :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **draw_order** = ``1``
  184. .. rst-class:: classref-property-setget
  185. - void **set_draw_order** **(** :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` value **)**
  186. - :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **get_draw_order** **(** **)**
  187. Particle draw order. Uses :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` values.
  188. .. rst-class:: classref-item-separator
  189. ----
  190. .. _class_GPUParticles2D_property_emitting:
  191. .. rst-class:: classref-property
  192. :ref:`bool<class_bool>` **emitting** = ``true``
  193. .. rst-class:: classref-property-setget
  194. - void **set_emitting** **(** :ref:`bool<class_bool>` value **)**
  195. - :ref:`bool<class_bool>` **is_emitting** **(** **)**
  196. 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.
  197. .. rst-class:: classref-item-separator
  198. ----
  199. .. _class_GPUParticles2D_property_explosiveness:
  200. .. rst-class:: classref-property
  201. :ref:`float<class_float>` **explosiveness** = ``0.0``
  202. .. rst-class:: classref-property-setget
  203. - void **set_explosiveness_ratio** **(** :ref:`float<class_float>` value **)**
  204. - :ref:`float<class_float>` **get_explosiveness_ratio** **(** **)**
  205. 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.
  206. .. rst-class:: classref-item-separator
  207. ----
  208. .. _class_GPUParticles2D_property_fixed_fps:
  209. .. rst-class:: classref-property
  210. :ref:`int<class_int>` **fixed_fps** = ``30``
  211. .. rst-class:: classref-property-setget
  212. - void **set_fixed_fps** **(** :ref:`int<class_int>` value **)**
  213. - :ref:`int<class_int>` **get_fixed_fps** **(** **)**
  214. 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.
  215. .. rst-class:: classref-item-separator
  216. ----
  217. .. _class_GPUParticles2D_property_fract_delta:
  218. .. rst-class:: classref-property
  219. :ref:`bool<class_bool>` **fract_delta** = ``true``
  220. .. rst-class:: classref-property-setget
  221. - void **set_fractional_delta** **(** :ref:`bool<class_bool>` value **)**
  222. - :ref:`bool<class_bool>` **get_fractional_delta** **(** **)**
  223. If ``true``, results in fractional delta calculation which has a smoother particles display effect.
  224. .. rst-class:: classref-item-separator
  225. ----
  226. .. _class_GPUParticles2D_property_interp_to_end:
  227. .. rst-class:: classref-property
  228. :ref:`float<class_float>` **interp_to_end** = ``0.0``
  229. .. rst-class:: classref-property-setget
  230. - void **set_interp_to_end** **(** :ref:`float<class_float>` value **)**
  231. - :ref:`float<class_float>` **get_interp_to_end** **(** **)**
  232. Causes all the particles in this node to interpolate towards the end of their lifetime.
  233. \ **Note:** This only works when used with a :ref:`ParticleProcessMaterial<class_ParticleProcessMaterial>`. It needs to be manually implemented for custom process shaders.
  234. .. rst-class:: classref-item-separator
  235. ----
  236. .. _class_GPUParticles2D_property_interpolate:
  237. .. rst-class:: classref-property
  238. :ref:`bool<class_bool>` **interpolate** = ``true``
  239. .. rst-class:: classref-property-setget
  240. - void **set_interpolate** **(** :ref:`bool<class_bool>` value **)**
  241. - :ref:`bool<class_bool>` **get_interpolate** **(** **)**
  242. 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.
  243. .. rst-class:: classref-item-separator
  244. ----
  245. .. _class_GPUParticles2D_property_lifetime:
  246. .. rst-class:: classref-property
  247. :ref:`float<class_float>` **lifetime** = ``1.0``
  248. .. rst-class:: classref-property-setget
  249. - void **set_lifetime** **(** :ref:`float<class_float>` value **)**
  250. - :ref:`float<class_float>` **get_lifetime** **(** **)**
  251. The amount of time each particle will exist (in seconds). The effective emission rate is ``(amount * amount_ratio) / lifetime`` particles per second.
  252. .. rst-class:: classref-item-separator
  253. ----
  254. .. _class_GPUParticles2D_property_local_coords:
  255. .. rst-class:: classref-property
  256. :ref:`bool<class_bool>` **local_coords** = ``false``
  257. .. rst-class:: classref-property-setget
  258. - void **set_use_local_coordinates** **(** :ref:`bool<class_bool>` value **)**
  259. - :ref:`bool<class_bool>` **get_use_local_coordinates** **(** **)**
  260. 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.
  261. .. rst-class:: classref-item-separator
  262. ----
  263. .. _class_GPUParticles2D_property_one_shot:
  264. .. rst-class:: classref-property
  265. :ref:`bool<class_bool>` **one_shot** = ``false``
  266. .. rst-class:: classref-property-setget
  267. - void **set_one_shot** **(** :ref:`bool<class_bool>` value **)**
  268. - :ref:`bool<class_bool>` **get_one_shot** **(** **)**
  269. If ``true``, only one emission cycle occurs. If set ``true`` during a cycle, emission will stop at the cycle's end.
  270. .. rst-class:: classref-item-separator
  271. ----
  272. .. _class_GPUParticles2D_property_preprocess:
  273. .. rst-class:: classref-property
  274. :ref:`float<class_float>` **preprocess** = ``0.0``
  275. .. rst-class:: classref-property-setget
  276. - void **set_pre_process_time** **(** :ref:`float<class_float>` value **)**
  277. - :ref:`float<class_float>` **get_pre_process_time** **(** **)**
  278. Particle system starts as if it had already run for this many seconds.
  279. .. rst-class:: classref-item-separator
  280. ----
  281. .. _class_GPUParticles2D_property_process_material:
  282. .. rst-class:: classref-property
  283. :ref:`Material<class_Material>` **process_material**
  284. .. rst-class:: classref-property-setget
  285. - void **set_process_material** **(** :ref:`Material<class_Material>` value **)**
  286. - :ref:`Material<class_Material>` **get_process_material** **(** **)**
  287. :ref:`Material<class_Material>` for processing particles. Can be a :ref:`ParticleProcessMaterial<class_ParticleProcessMaterial>` or a :ref:`ShaderMaterial<class_ShaderMaterial>`.
  288. .. rst-class:: classref-item-separator
  289. ----
  290. .. _class_GPUParticles2D_property_randomness:
  291. .. rst-class:: classref-property
  292. :ref:`float<class_float>` **randomness** = ``0.0``
  293. .. rst-class:: classref-property-setget
  294. - void **set_randomness_ratio** **(** :ref:`float<class_float>` value **)**
  295. - :ref:`float<class_float>` **get_randomness_ratio** **(** **)**
  296. Emission lifetime randomness ratio.
  297. .. rst-class:: classref-item-separator
  298. ----
  299. .. _class_GPUParticles2D_property_speed_scale:
  300. .. rst-class:: classref-property
  301. :ref:`float<class_float>` **speed_scale** = ``1.0``
  302. .. rst-class:: classref-property-setget
  303. - void **set_speed_scale** **(** :ref:`float<class_float>` value **)**
  304. - :ref:`float<class_float>` **get_speed_scale** **(** **)**
  305. Particle system's running speed scaling ratio. A value of ``0`` can be used to pause the particles.
  306. .. rst-class:: classref-item-separator
  307. ----
  308. .. _class_GPUParticles2D_property_sub_emitter:
  309. .. rst-class:: classref-property
  310. :ref:`NodePath<class_NodePath>` **sub_emitter** = ``NodePath("")``
  311. .. rst-class:: classref-property-setget
  312. - void **set_sub_emitter** **(** :ref:`NodePath<class_NodePath>` value **)**
  313. - :ref:`NodePath<class_NodePath>` **get_sub_emitter** **(** **)**
  314. Path to another **GPUParticles2D** node that will be used as a subemitter (see :ref:`ParticleProcessMaterial.sub_emitter_mode<class_ParticleProcessMaterial_property_sub_emitter_mode>`). Subemitters can be used to achieve effects such as fireworks, sparks on collision, bubbles popping into water drops, and more.
  315. \ **Note:** When :ref:`sub_emitter<class_GPUParticles2D_property_sub_emitter>` is set, the target **GPUParticles2D** node will no longer emit particles on its own.
  316. .. rst-class:: classref-item-separator
  317. ----
  318. .. _class_GPUParticles2D_property_texture:
  319. .. rst-class:: classref-property
  320. :ref:`Texture2D<class_Texture2D>` **texture**
  321. .. rst-class:: classref-property-setget
  322. - void **set_texture** **(** :ref:`Texture2D<class_Texture2D>` value **)**
  323. - :ref:`Texture2D<class_Texture2D>` **get_texture** **(** **)**
  324. Particle texture. If ``null``, particles will be squares with a size of 1×1 pixels.
  325. \ **Note:** To use a flipbook texture, assign a new :ref:`CanvasItemMaterial<class_CanvasItemMaterial>` to the **GPUParticles2D**'s :ref:`CanvasItem.material<class_CanvasItem_property_material>` property, then enable :ref:`CanvasItemMaterial.particles_animation<class_CanvasItemMaterial_property_particles_animation>` and set :ref:`CanvasItemMaterial.particles_anim_h_frames<class_CanvasItemMaterial_property_particles_anim_h_frames>`, :ref:`CanvasItemMaterial.particles_anim_v_frames<class_CanvasItemMaterial_property_particles_anim_v_frames>`, and :ref:`CanvasItemMaterial.particles_anim_loop<class_CanvasItemMaterial_property_particles_anim_loop>` to match the flipbook texture.
  326. .. rst-class:: classref-item-separator
  327. ----
  328. .. _class_GPUParticles2D_property_trail_enabled:
  329. .. rst-class:: classref-property
  330. :ref:`bool<class_bool>` **trail_enabled** = ``false``
  331. .. rst-class:: classref-property-setget
  332. - void **set_trail_enabled** **(** :ref:`bool<class_bool>` value **)**
  333. - :ref:`bool<class_bool>` **is_trail_enabled** **(** **)**
  334. If ``true``, enables particle trails using a mesh skinning system.
  335. \ **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.
  336. .. rst-class:: classref-item-separator
  337. ----
  338. .. _class_GPUParticles2D_property_trail_lifetime:
  339. .. rst-class:: classref-property
  340. :ref:`float<class_float>` **trail_lifetime** = ``0.3``
  341. .. rst-class:: classref-property-setget
  342. - void **set_trail_lifetime** **(** :ref:`float<class_float>` value **)**
  343. - :ref:`float<class_float>` **get_trail_lifetime** **(** **)**
  344. 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``.
  345. .. rst-class:: classref-item-separator
  346. ----
  347. .. _class_GPUParticles2D_property_trail_section_subdivisions:
  348. .. rst-class:: classref-property
  349. :ref:`int<class_int>` **trail_section_subdivisions** = ``4``
  350. .. rst-class:: classref-property-setget
  351. - void **set_trail_section_subdivisions** **(** :ref:`int<class_int>` value **)**
  352. - :ref:`int<class_int>` **get_trail_section_subdivisions** **(** **)**
  353. 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``.
  354. .. rst-class:: classref-item-separator
  355. ----
  356. .. _class_GPUParticles2D_property_trail_sections:
  357. .. rst-class:: classref-property
  358. :ref:`int<class_int>` **trail_sections** = ``8``
  359. .. rst-class:: classref-property-setget
  360. - void **set_trail_sections** **(** :ref:`int<class_int>` value **)**
  361. - :ref:`int<class_int>` **get_trail_sections** **(** **)**
  362. 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``.
  363. .. rst-class:: classref-item-separator
  364. ----
  365. .. _class_GPUParticles2D_property_visibility_rect:
  366. .. rst-class:: classref-property
  367. :ref:`Rect2<class_Rect2>` **visibility_rect** = ``Rect2(-100, -100, 200, 200)``
  368. .. rst-class:: classref-property-setget
  369. - void **set_visibility_rect** **(** :ref:`Rect2<class_Rect2>` value **)**
  370. - :ref:`Rect2<class_Rect2>` **get_visibility_rect** **(** **)**
  371. 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.
  372. 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.
  373. .. rst-class:: classref-section-separator
  374. ----
  375. .. rst-class:: classref-descriptions-group
  376. Method Descriptions
  377. -------------------
  378. .. _class_GPUParticles2D_method_capture_rect:
  379. .. rst-class:: classref-method
  380. :ref:`Rect2<class_Rect2>` **capture_rect** **(** **)** |const|
  381. Returns a rectangle containing the positions of all existing particles.
  382. \ **Note:** When using threaded rendering this method synchronizes the rendering thread. Calling it often may have a negative impact on performance.
  383. .. rst-class:: classref-item-separator
  384. ----
  385. .. _class_GPUParticles2D_method_convert_from_particles:
  386. .. rst-class:: classref-method
  387. void **convert_from_particles** **(** :ref:`Node<class_Node>` particles **)**
  388. Sets this node's properties to match a given :ref:`CPUParticles2D<class_CPUParticles2D>` node.
  389. .. rst-class:: classref-item-separator
  390. ----
  391. .. _class_GPUParticles2D_method_emit_particle:
  392. .. rst-class:: classref-method
  393. 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 **)**
  394. Emits a single particle. Whether ``xform``, ``velocity``, ``color`` and ``custom`` are applied depends on the value of ``flags``. See :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>`.
  395. .. rst-class:: classref-item-separator
  396. ----
  397. .. _class_GPUParticles2D_method_restart:
  398. .. rst-class:: classref-method
  399. void **restart** **(** **)**
  400. Restarts all the existing particles.
  401. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  402. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  403. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  404. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  405. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  406. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
  407. .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`