diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-05-15 14:08:06 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-05-15 18:20:02 +0300 |
commit | f43d33d3a404f9b3abdf1a3d44aeb646812506a4 (patch) | |
tree | 8147aa647d4f18d758950051343822174407b29d /source/blender/depsgraph | |
parent | 4f5bcc30d3447a7a498b124bf6e35fe177a8a320 (diff) |
Depsgraph: Keep track of original particle system
Allows to have quicker lookup in particle edit mode.
Diffstat (limited to 'source/blender/depsgraph')
-rw-r--r-- | source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc b/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc index 7fd59f6408c..40f9402abc8 100644 --- a/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc +++ b/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc @@ -67,6 +67,7 @@ extern "C" { #include "DNA_mesh_types.h" #include "DNA_scene_types.h" #include "DNA_object_types.h" +#include "DNA_particle_types.h" #ifdef NESTED_ID_NASTY_WORKAROUND # include "DNA_curve_types.h" @@ -443,11 +444,26 @@ void updata_edit_mode_pointers(const Depsgraph *depsgraph, break; case ID_ME: updata_mesh_edit_mode_pointers(depsgraph, id_orig, id_cow); + break; default: break; } } +void update_particle_system_orig_pointers(const Object *object_orig, + Object *object_cow) +{ + ParticleSystem *psys_cow = + (ParticleSystem *) object_cow->particlesystem.first; + ParticleSystem *psys_orig = + (ParticleSystem *) object_orig->particlesystem.first; + while (psys_orig != NULL) { + psys_cow->orig_psys = psys_orig; + psys_cow = psys_cow->next; + psys_orig = psys_orig->next; + } +} + /* Do some special treatment of data transfer from original ID to it's * CoW complementary part. * @@ -473,6 +489,7 @@ void update_special_pointers(const Depsgraph *depsgraph, BKE_pose_remap_bone_pointers((bArmature *)object_cow->data, object_cow->pose); } + update_particle_system_orig_pointers(object_orig, object_cow); break; } default: |