[Bf-blender-cvs] [4e14fe167dc] blender-v2.93-release: Fix particle system duplication duplicates all systems

Philipp Oeser noreply at git.blender.org
Mon Aug 9 08:42:33 CEST 2021


Commit: 4e14fe167dcc90bcd0f3710f23ac378e883b07ec
Author: Philipp Oeser
Date:   Mon Jul 26 21:38:37 2021 +0200
Branches: blender-v2.93-release
https://developer.blender.org/rB4e14fe167dcc90bcd0f3710f23ac378e883b07ec

Fix particle system duplication duplicates all systems

Followup to rB3834dc2f7b38 (where getting the proper particle system was
fixed for the Adjust Last Operation panel in the Properties Editor). But
since this operator can also be called from the 3DView, get a current
particle system there as well.

Without this, _all_ particle systems would be copied when executing from
the 3DView (which was never really intended [operator description uses
singular] -- it just happens to use `copy_particle_systems_to_object`
internally as well -- same as the `Copy Active/All to Selected Objects`
operators)).

ref. T83317

Maniphest Tasks: T83317

Differential Revision: https://developer.blender.org/D12033

===================================================================

M	source/blender/editors/physics/particle_object.c

===================================================================

diff --git a/source/blender/editors/physics/particle_object.c b/source/blender/editors/physics/particle_object.c
index 6bcc9df16bf..279befbadd4 100644
--- a/source/blender/editors/physics/particle_object.c
+++ b/source/blender/editors/physics/particle_object.c
@@ -1330,7 +1330,12 @@ static int duplicate_particle_systems_exec(bContext *C, wmOperator *op)
   const bool duplicate_settings = RNA_boolean_get(op->ptr, "use_duplicate_settings");
   Scene *scene = CTX_data_scene(C);
   Object *ob = ED_object_active_context(C);
+  /* Context pointer is only valid in the Properties Editor. */
   ParticleSystem *psys = CTX_data_pointer_get_type(C, "particle_system", &RNA_ParticleSystem).data;
+  if (psys == NULL) {
+    psys = psys_get_current(ob);
+  }
+
   copy_particle_systems_to_object(
       C, scene, ob, psys, ob, PAR_COPY_SPACE_OBJECT, duplicate_settings);
   return OPERATOR_FINISHED;



More information about the Bf-blender-cvs mailing list