change emit shape circle to sphere in CPUParticles2D

This commit is contained in:
clayjohn 2019-06-17 11:59:31 -07:00
parent 0f543ba99d
commit 7d1ee6d3c3
3 changed files with 8 additions and 7 deletions

View File

@ -270,8 +270,8 @@
<constant name="EMISSION_SHAPE_POINT" value="0" enum="EmissionShape"> <constant name="EMISSION_SHAPE_POINT" value="0" enum="EmissionShape">
All particles will be emitted from a single point. All particles will be emitted from a single point.
</constant> </constant>
<constant name="EMISSION_SHAPE_CIRCLE" value="1" enum="EmissionShape"> <constant name="EMISSION_SHAPE_SPHERE" value="1" enum="EmissionShape">
Particles will be emitted on the perimeter of a circle. Particles will be emitted on the surface of a sphere flattened to two dimensions.
</constant> </constant>
<constant name="EMISSION_SHAPE_RECTANGLE" value="2" enum="EmissionShape"> <constant name="EMISSION_SHAPE_RECTANGLE" value="2" enum="EmissionShape">
Particles will be emitted in the area of a rectangle. Particles will be emitted in the area of a rectangle.

View File

@ -469,7 +469,7 @@ void CPUParticles2D::_validate_property(PropertyInfo &property) const {
property.usage = 0; property.usage = 0;
} }
if (property.name == "emission_sphere_radius" && emission_shape != EMISSION_SHAPE_CIRCLE) { if (property.name == "emission_sphere_radius" && emission_shape != EMISSION_SHAPE_SPHERE) {
property.usage = 0; property.usage = 0;
} }
@ -647,8 +647,9 @@ void CPUParticles2D::_particles_process(float p_delta) {
case EMISSION_SHAPE_POINT: { case EMISSION_SHAPE_POINT: {
//do none //do none
} break; } break;
case EMISSION_SHAPE_CIRCLE: { case EMISSION_SHAPE_SPHERE: {
p.transform[2] = Vector2(Math::randf() * 2.0 - 1.0, Math::randf() * 2.0 - 1.0).normalized() * emission_sphere_radius; Vector3 sphere_shape = Vector3(Math::randf() * 2.0 - 1.0, Math::randf() * 2.0 - 1.0, Math::randf() * 2.0 - 1.0).normalized() * emission_sphere_radius;
p.transform[2] = Vector2(sphere_shape.x, sphere_shape.y);
} break; } break;
case EMISSION_SHAPE_RECTANGLE: { case EMISSION_SHAPE_RECTANGLE: {
p.transform[2] = Vector2(Math::randf() * 2.0 - 1.0, Math::randf() * 2.0 - 1.0) * emission_rect_extents; p.transform[2] = Vector2(Math::randf() * 2.0 - 1.0, Math::randf() * 2.0 - 1.0) * emission_rect_extents;
@ -1356,7 +1357,7 @@ void CPUParticles2D::_bind_methods() {
BIND_ENUM_CONSTANT(FLAG_MAX); BIND_ENUM_CONSTANT(FLAG_MAX);
BIND_ENUM_CONSTANT(EMISSION_SHAPE_POINT); BIND_ENUM_CONSTANT(EMISSION_SHAPE_POINT);
BIND_ENUM_CONSTANT(EMISSION_SHAPE_CIRCLE); BIND_ENUM_CONSTANT(EMISSION_SHAPE_SPHERE);
BIND_ENUM_CONSTANT(EMISSION_SHAPE_RECTANGLE); BIND_ENUM_CONSTANT(EMISSION_SHAPE_RECTANGLE);
BIND_ENUM_CONSTANT(EMISSION_SHAPE_POINTS); BIND_ENUM_CONSTANT(EMISSION_SHAPE_POINTS);
BIND_ENUM_CONSTANT(EMISSION_SHAPE_DIRECTED_POINTS); BIND_ENUM_CONSTANT(EMISSION_SHAPE_DIRECTED_POINTS);

View File

@ -75,7 +75,7 @@ public:
enum EmissionShape { enum EmissionShape {
EMISSION_SHAPE_POINT, EMISSION_SHAPE_POINT,
EMISSION_SHAPE_CIRCLE, EMISSION_SHAPE_SPHERE,
EMISSION_SHAPE_RECTANGLE, EMISSION_SHAPE_RECTANGLE,
EMISSION_SHAPE_POINTS, EMISSION_SHAPE_POINTS,
EMISSION_SHAPE_DIRECTED_POINTS, EMISSION_SHAPE_DIRECTED_POINTS,