Explorar o código

added preservation of emission ring properties during conversion from GPUParticles3D to CPUParticles3D and vice versa

Zach Seiss hai 7 meses
pai
achega
86ab88f016
Modificáronse 2 ficheiros con 9 adicións e 0 borrados
  1. 5 0
      scene/3d/cpu_particles_3d.cpp
  2. 4 0
      scene/3d/gpu_particles_3d.cpp

+ 5 - 0
scene/3d/cpu_particles_3d.cpp

@@ -1409,6 +1409,11 @@ void CPUParticles3D::convert_from_particles(Node *p_particles) {
 	set_emission_shape(EmissionShape(material->get_emission_shape()));
 	set_emission_sphere_radius(material->get_emission_sphere_radius());
 	set_emission_box_extents(material->get_emission_box_extents());
+	set_emission_ring_height(material->get_emission_ring_height());
+	set_emission_ring_radius(material->get_emission_ring_radius());
+	set_emission_ring_inner_radius(material->get_emission_ring_inner_radius());
+	set_emission_ring_cone_angle(material->get_emission_ring_cone_angle());
+
 	Ref<CurveXYZTexture> scale3D = material->get_param_texture(ParticleProcessMaterial::PARAM_SCALE);
 	if (scale3D.is_valid()) {
 		split_scale = true;

+ 4 - 0
scene/3d/gpu_particles_3d.cpp

@@ -627,6 +627,10 @@ void GPUParticles3D::convert_from_particles(Node *p_particles) {
 	proc_mat->set_emission_shape(ParticleProcessMaterial::EmissionShape(cpu_particles->get_emission_shape()));
 	proc_mat->set_emission_sphere_radius(cpu_particles->get_emission_sphere_radius());
 	proc_mat->set_emission_box_extents(cpu_particles->get_emission_box_extents());
+	proc_mat->set_emission_ring_height(cpu_particles->get_emission_ring_height());
+	proc_mat->set_emission_ring_radius(cpu_particles->get_emission_ring_radius());
+	proc_mat->set_emission_ring_inner_radius(cpu_particles->get_emission_ring_inner_radius());
+	proc_mat->set_emission_ring_cone_angle(cpu_particles->get_emission_ring_cone_angle());
 
 	if (cpu_particles->get_split_scale()) {
 		Ref<CurveXYZTexture> scale3D = memnew(CurveXYZTexture);