mirror of
https://github.com/godotengine/godot.git
synced 2024-11-22 04:06:14 +00:00
Rename Particles/ParticlesMaterial "Flags" enum to "ParticleFlags"
"Flags" was a bit too ambiguous, and in 3D it hid GeometryInstance.Flags
This commit is contained in:
parent
1b499d244a
commit
47f8ac7864
@ -50,10 +50,10 @@
|
||||
<method name="get_particle_flag" qualifiers="const">
|
||||
<return type="bool">
|
||||
</return>
|
||||
<argument index="0" name="flag" type="int" enum="CPUParticles2D.Flags">
|
||||
<argument index="0" name="particle_flag" type="int" enum="CPUParticles2D.ParticleFlags">
|
||||
</argument>
|
||||
<description>
|
||||
Returns the enabled state of the given flag (see [enum Flags] for options).
|
||||
Returns the enabled state of the given flag (see [enum ParticleFlags] for options).
|
||||
</description>
|
||||
</method>
|
||||
<method name="restart">
|
||||
@ -99,12 +99,12 @@
|
||||
<method name="set_particle_flag">
|
||||
<return type="void">
|
||||
</return>
|
||||
<argument index="0" name="flag" type="int" enum="CPUParticles2D.Flags">
|
||||
<argument index="0" name="particle_flag" type="int" enum="CPUParticles2D.ParticleFlags">
|
||||
</argument>
|
||||
<argument index="1" name="enable" type="bool">
|
||||
</argument>
|
||||
<description>
|
||||
Enables or disables the given flag (see [enum Flags] for options).
|
||||
Enables or disables the given flag (see [enum ParticleFlags] for options).
|
||||
</description>
|
||||
</method>
|
||||
</methods>
|
||||
@ -196,9 +196,6 @@
|
||||
<member name="fixed_fps" type="int" setter="set_fixed_fps" getter="get_fixed_fps" default="0">
|
||||
The particle system's frame rate is fixed to a value. For instance, 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.
|
||||
</member>
|
||||
<member name="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="fract_delta" type="bool" setter="set_fractional_delta" getter="get_fractional_delta" default="true">
|
||||
If [code]true[/code], results in fractional delta calculation which has a smoother particles display effect.
|
||||
</member>
|
||||
@ -250,6 +247,9 @@
|
||||
<member name="orbit_velocity_random" type="float" setter="set_param_randomness" getter="get_param_randomness" default="0.0">
|
||||
Orbital velocity randomness ratio.
|
||||
</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="preprocess" type="float" setter="set_pre_process_time" getter="get_pre_process_time" default="0.0">
|
||||
Particle system starts as if it had already run for this many seconds.
|
||||
</member>
|
||||
@ -339,17 +339,17 @@
|
||||
<constant name="PARAM_MAX" value="12" enum="Parameter">
|
||||
Represents the size of the [enum Parameter] enum.
|
||||
</constant>
|
||||
<constant name="FLAG_ALIGN_Y_TO_VELOCITY" value="0" enum="Flags">
|
||||
Use with [method set_particle_flag] to set [member flag_align_y].
|
||||
<constant name="PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY" value="0" enum="ParticleFlags">
|
||||
Use with [method set_particle_flag] to set [member particle_flag_align_y].
|
||||
</constant>
|
||||
<constant name="FLAG_ROTATE_Y" value="1" enum="Flags">
|
||||
<constant name="PARTICLE_FLAG_ROTATE_Y" value="1" enum="ParticleFlags">
|
||||
Present for consistency with 3D particle nodes, not used in 2D.
|
||||
</constant>
|
||||
<constant name="FLAG_DISABLE_Z" value="2" enum="Flags">
|
||||
<constant name="PARTICLE_FLAG_DISABLE_Z" value="2" enum="ParticleFlags">
|
||||
Present for consistency with 3D particle nodes, not used in 2D.
|
||||
</constant>
|
||||
<constant name="FLAG_MAX" value="3" enum="Flags">
|
||||
Represents the size of the [enum Flags] enum.
|
||||
<constant name="PARTICLE_FLAG_MAX" value="3" enum="ParticleFlags">
|
||||
Represents the size of the [enum ParticleFlags] enum.
|
||||
</constant>
|
||||
<constant name="EMISSION_SHAPE_POINT" value="0" enum="EmissionShape">
|
||||
All particles will be emitted from a single point.
|
||||
|
@ -49,10 +49,10 @@
|
||||
<method name="get_particle_flag" qualifiers="const">
|
||||
<return type="bool">
|
||||
</return>
|
||||
<argument index="0" name="flag" type="int" enum="CPUParticles3D.Flags">
|
||||
<argument index="0" name="particle_flag" type="int" enum="CPUParticles3D.ParticleFlags">
|
||||
</argument>
|
||||
<description>
|
||||
Returns the enabled state of the given flag (see [enum Flags] for options).
|
||||
Returns the enabled state of the given particle flag (see [enum ParticleFlags] for options).
|
||||
</description>
|
||||
</method>
|
||||
<method name="restart">
|
||||
@ -98,12 +98,12 @@
|
||||
<method name="set_particle_flag">
|
||||
<return type="void">
|
||||
</return>
|
||||
<argument index="0" name="flag" type="int" enum="CPUParticles3D.Flags">
|
||||
<argument index="0" name="particle_flag" type="int" enum="CPUParticles3D.ParticleFlags">
|
||||
</argument>
|
||||
<argument index="1" name="enable" type="bool">
|
||||
</argument>
|
||||
<description>
|
||||
Enables or disables the given flag (see [enum Flags] for options).
|
||||
Enables or disables the given particle flag (see [enum ParticleFlags] for options).
|
||||
</description>
|
||||
</method>
|
||||
</methods>
|
||||
@ -195,15 +195,6 @@
|
||||
<member name="fixed_fps" type="int" setter="set_fixed_fps" getter="get_fixed_fps" default="0">
|
||||
The particle system's frame rate is fixed to a value. For instance, changing the value to 2 will make the particles render at 2 frames per second. Note this does not slow down the particle system itself.
|
||||
</member>
|
||||
<member name="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="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>
|
||||
<member name="flag_rotate_y" type="bool" setter="set_particle_flag" getter="get_particle_flag" default="false">
|
||||
If [code]true[/code], particles rotate around Y axis by [member angle].
|
||||
</member>
|
||||
<member name="flatness" type="float" setter="set_flatness" getter="get_flatness" default="0.0">
|
||||
Amount of [member spread] in Y/Z plane. A value of [code]1[/code] restricts particles to X/Z plane.
|
||||
</member>
|
||||
@ -254,7 +245,7 @@
|
||||
</member>
|
||||
<member name="orbit_velocity" type="float" setter="set_param" getter="get_param">
|
||||
Orbital velocity applied to each particle. Makes the particles circle around origin in the local XY plane. Specified in number of full rotations around origin per second.
|
||||
This property is only available when [member flag_disable_z] is [code]true[/code].
|
||||
This property is only available when [member particle_flag_disable_z] is [code]true[/code].
|
||||
</member>
|
||||
<member name="orbit_velocity_curve" type="Curve" setter="set_param_curve" getter="get_param_curve">
|
||||
Each particle's orbital velocity will vary along this [Curve].
|
||||
@ -262,6 +253,15 @@
|
||||
<member name="orbit_velocity_random" type="float" setter="set_param_randomness" getter="get_param_randomness">
|
||||
Orbital velocity randomness ratio.
|
||||
</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_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>
|
||||
<member name="particle_flag_rotate_y" type="bool" setter="set_particle_flag" getter="get_particle_flag" default="false">
|
||||
If [code]true[/code], particles rotate around Y axis by [member angle].
|
||||
</member>
|
||||
<member name="preprocess" type="float" setter="set_pre_process_time" getter="get_pre_process_time" default="0.0">
|
||||
Particle system starts as if it had already run for this many seconds.
|
||||
</member>
|
||||
@ -351,17 +351,17 @@
|
||||
<constant name="PARAM_MAX" value="12" enum="Parameter">
|
||||
Represents the size of the [enum Parameter] enum.
|
||||
</constant>
|
||||
<constant name="FLAG_ALIGN_Y_TO_VELOCITY" value="0" enum="Flags">
|
||||
Use with [method set_particle_flag] to set [member flag_align_y].
|
||||
<constant name="PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY" value="0" enum="ParticleFlags">
|
||||
Use with [method set_particle_flag] to set [member particle_flag_align_y].
|
||||
</constant>
|
||||
<constant name="FLAG_ROTATE_Y" value="1" enum="Flags">
|
||||
Use with [method set_particle_flag] to set [member flag_rotate_y].
|
||||
<constant name="PARTICLE_FLAG_ROTATE_Y" value="1" enum="ParticleFlags">
|
||||
Use with [method set_particle_flag] to set [member particle_flag_rotate_y].
|
||||
</constant>
|
||||
<constant name="FLAG_DISABLE_Z" value="2" enum="Flags">
|
||||
Use with [method set_particle_flag] to set [member flag_disable_z].
|
||||
<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="FLAG_MAX" value="3" enum="Flags">
|
||||
Represents the size of the [enum Flags] enum.
|
||||
<constant name="PARTICLE_FLAG_MAX" value="3" enum="ParticleFlags">
|
||||
Represents the size of the [enum ParticleFlags] enum.
|
||||
</constant>
|
||||
<constant name="EMISSION_SHAPE_POINT" value="0" enum="EmissionShape">
|
||||
All particles will be emitted from a single point.
|
||||
|
@ -11,15 +11,6 @@
|
||||
<tutorials>
|
||||
</tutorials>
|
||||
<methods>
|
||||
<method name="get_flag" qualifiers="const">
|
||||
<return type="bool">
|
||||
</return>
|
||||
<argument index="0" name="flag" type="int" enum="ParticlesMaterial.Flags">
|
||||
</argument>
|
||||
<description>
|
||||
Returns [code]true[/code] if the specified flag is enabled.
|
||||
</description>
|
||||
</method>
|
||||
<method name="get_param" qualifiers="const">
|
||||
<return type="float">
|
||||
</return>
|
||||
@ -47,15 +38,13 @@
|
||||
Returns the [Texture2D] used by the specified parameter.
|
||||
</description>
|
||||
</method>
|
||||
<method name="set_flag">
|
||||
<return type="void">
|
||||
<method name="get_particle_flag" qualifiers="const">
|
||||
<return type="bool">
|
||||
</return>
|
||||
<argument index="0" name="flag" type="int" enum="ParticlesMaterial.Flags">
|
||||
</argument>
|
||||
<argument index="1" name="enable" type="bool">
|
||||
<argument index="0" name="particle_flag" type="int" enum="ParticlesMaterial.ParticleFlags">
|
||||
</argument>
|
||||
<description>
|
||||
If [code]true[/code], enables the specified flag. See [enum Flags] for options.
|
||||
Returns [code]true[/code] if the specified particle flag is enabled. See [enum ParticleFlags] for options.
|
||||
</description>
|
||||
</method>
|
||||
<method name="set_param">
|
||||
@ -91,11 +80,22 @@
|
||||
Sets the [Texture2D] for the specified [enum Parameter].
|
||||
</description>
|
||||
</method>
|
||||
<method name="set_particle_flag">
|
||||
<return type="void">
|
||||
</return>
|
||||
<argument index="0" name="particle_flag" type="int" enum="ParticlesMaterial.ParticleFlags">
|
||||
</argument>
|
||||
<argument index="1" name="enable" type="bool">
|
||||
</argument>
|
||||
<description>
|
||||
If [code]true[/code], enables the specified particle flag. See [enum ParticleFlags] for options.
|
||||
</description>
|
||||
</method>
|
||||
</methods>
|
||||
<members>
|
||||
<member name="angle" type="float" setter="set_param" getter="get_param" default="0.0">
|
||||
Initial rotation applied to each particle, in degrees.
|
||||
Only applied when [member flag_disable_z] or [member flag_rotate_y] are [code]true[/code] or the [BaseMaterial3D] being used to draw the particle is using [constant BaseMaterial3D.BILLBOARD_PARTICLES].
|
||||
Only applied when [member particle_flag_disable_z] or [member particle_flag_rotate_y] are [code]true[/code] or the [BaseMaterial3D] being used to draw the particle is using [constant BaseMaterial3D.BILLBOARD_PARTICLES].
|
||||
</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].
|
||||
@ -105,7 +105,7 @@
|
||||
</member>
|
||||
<member name="angular_velocity" type="float" setter="set_param" getter="get_param" default="0.0">
|
||||
Initial angular velocity applied to each particle. Sets the speed of rotation of the particle.
|
||||
Only applied when [member flag_disable_z] or [member flag_rotate_y] are [code]true[/code] or the [BaseMaterial3D] being used to draw the particle is using [constant BaseMaterial3D.BILLBOARD_PARTICLES].
|
||||
Only applied when [member particle_flag_disable_z] or [member particle_flag_rotate_y] are [code]true[/code] or the [BaseMaterial3D] being used to draw the particle is using [constant BaseMaterial3D.BILLBOARD_PARTICLES].
|
||||
</member>
|
||||
<member name="angular_velocity_curve" type="Texture2D" setter="set_param_texture" getter="get_param_texture">
|
||||
Each particle's angular velocity will vary along this [CurveTexture].
|
||||
@ -180,15 +180,6 @@
|
||||
<member name="emission_sphere_radius" type="float" setter="set_emission_sphere_radius" getter="get_emission_sphere_radius">
|
||||
The sphere's radius if [code]emission_shape[/code] is set to [constant EMISSION_SHAPE_SPHERE].
|
||||
</member>
|
||||
<member name="flag_align_y" type="bool" setter="set_flag" getter="get_flag" default="false">
|
||||
Align Y axis of particle with the direction of its velocity.
|
||||
</member>
|
||||
<member name="flag_disable_z" type="bool" setter="set_flag" getter="get_flag" default="false">
|
||||
If [code]true[/code], particles will not move on the z axis.
|
||||
</member>
|
||||
<member name="flag_rotate_y" type="bool" setter="set_flag" getter="get_flag" default="false">
|
||||
If [code]true[/code], particles rotate around Y axis by [member angle].
|
||||
</member>
|
||||
<member name="flatness" type="float" setter="set_flatness" getter="get_flatness" default="0.0">
|
||||
Amount of [member spread] in Y/Z plane. A value of [code]1[/code] restricts particles to X/Z plane.
|
||||
</member>
|
||||
@ -224,7 +215,7 @@
|
||||
</member>
|
||||
<member name="orbit_velocity" type="float" setter="set_param" getter="get_param">
|
||||
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 flag_disable_z] is [code]true[/code].
|
||||
Only available when [member particle_flag_disable_z] is [code]true[/code].
|
||||
</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].
|
||||
@ -232,6 +223,15 @@
|
||||
<member name="orbit_velocity_random" type="float" setter="set_param_randomness" getter="get_param_randomness">
|
||||
Orbital velocity randomness ratio.
|
||||
</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_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>
|
||||
<member name="particle_flag_rotate_y" type="bool" setter="set_particle_flag" getter="get_particle_flag" default="false">
|
||||
If [code]true[/code], particles rotate around Y axis by [member angle].
|
||||
</member>
|
||||
<member name="radial_accel" type="float" setter="set_param" getter="get_param" default="0.0">
|
||||
Radial acceleration applied to each particle. Makes particle accelerate away from origin.
|
||||
</member>
|
||||
@ -311,17 +311,17 @@
|
||||
<constant name="PARAM_MAX" value="12" enum="Parameter">
|
||||
Represents the size of the [enum Parameter] enum.
|
||||
</constant>
|
||||
<constant name="FLAG_ALIGN_Y_TO_VELOCITY" value="0" enum="Flags">
|
||||
Use with [method set_flag] to set [member flag_align_y].
|
||||
<constant name="PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY" value="0" enum="ParticleFlags">
|
||||
Use with [method set_particle_flag] to set [member particle_flag_align_y].
|
||||
</constant>
|
||||
<constant name="FLAG_ROTATE_Y" value="1" enum="Flags">
|
||||
Use with [method set_flag] to set [member flag_rotate_y].
|
||||
<constant name="PARTICLE_FLAG_ROTATE_Y" value="1" enum="ParticleFlags">
|
||||
Use with [method set_particle_flag] to set [member particle_flag_rotate_y].
|
||||
</constant>
|
||||
<constant name="FLAG_DISABLE_Z" value="2" enum="Flags">
|
||||
Use with [method set_flag] to set [member flag_disable_z].
|
||||
<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="FLAG_MAX" value="3" enum="Flags">
|
||||
Represents the size of the [enum Flags] enum.
|
||||
<constant name="PARTICLE_FLAG_MAX" value="3" enum="ParticleFlags">
|
||||
Represents the size of the [enum ParticleFlags] enum.
|
||||
</constant>
|
||||
<constant name="EMISSION_SHAPE_POINT" value="0" enum="EmissionShape">
|
||||
All particles will be emitted from a single point.
|
||||
|
@ -397,14 +397,14 @@ Ref<Gradient> CPUParticles2D::get_color_ramp() const {
|
||||
return color_ramp;
|
||||
}
|
||||
|
||||
void CPUParticles2D::set_particle_flag(Flags p_flag, bool p_enable) {
|
||||
ERR_FAIL_INDEX(p_flag, FLAG_MAX);
|
||||
flags[p_flag] = p_enable;
|
||||
void CPUParticles2D::set_particle_flag(ParticleFlags p_particle_flag, bool p_enable) {
|
||||
ERR_FAIL_INDEX(p_particle_flag, PARTICLE_FLAG_MAX);
|
||||
particle_flags[p_particle_flag] = p_enable;
|
||||
}
|
||||
|
||||
bool CPUParticles2D::get_particle_flag(Flags p_flag) const {
|
||||
ERR_FAIL_INDEX_V(p_flag, FLAG_MAX, false);
|
||||
return flags[p_flag];
|
||||
bool CPUParticles2D::get_particle_flag(ParticleFlags p_particle_flag) const {
|
||||
ERR_FAIL_INDEX_V(p_particle_flag, PARTICLE_FLAG_MAX, false);
|
||||
return particle_flags[p_particle_flag];
|
||||
}
|
||||
|
||||
void CPUParticles2D::set_emission_shape(EmissionShape p_shape) {
|
||||
@ -905,7 +905,7 @@ void CPUParticles2D::_particles_process(float p_delta) {
|
||||
|
||||
p.color *= p.base_color;
|
||||
|
||||
if (flags[FLAG_ALIGN_Y_TO_VELOCITY]) {
|
||||
if (particle_flags[PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY]) {
|
||||
if (p.velocity.length() > 0.0) {
|
||||
p.transform.elements[1] = p.velocity.normalized();
|
||||
p.transform.elements[0] = p.transform.elements[1].tangent();
|
||||
@ -1130,7 +1130,7 @@ void CPUParticles2D::convert_from_particles(Node *p_particles) {
|
||||
set_color_ramp(gt->get_gradient());
|
||||
}
|
||||
|
||||
set_particle_flag(FLAG_ALIGN_Y_TO_VELOCITY, material->get_flag(ParticlesMaterial::FLAG_ALIGN_Y_TO_VELOCITY));
|
||||
set_particle_flag(PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY, material->get_particle_flag(ParticlesMaterial::PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY));
|
||||
|
||||
set_emission_shape(EmissionShape(material->get_emission_shape()));
|
||||
set_emission_sphere_radius(material->get_emission_sphere_radius());
|
||||
@ -1246,8 +1246,8 @@ void CPUParticles2D::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_color_ramp", "ramp"), &CPUParticles2D::set_color_ramp);
|
||||
ClassDB::bind_method(D_METHOD("get_color_ramp"), &CPUParticles2D::get_color_ramp);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_particle_flag", "flag", "enable"), &CPUParticles2D::set_particle_flag);
|
||||
ClassDB::bind_method(D_METHOD("get_particle_flag", "flag"), &CPUParticles2D::get_particle_flag);
|
||||
ClassDB::bind_method(D_METHOD("set_particle_flag", "particle_flag", "enable"), &CPUParticles2D::set_particle_flag);
|
||||
ClassDB::bind_method(D_METHOD("get_particle_flag", "particle_flag"), &CPUParticles2D::get_particle_flag);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_emission_shape", "shape"), &CPUParticles2D::set_emission_shape);
|
||||
ClassDB::bind_method(D_METHOD("get_emission_shape"), &CPUParticles2D::get_emission_shape);
|
||||
@ -1279,8 +1279,8 @@ void CPUParticles2D::_bind_methods() {
|
||||
ADD_PROPERTY(PropertyInfo(Variant::PACKED_VECTOR2_ARRAY, "emission_points"), "set_emission_points", "get_emission_points");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::PACKED_VECTOR2_ARRAY, "emission_normals"), "set_emission_normals", "get_emission_normals");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::PACKED_COLOR_ARRAY, "emission_colors"), "set_emission_colors", "get_emission_colors");
|
||||
ADD_GROUP("Flags", "flag_");
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "flag_align_y"), "set_particle_flag", "get_particle_flag", FLAG_ALIGN_Y_TO_VELOCITY);
|
||||
ADD_GROUP("Particle Flags", "particle_flag_");
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "particle_flag_align_y"), "set_particle_flag", "get_particle_flag", PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY);
|
||||
ADD_GROUP("Direction", "");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "direction"), "set_direction", "get_direction");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "spread", PROPERTY_HINT_RANGE, "0,180,0.01"), "set_spread", "get_spread");
|
||||
@ -1351,10 +1351,10 @@ void CPUParticles2D::_bind_methods() {
|
||||
BIND_ENUM_CONSTANT(PARAM_ANIM_OFFSET);
|
||||
BIND_ENUM_CONSTANT(PARAM_MAX);
|
||||
|
||||
BIND_ENUM_CONSTANT(FLAG_ALIGN_Y_TO_VELOCITY);
|
||||
BIND_ENUM_CONSTANT(FLAG_ROTATE_Y); // Unused, but exposed for consistency with 3D.
|
||||
BIND_ENUM_CONSTANT(FLAG_DISABLE_Z); // Unused, but exposed for consistency with 3D.
|
||||
BIND_ENUM_CONSTANT(FLAG_MAX);
|
||||
BIND_ENUM_CONSTANT(PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY);
|
||||
BIND_ENUM_CONSTANT(PARTICLE_FLAG_ROTATE_Y); // Unused, but exposed for consistency with 3D.
|
||||
BIND_ENUM_CONSTANT(PARTICLE_FLAG_DISABLE_Z); // Unused, but exposed for consistency with 3D.
|
||||
BIND_ENUM_CONSTANT(PARTICLE_FLAG_MAX);
|
||||
|
||||
BIND_ENUM_CONSTANT(EMISSION_SHAPE_POINT);
|
||||
BIND_ENUM_CONSTANT(EMISSION_SHAPE_SPHERE);
|
||||
@ -1415,8 +1415,8 @@ CPUParticles2D::CPUParticles2D() {
|
||||
set_param_randomness(Parameter(i), 0);
|
||||
}
|
||||
|
||||
for (int i = 0; i < FLAG_MAX; i++) {
|
||||
flags[i] = false;
|
||||
for (int i = 0; i < PARTICLE_FLAG_MAX; i++) {
|
||||
particle_flags[i] = false;
|
||||
}
|
||||
|
||||
set_color(Color(1, 1, 1, 1));
|
||||
|
@ -61,11 +61,11 @@ public:
|
||||
PARAM_MAX
|
||||
};
|
||||
|
||||
enum Flags {
|
||||
FLAG_ALIGN_Y_TO_VELOCITY,
|
||||
FLAG_ROTATE_Y, // Unused, but exposed for consistency with 3D.
|
||||
FLAG_DISABLE_Z, // Unused, but exposed for consistency with 3D.
|
||||
FLAG_MAX
|
||||
enum ParticleFlags {
|
||||
PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY,
|
||||
PARTICLE_FLAG_ROTATE_Y, // Unused, but exposed for consistency with 3D.
|
||||
PARTICLE_FLAG_DISABLE_Z, // Unused, but exposed for consistency with 3D.
|
||||
PARTICLE_FLAG_MAX
|
||||
};
|
||||
|
||||
enum EmissionShape {
|
||||
@ -159,7 +159,7 @@ private:
|
||||
Color color;
|
||||
Ref<Gradient> color_ramp;
|
||||
|
||||
bool flags[FLAG_MAX];
|
||||
bool particle_flags[PARTICLE_FLAG_MAX];
|
||||
|
||||
EmissionShape emission_shape;
|
||||
float emission_sphere_radius;
|
||||
@ -253,8 +253,8 @@ public:
|
||||
void set_color_ramp(const Ref<Gradient> &p_ramp);
|
||||
Ref<Gradient> get_color_ramp() const;
|
||||
|
||||
void set_particle_flag(Flags p_flag, bool p_enable);
|
||||
bool get_particle_flag(Flags p_flag) const;
|
||||
void set_particle_flag(ParticleFlags p_particle_flag, bool p_enable);
|
||||
bool get_particle_flag(ParticleFlags p_particle_flag) const;
|
||||
|
||||
void set_emission_shape(EmissionShape p_shape);
|
||||
void set_emission_sphere_radius(float p_radius);
|
||||
@ -287,7 +287,7 @@ public:
|
||||
|
||||
VARIANT_ENUM_CAST(CPUParticles2D::DrawOrder)
|
||||
VARIANT_ENUM_CAST(CPUParticles2D::Parameter)
|
||||
VARIANT_ENUM_CAST(CPUParticles2D::Flags)
|
||||
VARIANT_ENUM_CAST(CPUParticles2D::ParticleFlags)
|
||||
VARIANT_ENUM_CAST(CPUParticles2D::EmissionShape)
|
||||
|
||||
#endif // CPU_PARTICLES_2D_H
|
||||
|
@ -127,9 +127,9 @@ void GPUParticles2D::_update_particle_emission_transform() {
|
||||
void GPUParticles2D::set_process_material(const Ref<Material> &p_material) {
|
||||
process_material = p_material;
|
||||
Ref<ParticlesMaterial> pm = p_material;
|
||||
if (pm.is_valid() && !pm->get_flag(ParticlesMaterial::FLAG_DISABLE_Z) && pm->get_gravity() == Vector3(0, -9.8, 0)) {
|
||||
if (pm.is_valid() && !pm->get_particle_flag(ParticlesMaterial::PARTICLE_FLAG_DISABLE_Z) && pm->get_gravity() == Vector3(0, -9.8, 0)) {
|
||||
// Likely a new (3D) material, modify it to match 2D space
|
||||
pm->set_flag(ParticlesMaterial::FLAG_DISABLE_Z, true);
|
||||
pm->set_particle_flag(ParticlesMaterial::PARTICLE_FLAG_DISABLE_Z, true);
|
||||
pm->set_gravity(Vector3(0, 98, 0));
|
||||
}
|
||||
RID material_rid;
|
||||
|
@ -39,7 +39,7 @@ AABB CPUParticles3D::get_aabb() const {
|
||||
return AABB();
|
||||
}
|
||||
|
||||
Vector<Face3> CPUParticles3D::get_faces(uint32_t p_usage_flags) const {
|
||||
Vector<Face3> CPUParticles3D::get_faces(uint32_t p_usage_particle_flags) const {
|
||||
return Vector<Face3>();
|
||||
}
|
||||
|
||||
@ -368,17 +368,17 @@ Ref<Gradient> CPUParticles3D::get_color_ramp() const {
|
||||
return color_ramp;
|
||||
}
|
||||
|
||||
void CPUParticles3D::set_particle_flag(Flags p_flag, bool p_enable) {
|
||||
ERR_FAIL_INDEX(p_flag, FLAG_MAX);
|
||||
flags[p_flag] = p_enable;
|
||||
if (p_flag == FLAG_DISABLE_Z) {
|
||||
void CPUParticles3D::set_particle_flag(ParticleFlags p_particle_flag, bool p_enable) {
|
||||
ERR_FAIL_INDEX(p_particle_flag, PARTICLE_FLAG_MAX);
|
||||
particle_flags[p_particle_flag] = p_enable;
|
||||
if (p_particle_flag == PARTICLE_FLAG_DISABLE_Z) {
|
||||
_change_notify();
|
||||
}
|
||||
}
|
||||
|
||||
bool CPUParticles3D::get_particle_flag(Flags p_flag) const {
|
||||
ERR_FAIL_INDEX_V(p_flag, FLAG_MAX, false);
|
||||
return flags[p_flag];
|
||||
bool CPUParticles3D::get_particle_flag(ParticleFlags p_particle_flag) const {
|
||||
ERR_FAIL_INDEX_V(p_particle_flag, PARTICLE_FLAG_MAX, false);
|
||||
return particle_flags[p_particle_flag];
|
||||
}
|
||||
|
||||
void CPUParticles3D::set_emission_shape(EmissionShape p_shape) {
|
||||
@ -459,7 +459,7 @@ void CPUParticles3D::_validate_property(PropertyInfo &property) const {
|
||||
property.usage = 0;
|
||||
}
|
||||
|
||||
if (property.name.begins_with("orbit_") && !flags[FLAG_DISABLE_Z]) {
|
||||
if (property.name.begins_with("orbit_") && !particle_flags[PARTICLE_FLAG_DISABLE_Z]) {
|
||||
property.usage = 0;
|
||||
}
|
||||
}
|
||||
@ -675,7 +675,7 @@ void CPUParticles3D::_particles_process(float p_delta) {
|
||||
p.hue_rot_rand = Math::randf();
|
||||
p.anim_offset_rand = Math::randf();
|
||||
|
||||
if (flags[FLAG_DISABLE_Z]) {
|
||||
if (particle_flags[PARTICLE_FLAG_DISABLE_Z]) {
|
||||
float angle1_rad = Math::atan2(direction.y, direction.x) + (Math::randf() * 2.0 - 1.0) * Math_PI * spread / 180.0;
|
||||
Vector3 rot = Vector3(Math::cos(angle1_rad), Math::sin(angle1_rad), 0.0);
|
||||
p.velocity = rot * parameters[PARAM_INITIAL_LINEAR_VELOCITY] * Math::lerp(1.0f, float(Math::randf()), randomness[PARAM_INITIAL_LINEAR_VELOCITY]);
|
||||
@ -725,7 +725,7 @@ void CPUParticles3D::_particles_process(float p_delta) {
|
||||
p.transform.origin = emission_points.get(random_idx);
|
||||
|
||||
if (emission_shape == EMISSION_SHAPE_DIRECTED_POINTS && emission_normals.size() == pc) {
|
||||
if (flags[FLAG_DISABLE_Z]) {
|
||||
if (particle_flags[PARTICLE_FLAG_DISABLE_Z]) {
|
||||
Vector3 normal = emission_normals.get(random_idx);
|
||||
Vector2 normal_2d(normal.x, normal.y);
|
||||
Transform2D m2;
|
||||
@ -762,7 +762,7 @@ void CPUParticles3D::_particles_process(float p_delta) {
|
||||
p.transform = emission_xform * p.transform;
|
||||
}
|
||||
|
||||
if (flags[FLAG_DISABLE_Z]) {
|
||||
if (particle_flags[PARTICLE_FLAG_DISABLE_Z]) {
|
||||
p.velocity.z = 0.0;
|
||||
p.transform.origin.z = 0.0;
|
||||
}
|
||||
@ -783,7 +783,7 @@ void CPUParticles3D::_particles_process(float p_delta) {
|
||||
}
|
||||
|
||||
float tex_orbit_velocity = 0.0;
|
||||
if (flags[FLAG_DISABLE_Z]) {
|
||||
if (particle_flags[PARTICLE_FLAG_DISABLE_Z]) {
|
||||
if (curve_parameters[PARAM_ORBIT_VELOCITY].is_valid()) {
|
||||
tex_orbit_velocity = curve_parameters[PARAM_ORBIT_VELOCITY]->interpolate(p.custom[1]);
|
||||
}
|
||||
@ -830,7 +830,7 @@ void CPUParticles3D::_particles_process(float p_delta) {
|
||||
|
||||
Vector3 force = gravity;
|
||||
Vector3 position = p.transform.origin;
|
||||
if (flags[FLAG_DISABLE_Z]) {
|
||||
if (particle_flags[PARTICLE_FLAG_DISABLE_Z]) {
|
||||
position.z = 0.0;
|
||||
}
|
||||
//apply linear acceleration
|
||||
@ -840,7 +840,7 @@ void CPUParticles3D::_particles_process(float p_delta) {
|
||||
Vector3 diff = position - org;
|
||||
force += diff.length() > 0.0 ? diff.normalized() * (parameters[PARAM_RADIAL_ACCEL] + tex_radial_accel) * Math::lerp(1.0f, rand_from_seed(alt_seed), randomness[PARAM_RADIAL_ACCEL]) : Vector3();
|
||||
//apply tangential acceleration;
|
||||
if (flags[FLAG_DISABLE_Z]) {
|
||||
if (particle_flags[PARTICLE_FLAG_DISABLE_Z]) {
|
||||
Vector2 yx = Vector2(diff.y, diff.x);
|
||||
Vector2 yx2 = (yx * Vector2(-1.0, 1.0)).normalized();
|
||||
force += yx.length() > 0.0 ? Vector3(yx2.x, yx2.y, 0.0) * ((parameters[PARAM_TANGENTIAL_ACCEL] + tex_tangential_accel) * Math::lerp(1.0f, rand_from_seed(alt_seed), randomness[PARAM_TANGENTIAL_ACCEL])) : Vector3();
|
||||
@ -852,7 +852,7 @@ void CPUParticles3D::_particles_process(float p_delta) {
|
||||
//apply attractor forces
|
||||
p.velocity += force * local_delta;
|
||||
//orbit velocity
|
||||
if (flags[FLAG_DISABLE_Z]) {
|
||||
if (particle_flags[PARTICLE_FLAG_DISABLE_Z]) {
|
||||
float orbit_amount = (parameters[PARAM_ORBIT_VELOCITY] + tex_orbit_velocity) * Math::lerp(1.0f, rand_from_seed(alt_seed), randomness[PARAM_ORBIT_VELOCITY]);
|
||||
if (orbit_amount != 0.0) {
|
||||
float ang = orbit_amount * local_delta * Math_PI * 2.0;
|
||||
@ -923,8 +923,8 @@ void CPUParticles3D::_particles_process(float p_delta) {
|
||||
|
||||
p.color *= p.base_color;
|
||||
|
||||
if (flags[FLAG_DISABLE_Z]) {
|
||||
if (flags[FLAG_ALIGN_Y_TO_VELOCITY]) {
|
||||
if (particle_flags[PARTICLE_FLAG_DISABLE_Z]) {
|
||||
if (particle_flags[PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY]) {
|
||||
if (p.velocity.length() > 0.0) {
|
||||
p.transform.basis.set_axis(1, p.velocity.normalized());
|
||||
} else {
|
||||
@ -941,7 +941,7 @@ void CPUParticles3D::_particles_process(float p_delta) {
|
||||
|
||||
} else {
|
||||
//orient particle Y towards velocity
|
||||
if (flags[FLAG_ALIGN_Y_TO_VELOCITY]) {
|
||||
if (particle_flags[PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY]) {
|
||||
if (p.velocity.length() > 0.0) {
|
||||
p.transform.basis.set_axis(1, p.velocity.normalized());
|
||||
} else {
|
||||
@ -959,7 +959,7 @@ void CPUParticles3D::_particles_process(float p_delta) {
|
||||
}
|
||||
|
||||
//turn particle by rotation in Y
|
||||
if (flags[FLAG_ROTATE_Y]) {
|
||||
if (particle_flags[PARTICLE_FLAG_ROTATE_Y]) {
|
||||
Basis rot_y(Vector3(0, 1, 0), p.custom[0]);
|
||||
p.transform.basis = p.transform.basis * rot_y;
|
||||
}
|
||||
@ -973,7 +973,7 @@ void CPUParticles3D::_particles_process(float p_delta) {
|
||||
|
||||
p.transform.basis.scale(Vector3(1, 1, 1) * base_scale);
|
||||
|
||||
if (flags[FLAG_DISABLE_Z]) {
|
||||
if (particle_flags[PARTICLE_FLAG_DISABLE_Z]) {
|
||||
p.velocity.z = 0.0;
|
||||
p.transform.origin.z = 0.0;
|
||||
}
|
||||
@ -1199,9 +1199,9 @@ void CPUParticles3D::convert_from_particles(Node *p_particles) {
|
||||
set_color_ramp(gt->get_gradient());
|
||||
}
|
||||
|
||||
set_particle_flag(FLAG_ALIGN_Y_TO_VELOCITY, material->get_flag(ParticlesMaterial::FLAG_ALIGN_Y_TO_VELOCITY));
|
||||
set_particle_flag(FLAG_ROTATE_Y, material->get_flag(ParticlesMaterial::FLAG_ROTATE_Y));
|
||||
set_particle_flag(FLAG_DISABLE_Z, material->get_flag(ParticlesMaterial::FLAG_DISABLE_Z));
|
||||
set_particle_flag(PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY, material->get_particle_flag(ParticlesMaterial::PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY));
|
||||
set_particle_flag(PARTICLE_FLAG_ROTATE_Y, material->get_particle_flag(ParticlesMaterial::PARTICLE_FLAG_ROTATE_Y));
|
||||
set_particle_flag(PARTICLE_FLAG_DISABLE_Z, material->get_particle_flag(ParticlesMaterial::PARTICLE_FLAG_DISABLE_Z));
|
||||
|
||||
set_emission_shape(EmissionShape(material->get_emission_shape()));
|
||||
set_emission_sphere_radius(material->get_emission_sphere_radius());
|
||||
@ -1318,8 +1318,8 @@ void CPUParticles3D::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_color_ramp", "ramp"), &CPUParticles3D::set_color_ramp);
|
||||
ClassDB::bind_method(D_METHOD("get_color_ramp"), &CPUParticles3D::get_color_ramp);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_particle_flag", "flag", "enable"), &CPUParticles3D::set_particle_flag);
|
||||
ClassDB::bind_method(D_METHOD("get_particle_flag", "flag"), &CPUParticles3D::get_particle_flag);
|
||||
ClassDB::bind_method(D_METHOD("set_particle_flag", "particle_flag", "enable"), &CPUParticles3D::set_particle_flag);
|
||||
ClassDB::bind_method(D_METHOD("get_particle_flag", "particle_flag"), &CPUParticles3D::get_particle_flag);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_emission_shape", "shape"), &CPUParticles3D::set_emission_shape);
|
||||
ClassDB::bind_method(D_METHOD("get_emission_shape"), &CPUParticles3D::get_emission_shape);
|
||||
@ -1351,10 +1351,10 @@ void CPUParticles3D::_bind_methods() {
|
||||
ADD_PROPERTY(PropertyInfo(Variant::PACKED_VECTOR3_ARRAY, "emission_points"), "set_emission_points", "get_emission_points");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::PACKED_VECTOR3_ARRAY, "emission_normals"), "set_emission_normals", "get_emission_normals");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::PACKED_COLOR_ARRAY, "emission_colors"), "set_emission_colors", "get_emission_colors");
|
||||
ADD_GROUP("Flags", "flag_");
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "flag_align_y"), "set_particle_flag", "get_particle_flag", FLAG_ALIGN_Y_TO_VELOCITY);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "flag_rotate_y"), "set_particle_flag", "get_particle_flag", FLAG_ROTATE_Y);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "flag_disable_z"), "set_particle_flag", "get_particle_flag", FLAG_DISABLE_Z);
|
||||
ADD_GROUP("Particle Flags", "particle_flag_");
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "particle_flag_align_y"), "set_particle_flag", "get_particle_flag", PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "particle_flag_rotate_y"), "set_particle_flag", "get_particle_flag", PARTICLE_FLAG_ROTATE_Y);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "particle_flag_disable_z"), "set_particle_flag", "get_particle_flag", PARTICLE_FLAG_DISABLE_Z);
|
||||
ADD_GROUP("Direction", "");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "direction"), "set_direction", "get_direction");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "spread", PROPERTY_HINT_RANGE, "0,180,0.01"), "set_spread", "get_spread");
|
||||
@ -1426,10 +1426,10 @@ void CPUParticles3D::_bind_methods() {
|
||||
BIND_ENUM_CONSTANT(PARAM_ANIM_OFFSET);
|
||||
BIND_ENUM_CONSTANT(PARAM_MAX);
|
||||
|
||||
BIND_ENUM_CONSTANT(FLAG_ALIGN_Y_TO_VELOCITY);
|
||||
BIND_ENUM_CONSTANT(FLAG_ROTATE_Y);
|
||||
BIND_ENUM_CONSTANT(FLAG_DISABLE_Z);
|
||||
BIND_ENUM_CONSTANT(FLAG_MAX);
|
||||
BIND_ENUM_CONSTANT(PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY);
|
||||
BIND_ENUM_CONSTANT(PARTICLE_FLAG_ROTATE_Y);
|
||||
BIND_ENUM_CONSTANT(PARTICLE_FLAG_DISABLE_Z);
|
||||
BIND_ENUM_CONSTANT(PARTICLE_FLAG_MAX);
|
||||
|
||||
BIND_ENUM_CONSTANT(EMISSION_SHAPE_POINT);
|
||||
BIND_ENUM_CONSTANT(EMISSION_SHAPE_SPHERE);
|
||||
@ -1493,8 +1493,8 @@ CPUParticles3D::CPUParticles3D() {
|
||||
set_param_randomness(Parameter(i), 0);
|
||||
}
|
||||
|
||||
for (int i = 0; i < FLAG_MAX; i++) {
|
||||
flags[i] = false;
|
||||
for (int i = 0; i < PARTICLE_FLAG_MAX; i++) {
|
||||
particle_flags[i] = false;
|
||||
}
|
||||
|
||||
can_update = false;
|
||||
|
@ -61,11 +61,11 @@ public:
|
||||
PARAM_MAX
|
||||
};
|
||||
|
||||
enum Flags {
|
||||
FLAG_ALIGN_Y_TO_VELOCITY,
|
||||
FLAG_ROTATE_Y,
|
||||
FLAG_DISABLE_Z,
|
||||
FLAG_MAX
|
||||
enum ParticleFlags {
|
||||
PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY,
|
||||
PARTICLE_FLAG_ROTATE_Y,
|
||||
PARTICLE_FLAG_DISABLE_Z,
|
||||
PARTICLE_FLAG_MAX
|
||||
};
|
||||
|
||||
enum EmissionShape {
|
||||
@ -160,7 +160,7 @@ private:
|
||||
Color color;
|
||||
Ref<Gradient> color_ramp;
|
||||
|
||||
bool flags[FLAG_MAX];
|
||||
bool particle_flags[PARTICLE_FLAG_MAX];
|
||||
|
||||
EmissionShape emission_shape;
|
||||
float emission_sphere_radius;
|
||||
@ -256,8 +256,8 @@ public:
|
||||
void set_color_ramp(const Ref<Gradient> &p_ramp);
|
||||
Ref<Gradient> get_color_ramp() const;
|
||||
|
||||
void set_particle_flag(Flags p_flag, bool p_enable);
|
||||
bool get_particle_flag(Flags p_flag) const;
|
||||
void set_particle_flag(ParticleFlags p_particle_flag, bool p_enable);
|
||||
bool get_particle_flag(ParticleFlags p_particle_flag) const;
|
||||
|
||||
void set_emission_shape(EmissionShape p_shape);
|
||||
void set_emission_sphere_radius(float p_radius);
|
||||
@ -290,7 +290,7 @@ public:
|
||||
|
||||
VARIANT_ENUM_CAST(CPUParticles3D::DrawOrder)
|
||||
VARIANT_ENUM_CAST(CPUParticles3D::Parameter)
|
||||
VARIANT_ENUM_CAST(CPUParticles3D::Flags)
|
||||
VARIANT_ENUM_CAST(CPUParticles3D::ParticleFlags)
|
||||
VARIANT_ENUM_CAST(CPUParticles3D::EmissionShape)
|
||||
|
||||
#endif // CPU_PARTICLES_H
|
||||
|
@ -329,7 +329,7 @@ void ParticlesMaterial::_update_shader() {
|
||||
code += " float tex_linear_velocity = 0.0;\n";
|
||||
}
|
||||
|
||||
if (flags[FLAG_DISABLE_Z]) {
|
||||
if (particle_flags[PARTICLE_FLAG_DISABLE_Z]) {
|
||||
code += " float angle1_rad = rand_from_seed_m1_p1(alt_seed) * spread_rad;\n";
|
||||
code += " angle1_rad += direction.x != 0.0 ? atan(direction.y, direction.x) : sign(direction.y) * (pi / 2.0);\n";
|
||||
code += " vec3 rot = vec3(cos(angle1_rad), sin(angle1_rad), 0.0);\n";
|
||||
@ -377,7 +377,7 @@ void ParticlesMaterial::_update_shader() {
|
||||
code += " TRANSFORM[3].xyz = texelFetch(emission_texture_points, emission_tex_ofs, 0).xyz;\n";
|
||||
|
||||
if (emission_shape == EMISSION_SHAPE_DIRECTED_POINTS) {
|
||||
if (flags[FLAG_DISABLE_Z]) {
|
||||
if (particle_flags[PARTICLE_FLAG_DISABLE_Z]) {
|
||||
code += " mat2 rotm;";
|
||||
code += " rotm[0] = texelFetch(emission_texture_normal, emission_tex_ofs, 0).xy;\n";
|
||||
code += " rotm[1] = rotm[0].yx * vec2(1.0, -1.0);\n";
|
||||
@ -398,7 +398,7 @@ void ParticlesMaterial::_update_shader() {
|
||||
|
||||
code += " if (RESTART_VELOCITY) VELOCITY = (EMISSION_TRANSFORM * vec4(VELOCITY, 0.0)).xyz;\n";
|
||||
code += " TRANSFORM = EMISSION_TRANSFORM * TRANSFORM;\n";
|
||||
if (flags[FLAG_DISABLE_Z]) {
|
||||
if (particle_flags[PARTICLE_FLAG_DISABLE_Z]) {
|
||||
code += " VELOCITY.z = 0.0;\n";
|
||||
code += " TRANSFORM[3].z = 0.0;\n";
|
||||
}
|
||||
@ -413,7 +413,7 @@ void ParticlesMaterial::_update_shader() {
|
||||
code += " float tex_linear_velocity = 0.0;\n";
|
||||
}
|
||||
|
||||
if (flags[FLAG_DISABLE_Z]) {
|
||||
if (particle_flags[PARTICLE_FLAG_DISABLE_Z]) {
|
||||
if (tex_parameters[PARAM_ORBIT_VELOCITY].is_valid()) {
|
||||
code += " float tex_orbit_velocity = textureLod(orbit_velocity_texture, vec2(CUSTOM.y, 0.0), 0.0).r;\n";
|
||||
} else {
|
||||
@ -471,7 +471,7 @@ void ParticlesMaterial::_update_shader() {
|
||||
|
||||
code += " vec3 force = gravity;\n";
|
||||
code += " vec3 pos = TRANSFORM[3].xyz;\n";
|
||||
if (flags[FLAG_DISABLE_Z]) {
|
||||
if (particle_flags[PARTICLE_FLAG_DISABLE_Z]) {
|
||||
code += " pos.z = 0.0;\n";
|
||||
}
|
||||
code += " // apply linear acceleration\n";
|
||||
@ -481,7 +481,7 @@ void ParticlesMaterial::_update_shader() {
|
||||
code += " vec3 diff = pos - org;\n";
|
||||
code += " force += length(diff) > 0.0 ? normalize(diff) * (radial_accel + tex_radial_accel) * mix(1.0, rand_from_seed(alt_seed), radial_accel_random) : vec3(0.0);\n";
|
||||
code += " // apply tangential acceleration;\n";
|
||||
if (flags[FLAG_DISABLE_Z]) {
|
||||
if (particle_flags[PARTICLE_FLAG_DISABLE_Z]) {
|
||||
code += " force += length(diff.yx) > 0.0 ? vec3(normalize(diff.yx * vec2(-1.0, 1.0)), 0.0) * ((tangent_accel + tex_tangent_accel) * mix(1.0, rand_from_seed(alt_seed), tangent_accel_random)) : vec3(0.0);\n";
|
||||
|
||||
} else {
|
||||
@ -495,7 +495,7 @@ void ParticlesMaterial::_update_shader() {
|
||||
code += " // apply attractor forces\n";
|
||||
code += " VELOCITY += force * DELTA;\n";
|
||||
code += " // orbit velocity\n";
|
||||
if (flags[FLAG_DISABLE_Z]) {
|
||||
if (particle_flags[PARTICLE_FLAG_DISABLE_Z]) {
|
||||
code += " float orbit_amount = (orbit_velocity + tex_orbit_velocity) * mix(1.0, rand_from_seed(alt_seed), orbit_velocity_random);\n";
|
||||
code += " if (orbit_amount != 0.0) {\n";
|
||||
code += " float ang = orbit_amount * DELTA * pi * 2.0;\n";
|
||||
@ -562,8 +562,8 @@ void ParticlesMaterial::_update_shader() {
|
||||
}
|
||||
code += "\n";
|
||||
|
||||
if (flags[FLAG_DISABLE_Z]) {
|
||||
if (flags[FLAG_ALIGN_Y_TO_VELOCITY]) {
|
||||
if (particle_flags[PARTICLE_FLAG_DISABLE_Z]) {
|
||||
if (particle_flags[PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY]) {
|
||||
code += " if (length(VELOCITY) > 0.0) {\n";
|
||||
code += " TRANSFORM[1].xyz = normalize(VELOCITY);\n";
|
||||
code += " } else {\n";
|
||||
@ -579,7 +579,7 @@ void ParticlesMaterial::_update_shader() {
|
||||
|
||||
} else {
|
||||
// orient particle Y towards velocity
|
||||
if (flags[FLAG_ALIGN_Y_TO_VELOCITY]) {
|
||||
if (particle_flags[PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY]) {
|
||||
code += " if (length(VELOCITY) > 0.0) {\n";
|
||||
code += " TRANSFORM[1].xyz = normalize(VELOCITY);\n";
|
||||
code += " } else {\n";
|
||||
@ -598,7 +598,7 @@ void ParticlesMaterial::_update_shader() {
|
||||
code += " TRANSFORM[2].xyz = normalize(TRANSFORM[2].xyz);\n";
|
||||
}
|
||||
// turn particle by rotation in Y
|
||||
if (flags[FLAG_ROTATE_Y]) {
|
||||
if (particle_flags[PARTICLE_FLAG_ROTATE_Y]) {
|
||||
code += " TRANSFORM = TRANSFORM * mat4(vec4(cos(CUSTOM.x), 0.0, -sin(CUSTOM.x), 0.0), vec4(0.0, 1.0, 0.0, 0.0), vec4(sin(CUSTOM.x), 0.0, cos(CUSTOM.x), 0.0), vec4(0.0, 0.0, 0.0, 1.0));\n";
|
||||
}
|
||||
}
|
||||
@ -611,7 +611,7 @@ void ParticlesMaterial::_update_shader() {
|
||||
code += " TRANSFORM[0].xyz *= base_scale;\n";
|
||||
code += " TRANSFORM[1].xyz *= base_scale;\n";
|
||||
code += " TRANSFORM[2].xyz *= base_scale;\n";
|
||||
if (flags[FLAG_DISABLE_Z]) {
|
||||
if (particle_flags[PARTICLE_FLAG_DISABLE_Z]) {
|
||||
code += " VELOCITY.z = 0.0;\n";
|
||||
code += " TRANSFORM[3].z = 0.0;\n";
|
||||
}
|
||||
@ -916,18 +916,18 @@ Ref<Texture2D> ParticlesMaterial::get_color_ramp() const {
|
||||
return color_ramp;
|
||||
}
|
||||
|
||||
void ParticlesMaterial::set_flag(Flags p_flag, bool p_enable) {
|
||||
ERR_FAIL_INDEX(p_flag, FLAG_MAX);
|
||||
flags[p_flag] = p_enable;
|
||||
void ParticlesMaterial::set_particle_flag(ParticleFlags p_particle_flag, bool p_enable) {
|
||||
ERR_FAIL_INDEX(p_particle_flag, PARTICLE_FLAG_MAX);
|
||||
particle_flags[p_particle_flag] = p_enable;
|
||||
_queue_shader_change();
|
||||
if (p_flag == FLAG_DISABLE_Z) {
|
||||
if (p_particle_flag == PARTICLE_FLAG_DISABLE_Z) {
|
||||
_change_notify();
|
||||
}
|
||||
}
|
||||
|
||||
bool ParticlesMaterial::get_flag(Flags p_flag) const {
|
||||
ERR_FAIL_INDEX_V(p_flag, FLAG_MAX, false);
|
||||
return flags[p_flag];
|
||||
bool ParticlesMaterial::get_particle_flag(ParticleFlags p_particle_flag) const {
|
||||
ERR_FAIL_INDEX_V(p_particle_flag, PARTICLE_FLAG_MAX, false);
|
||||
return particle_flags[p_particle_flag];
|
||||
}
|
||||
|
||||
void ParticlesMaterial::set_emission_shape(EmissionShape p_shape) {
|
||||
@ -1056,7 +1056,7 @@ void ParticlesMaterial::_validate_property(PropertyInfo &property) const {
|
||||
property.usage = 0;
|
||||
}
|
||||
|
||||
if (property.name.begins_with("orbit_") && !flags[FLAG_DISABLE_Z]) {
|
||||
if (property.name.begins_with("orbit_") && !particle_flags[PARTICLE_FLAG_DISABLE_Z]) {
|
||||
property.usage = 0;
|
||||
}
|
||||
}
|
||||
@ -1170,8 +1170,8 @@ void ParticlesMaterial::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_color_ramp", "ramp"), &ParticlesMaterial::set_color_ramp);
|
||||
ClassDB::bind_method(D_METHOD("get_color_ramp"), &ParticlesMaterial::get_color_ramp);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_flag", "flag", "enable"), &ParticlesMaterial::set_flag);
|
||||
ClassDB::bind_method(D_METHOD("get_flag", "flag"), &ParticlesMaterial::get_flag);
|
||||
ClassDB::bind_method(D_METHOD("set_particle_flag", "particle_flag", "enable"), &ParticlesMaterial::set_particle_flag);
|
||||
ClassDB::bind_method(D_METHOD("get_particle_flag", "particle_flag"), &ParticlesMaterial::get_particle_flag);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_emission_shape", "shape"), &ParticlesMaterial::set_emission_shape);
|
||||
ClassDB::bind_method(D_METHOD("get_emission_shape"), &ParticlesMaterial::get_emission_shape);
|
||||
@ -1238,10 +1238,10 @@ void ParticlesMaterial::_bind_methods() {
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "emission_normal_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_emission_normal_texture", "get_emission_normal_texture");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "emission_color_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_emission_color_texture", "get_emission_color_texture");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "emission_point_count", PROPERTY_HINT_RANGE, "0,1000000,1"), "set_emission_point_count", "get_emission_point_count");
|
||||
ADD_GROUP("Flags", "flag_");
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "flag_align_y"), "set_flag", "get_flag", FLAG_ALIGN_Y_TO_VELOCITY);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "flag_rotate_y"), "set_flag", "get_flag", FLAG_ROTATE_Y);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "flag_disable_z"), "set_flag", "get_flag", FLAG_DISABLE_Z);
|
||||
ADD_GROUP("ParticleFlags", "particle_flag_");
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "particle_flag_align_y"), "set_particle_flag", "get_particle_flag", PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "particle_flag_rotate_y"), "set_particle_flag", "get_particle_flag", PARTICLE_FLAG_ROTATE_Y);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "particle_flag_disable_z"), "set_particle_flag", "get_particle_flag", PARTICLE_FLAG_DISABLE_Z);
|
||||
ADD_GROUP("Direction", "");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "direction"), "set_direction", "get_direction");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "spread", PROPERTY_HINT_RANGE, "0,180,0.01"), "set_spread", "get_spread");
|
||||
@ -1327,10 +1327,10 @@ void ParticlesMaterial::_bind_methods() {
|
||||
BIND_ENUM_CONSTANT(PARAM_ANIM_OFFSET);
|
||||
BIND_ENUM_CONSTANT(PARAM_MAX);
|
||||
|
||||
BIND_ENUM_CONSTANT(FLAG_ALIGN_Y_TO_VELOCITY);
|
||||
BIND_ENUM_CONSTANT(FLAG_ROTATE_Y);
|
||||
BIND_ENUM_CONSTANT(FLAG_DISABLE_Z);
|
||||
BIND_ENUM_CONSTANT(FLAG_MAX);
|
||||
BIND_ENUM_CONSTANT(PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY);
|
||||
BIND_ENUM_CONSTANT(PARTICLE_FLAG_ROTATE_Y);
|
||||
BIND_ENUM_CONSTANT(PARTICLE_FLAG_DISABLE_Z);
|
||||
BIND_ENUM_CONSTANT(PARTICLE_FLAG_MAX);
|
||||
|
||||
BIND_ENUM_CONSTANT(EMISSION_SHAPE_POINT);
|
||||
BIND_ENUM_CONSTANT(EMISSION_SHAPE_SPHERE);
|
||||
@ -1385,8 +1385,8 @@ ParticlesMaterial::ParticlesMaterial() :
|
||||
set_param_randomness(Parameter(i), 0);
|
||||
}
|
||||
|
||||
for (int i = 0; i < FLAG_MAX; i++) {
|
||||
flags[i] = false;
|
||||
for (int i = 0; i < PARTICLE_FLAG_MAX; i++) {
|
||||
particle_flags[i] = false;
|
||||
}
|
||||
|
||||
set_color(Color(1, 1, 1, 1));
|
||||
|
@ -61,11 +61,11 @@ public:
|
||||
PARAM_MAX
|
||||
};
|
||||
|
||||
enum Flags {
|
||||
FLAG_ALIGN_Y_TO_VELOCITY,
|
||||
FLAG_ROTATE_Y,
|
||||
FLAG_DISABLE_Z,
|
||||
FLAG_MAX
|
||||
enum ParticleFlags {
|
||||
PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY,
|
||||
PARTICLE_FLAG_ROTATE_Y,
|
||||
PARTICLE_FLAG_DISABLE_Z,
|
||||
PARTICLE_FLAG_MAX
|
||||
};
|
||||
|
||||
enum EmissionShape {
|
||||
@ -90,7 +90,7 @@ private:
|
||||
struct {
|
||||
uint32_t texture_mask : 16;
|
||||
uint32_t texture_color : 1;
|
||||
uint32_t flags : 4;
|
||||
uint32_t particle_flags : 4;
|
||||
uint32_t emission_shape : 2;
|
||||
uint32_t invalid_key : 1;
|
||||
uint32_t has_emission_color : 1;
|
||||
@ -124,9 +124,9 @@ private:
|
||||
mk.texture_mask |= (1 << i);
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < FLAG_MAX; i++) {
|
||||
if (flags[i]) {
|
||||
mk.flags |= (1 << i);
|
||||
for (int i = 0; i < PARTICLE_FLAG_MAX; i++) {
|
||||
if (particle_flags[i]) {
|
||||
mk.particle_flags |= (1 << i);
|
||||
}
|
||||
}
|
||||
|
||||
@ -227,7 +227,7 @@ private:
|
||||
Color color;
|
||||
Ref<Texture2D> color_ramp;
|
||||
|
||||
bool flags[FLAG_MAX];
|
||||
bool particle_flags[PARTICLE_FLAG_MAX];
|
||||
|
||||
EmissionShape emission_shape;
|
||||
float emission_sphere_radius;
|
||||
@ -284,8 +284,8 @@ public:
|
||||
void set_color_ramp(const Ref<Texture2D> &p_texture);
|
||||
Ref<Texture2D> get_color_ramp() const;
|
||||
|
||||
void set_flag(Flags p_flag, bool p_enable);
|
||||
bool get_flag(Flags p_flag) const;
|
||||
void set_particle_flag(ParticleFlags p_particle_flag, bool p_enable);
|
||||
bool get_particle_flag(ParticleFlags p_particle_flag) const;
|
||||
|
||||
void set_emission_shape(EmissionShape p_shape);
|
||||
void set_emission_sphere_radius(float p_radius);
|
||||
@ -349,7 +349,7 @@ public:
|
||||
};
|
||||
|
||||
VARIANT_ENUM_CAST(ParticlesMaterial::Parameter)
|
||||
VARIANT_ENUM_CAST(ParticlesMaterial::Flags)
|
||||
VARIANT_ENUM_CAST(ParticlesMaterial::ParticleFlags)
|
||||
VARIANT_ENUM_CAST(ParticlesMaterial::EmissionShape)
|
||||
VARIANT_ENUM_CAST(ParticlesMaterial::SubEmitterMode)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user