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:
authorSergey Sharybin <sergey.vfx@gmail.com>2018-05-15 14:08:06 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2018-05-15 18:20:02 +0300
commitf43d33d3a404f9b3abdf1a3d44aeb646812506a4 (patch)
tree8147aa647d4f18d758950051343822174407b29d /source/blender/depsgraph
parent4f5bcc30d3447a7a498b124bf6e35fe177a8a320 (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.cc17
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: