Forráskód Böngészése

Merge pull request #29854 from clayjohn/CPUParticles2D-sphere

Change emit shape circle to sphere in CPUParticles2D
Rémi Verschelde 6 éve
szülő
commit
d8d7222ffb

+ 2 - 2
doc/classes/CPUParticles2D.xml

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

+ 5 - 4
scene/2d/cpu_particles_2d.cpp

@@ -469,7 +469,7 @@ void CPUParticles2D::_validate_property(PropertyInfo &property) const {
 		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;
 	}
 
@@ -647,8 +647,9 @@ void CPUParticles2D::_particles_process(float p_delta) {
 				case EMISSION_SHAPE_POINT: {
 					//do none
 				} break;
-				case EMISSION_SHAPE_CIRCLE: {
-					p.transform[2] = Vector2(Math::randf() * 2.0 - 1.0, Math::randf() * 2.0 - 1.0).normalized() * emission_sphere_radius;
+				case EMISSION_SHAPE_SPHERE: {
+					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;
 				case EMISSION_SHAPE_RECTANGLE: {
 					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(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_POINTS);
 	BIND_ENUM_CONSTANT(EMISSION_SHAPE_DIRECTED_POINTS);

+ 1 - 1
scene/2d/cpu_particles_2d.h

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