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
This commit is contained in:
Philipp Oeser 2021-07-26 21:38:37 +02:00
parent dfc597202f
commit f9308a585e
Notes: blender-bot 2023-02-14 10:29:30 +01:00
Referenced by issue #88449, Blender LTS: Maintenance Task 2.93
Referenced by issue #83317, Hair particles duplication with duplicate settings enabled copies all the particles instead of one selected
1 changed files with 5 additions and 0 deletions

View File

@ -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;