Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Oeser <info@graphics-engineer.com>2021-07-26 22:38:37 +0300
committerPhilipp Oeser <info@graphics-engineer.com>2021-07-28 16:06:35 +0300
commitf9308a585ecdd1d9e287caa8e0643347784c17e2 (patch)
treede0e655480a2293ce92a1f781c81a74cbc4ad7de /source/blender/editors/physics
parentdfc597202f769e493b145adb27407f1691102e15 (diff)
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
Diffstat (limited to 'source/blender/editors/physics')
-rw-r--r--source/blender/editors/physics/particle_object.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/source/blender/editors/physics/particle_object.c b/source/blender/editors/physics/particle_object.c
index 387d10d538b..2668846284d 100644
--- a/source/blender/editors/physics/particle_object.c
+++ b/source/blender/editors/physics/particle_object.c
@@ -1331,7 +1331,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;