From 86ab88f016b18dff5f6f87e36e9a54b44af89294 Mon Sep 17 00:00:00 2001 From: Zach Seiss Date: Wed, 1 Jan 2025 22:42:00 -0500 Subject: [PATCH] added preservation of emission ring properties during conversion from GPUParticles3D to CPUParticles3D and vice versa --- scene/3d/cpu_particles_3d.cpp | 5 +++++ scene/3d/gpu_particles_3d.cpp | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/scene/3d/cpu_particles_3d.cpp b/scene/3d/cpu_particles_3d.cpp index 4656ef4a8bd..00ef801d58a 100644 --- a/scene/3d/cpu_particles_3d.cpp +++ b/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 scale3D = material->get_param_texture(ParticleProcessMaterial::PARAM_SCALE); if (scale3D.is_valid()) { split_scale = true; diff --git a/scene/3d/gpu_particles_3d.cpp b/scene/3d/gpu_particles_3d.cpp index 998a5c35fc0..83d385402ff 100644 --- a/scene/3d/gpu_particles_3d.cpp +++ b/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 scale3D = memnew(CurveXYZTexture);