Particle internal refactor and additions for more artistic control
Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro> Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com> Co-authored-by: Raul Santos <raulsntos@gmail.com> Co-authored-by: Mew Pur Pur <85438892+MewPurPur@users.noreply.github.com> Co-authored-by: Clay John <claynjohn@gmail.com>
This commit is contained in:
@@ -71,6 +71,9 @@
|
||||
</method>
|
||||
</methods>
|
||||
<members>
|
||||
<member name="alpha_curve" type="Texture2D" setter="set_alpha_curve" getter="get_alpha_curve">
|
||||
The alpha value of each particle's color will be multiplied by this [CurveTexture] over its lifetime.
|
||||
</member>
|
||||
<member name="angle_curve" type="Texture2D" setter="set_param_texture" getter="get_param_texture">
|
||||
Each particle's rotation will be animated along this [CurveTexture].
|
||||
</member>
|
||||
@@ -151,6 +154,18 @@
|
||||
<member name="direction" type="Vector3" setter="set_direction" getter="get_direction" default="Vector3(1, 0, 0)">
|
||||
Unit vector specifying the particles' emission direction.
|
||||
</member>
|
||||
<member name="directional_velocity_curve" type="Texture2D" setter="set_param_texture" getter="get_param_texture">
|
||||
A curve that specifies the velocity along each of the axes of the particle system along its lifetime.
|
||||
[b]Note:[/b] Animated velocities will not be affected by damping, use [member velocity_limit_curve] instead.
|
||||
</member>
|
||||
<member name="directional_velocity_max" type="float" setter="set_param_max" getter="get_param_max">
|
||||
Maximum directional velocity value, which is multiplied by [member directional_velocity_curve].
|
||||
[b]Note:[/b] Animated velocities will not be affected by damping, use [member velocity_limit_curve] instead.
|
||||
</member>
|
||||
<member name="directional_velocity_min" type="float" setter="set_param_min" getter="get_param_min">
|
||||
Minimum directional velocity value, which is multiplied by [member directional_velocity_curve].
|
||||
[b]Note:[/b] Animated velocities will not be affected by damping, use [member velocity_limit_curve] instead.
|
||||
</member>
|
||||
<member name="emission_box_extents" type="Vector3" setter="set_emission_box_extents" getter="get_emission_box_extents">
|
||||
The box's extents if [member emission_shape] is set to [constant EMISSION_SHAPE_BOX].
|
||||
</member>
|
||||
@@ -158,6 +173,10 @@
|
||||
Particle color will be modulated by color determined by sampling this texture at the same point as the [member emission_point_texture].
|
||||
[b]Note:[/b] [member emission_color_texture] multiplies the particle mesh's vertex colors. To have a visible effect on a [BaseMaterial3D], [member BaseMaterial3D.vertex_color_use_as_albedo] [i]must[/i] be [code]true[/code]. For a [ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the shader's [code]fragment()[/code] function. Otherwise, [member emission_color_texture] will have no visible effect.
|
||||
</member>
|
||||
<member name="emission_curve" type="Texture2D" setter="set_emission_curve" getter="get_emission_curve">
|
||||
Each particle's color will be multiplied by this [CurveTexture] over its lifetime.
|
||||
[b]Note:[/b] This property won't have a visible effect unless the render material is marked as unshaded.
|
||||
</member>
|
||||
<member name="emission_normal_texture" type="Texture2D" setter="set_emission_normal_texture" getter="get_emission_normal_texture">
|
||||
Particle velocity and rotation will be set by sampling this texture at the same point as the [member emission_point_texture]. Used only in [constant EMISSION_SHAPE_DIRECTED_POINTS]. Can be created automatically from mesh or node by selecting "Create Emission Points from Mesh/Node" under the "Particles" tool in the toolbar.
|
||||
</member>
|
||||
@@ -182,6 +201,12 @@
|
||||
<member name="emission_shape" type="int" setter="set_emission_shape" getter="get_emission_shape" enum="ParticleProcessMaterial.EmissionShape" default="0">
|
||||
Particles will be emitted inside this region. Use [enum EmissionShape] constants for values.
|
||||
</member>
|
||||
<member name="emission_shape_offset" type="Vector3" setter="set_emission_shape_offset" getter="get_emission_shape_offset" default="Vector3(0, 0, 0)">
|
||||
The offset for the [member emission_shape], in local space.
|
||||
</member>
|
||||
<member name="emission_shape_scale" type="Vector3" setter="set_emission_shape_scale" getter="get_emission_shape_scale" default="Vector3(1, 1, 1)">
|
||||
The scale of the [member emission_shape], in local space.
|
||||
</member>
|
||||
<member name="emission_sphere_radius" type="float" setter="set_emission_sphere_radius" getter="get_emission_sphere_radius">
|
||||
The sphere's radius if [member emission_shape] is set to [constant EMISSION_SHAPE_SPHERE].
|
||||
</member>
|
||||
@@ -200,6 +225,9 @@
|
||||
<member name="hue_variation_min" type="float" setter="set_param_min" getter="get_param_min" default="0.0">
|
||||
Minimum equivalent of [member hue_variation_max].
|
||||
</member>
|
||||
<member name="inherit_velocity_ratio" type="float" setter="set_inherit_velocity_ratio" getter="get_inherit_velocity_ratio" default="0.0">
|
||||
Percentage of the velocity of the respective [GPUParticles2D] or [GPUParticles3D] inherited by each particle when spawning.
|
||||
</member>
|
||||
<member name="initial_velocity_max" type="float" setter="set_param_max" getter="get_param_max" default="0.0">
|
||||
Maximum initial velocity magnitude for each particle. Direction comes from [member direction] and [member spread].
|
||||
</member>
|
||||
@@ -220,17 +248,23 @@
|
||||
</member>
|
||||
<member name="orbit_velocity_curve" type="Texture2D" setter="set_param_texture" getter="get_param_texture">
|
||||
Each particle's orbital velocity will vary along this [CurveTexture].
|
||||
[b]Note:[/b] For 3D orbital velocity, use a [CurveXYZTexture].
|
||||
[b]Note:[/b] Animated velocities will not be affected by damping, use [member velocity_limit_curve] instead.
|
||||
</member>
|
||||
<member name="orbit_velocity_max" type="float" setter="set_param_max" getter="get_param_max">
|
||||
<member name="orbit_velocity_max" type="float" setter="set_param_max" getter="get_param_max" default="0.0">
|
||||
Maximum orbital velocity applied to each particle. Makes the particles circle around origin. Specified in number of full rotations around origin per second.
|
||||
Only available when [member particle_flag_disable_z] is [code]true[/code].
|
||||
[b]Note:[/b] Animated velocities will not be affected by damping, use [member velocity_limit_curve] instead.
|
||||
</member>
|
||||
<member name="orbit_velocity_min" type="float" setter="set_param_min" getter="get_param_min">
|
||||
<member name="orbit_velocity_min" type="float" setter="set_param_min" getter="get_param_min" default="0.0">
|
||||
Minimum equivalent of [member orbit_velocity_max].
|
||||
[b]Note:[/b] Animated velocities will not be affected by damping, use [member velocity_limit_curve] instead.
|
||||
</member>
|
||||
<member name="particle_flag_align_y" type="bool" setter="set_particle_flag" getter="get_particle_flag" default="false">
|
||||
Align Y axis of particle with the direction of its velocity.
|
||||
</member>
|
||||
<member name="particle_flag_damping_as_friction" type="bool" setter="set_particle_flag" getter="get_particle_flag" default="false">
|
||||
Changes the behavior of the damping properties from a linear deceleration to a deceleration based on speed percentage.
|
||||
</member>
|
||||
<member name="particle_flag_disable_z" type="bool" setter="set_particle_flag" getter="get_particle_flag" default="false">
|
||||
If [code]true[/code], particles will not move on the z axis.
|
||||
</member>
|
||||
@@ -246,6 +280,18 @@
|
||||
<member name="radial_accel_min" type="float" setter="set_param_min" getter="get_param_min" default="0.0">
|
||||
Minimum equivalent of [member radial_accel_max].
|
||||
</member>
|
||||
<member name="radial_velocity_curve" type="Texture2D" setter="set_param_texture" getter="get_param_texture">
|
||||
A [CurveTexture] that defines the velocity over the particle's lifetime away (or toward) the [member velocity_pivot].
|
||||
[b]Note:[/b] Animated velocities will not be affected by damping, use [member velocity_limit_curve] instead.
|
||||
</member>
|
||||
<member name="radial_velocity_max" type="float" setter="set_param_max" getter="get_param_max" default="0.0">
|
||||
Maximum radial velocity applied to each particle. Makes particles move away from the [member velocity_pivot], or toward it if negative.
|
||||
[b]Note:[/b] Animated velocities will not be affected by damping, use [member velocity_limit_curve] instead.
|
||||
</member>
|
||||
<member name="radial_velocity_min" type="float" setter="set_param_min" getter="get_param_min" default="0.0">
|
||||
Minimum radial velocity applied to each particle. Makes particles move away from the [member velocity_pivot], or toward it if negative.
|
||||
[b]Note:[/b] Animated velocities will not be affected by damping, use [member velocity_limit_curve] instead.
|
||||
</member>
|
||||
<member name="scale_curve" type="Texture2D" setter="set_param_texture" getter="get_param_texture">
|
||||
Each particle's scale will vary along this [CurveTexture]. If a [CurveXYZTexture] is supplied instead, the scale will be separated per-axis.
|
||||
</member>
|
||||
@@ -255,6 +301,17 @@
|
||||
<member name="scale_min" type="float" setter="set_param_min" getter="get_param_min" default="1.0">
|
||||
Minimum equivalent of [member scale_max].
|
||||
</member>
|
||||
<member name="scale_over_velocity_curve" type="Texture2D" setter="set_param_texture" getter="get_param_texture">
|
||||
Either a [CurveTexture] or a [CurveXYZTexture] that scales each particle based on its velocity.
|
||||
</member>
|
||||
<member name="scale_over_velocity_max" type="float" setter="set_param_max" getter="get_param_max" default="0.0">
|
||||
Maximum velocity value reference for [member scale_over_velocity_curve].
|
||||
[member scale_over_velocity_curve] will be interpolated between [member scale_over_velocity_min] and [member scale_over_velocity_max].
|
||||
</member>
|
||||
<member name="scale_over_velocity_min" type="float" setter="set_param_min" getter="get_param_min" default="0.0">
|
||||
Minimum velocity value reference for [member scale_over_velocity_curve].
|
||||
[member scale_over_velocity_curve] will be interpolated between [member scale_over_velocity_min] and [member scale_over_velocity_max].
|
||||
</member>
|
||||
<member name="spread" type="float" setter="set_spread" getter="get_spread" default="45.0">
|
||||
Each particle's initial direction range from [code]+spread[/code] to [code]-spread[/code] degrees.
|
||||
</member>
|
||||
@@ -317,6 +374,11 @@
|
||||
<member name="turbulence_noise_strength" type="float" setter="set_turbulence_noise_strength" getter="get_turbulence_noise_strength" default="1.0">
|
||||
The turbulence noise strength. Increasing this will result in a stronger, more contrasting, flow pattern.
|
||||
</member>
|
||||
<member name="velocity_limit_curve" type="Texture2D" setter="set_velocity_limit_curve" getter="get_velocity_limit_curve">
|
||||
A [CurveTexture] that defines the maximum velocity of a particle during its lifetime.
|
||||
</member>
|
||||
<member name="velocity_pivot" type="Vector3" setter="set_velocity_pivot" getter="get_velocity_pivot" default="Vector3(0, 0, 0)">
|
||||
</member>
|
||||
</members>
|
||||
<constants>
|
||||
<constant name="PARAM_INITIAL_LINEAR_VELOCITY" value="0" enum="Parameter">
|
||||
@@ -355,7 +417,16 @@
|
||||
<constant name="PARAM_ANIM_OFFSET" value="11" enum="Parameter">
|
||||
Use with [method set_param_min], [method set_param_max], and [method set_param_texture] to set animation offset properties.
|
||||
</constant>
|
||||
<constant name="PARAM_MAX" value="15" enum="Parameter">
|
||||
<constant name="PARAM_RADIAL_VELOCITY" value="15" enum="Parameter">
|
||||
Use with [method set_param_min], [method set_param_max], and [method set_param_texture] to set radial velocity properties.
|
||||
</constant>
|
||||
<constant name="PARAM_DIRECTIONAL_VELOCITY" value="16" enum="Parameter">
|
||||
Use with [method set_param_min], [method set_param_max], and [method set_param_texture] to set directional velocity properties.
|
||||
</constant>
|
||||
<constant name="PARAM_SCALE_OVER_VELOCITY" value="17" enum="Parameter">
|
||||
Use with [method set_param_min], [method set_param_max], and [method set_param_texture] to set scale over velocity properties.
|
||||
</constant>
|
||||
<constant name="PARAM_MAX" value="18" enum="Parameter">
|
||||
Represents the size of the [enum Parameter] enum.
|
||||
</constant>
|
||||
<constant name="PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY" value="0" enum="ParticleFlags">
|
||||
@@ -367,7 +438,9 @@
|
||||
<constant name="PARTICLE_FLAG_DISABLE_Z" value="2" enum="ParticleFlags">
|
||||
Use with [method set_particle_flag] to set [member particle_flag_disable_z].
|
||||
</constant>
|
||||
<constant name="PARTICLE_FLAG_MAX" value="3" enum="ParticleFlags">
|
||||
<constant name="PARTICLE_FLAG_DAMPING_AS_FRICTION" value="3" enum="ParticleFlags">
|
||||
</constant>
|
||||
<constant name="PARTICLE_FLAG_MAX" value="4" enum="ParticleFlags">
|
||||
Represents the size of the [enum ParticleFlags] enum.
|
||||
</constant>
|
||||
<constant name="EMISSION_SHAPE_POINT" value="0" enum="EmissionShape">
|
||||
|
||||
Reference in New Issue
Block a user