1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00

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

This commit is contained in:
Zach Seiss
2025-01-01 22:42:00 -05:00
committed by Zach Seiss
parent 2582793d40
commit 86ab88f016
2 changed files with 9 additions and 0 deletions

View File

@@ -1409,6 +1409,11 @@ void CPUParticles3D::convert_from_particles(Node *p_particles) {
set_emission_shape(EmissionShape(material->get_emission_shape())); set_emission_shape(EmissionShape(material->get_emission_shape()));
set_emission_sphere_radius(material->get_emission_sphere_radius()); set_emission_sphere_radius(material->get_emission_sphere_radius());
set_emission_box_extents(material->get_emission_box_extents()); 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); Ref<CurveXYZTexture> scale3D = material->get_param_texture(ParticleProcessMaterial::PARAM_SCALE);
if (scale3D.is_valid()) { if (scale3D.is_valid()) {
split_scale = true; split_scale = true;

View File

@@ -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_shape(ParticleProcessMaterial::EmissionShape(cpu_particles->get_emission_shape()));
proc_mat->set_emission_sphere_radius(cpu_particles->get_emission_sphere_radius()); 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_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()) { if (cpu_particles->get_split_scale()) {
Ref<CurveXYZTexture> scale3D = memnew(CurveXYZTexture); Ref<CurveXYZTexture> scale3D = memnew(CurveXYZTexture);