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-14 16:37:54 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2018-05-15 18:20:02 +0300
commit7cbb85675a0986b7ffea8da7c48909cebea40934 (patch)
tree8355e44b954de0c14fee47c8f358838231dc856e /source/blender/draw/modes/particle_mode.c
parente0b0f7afa0dd64c2295a5c4a934c5fcb60c1190e (diff)
Particle edit: Fix missing hair edit after toggling edit mode
Diffstat (limited to 'source/blender/draw/modes/particle_mode.c')
-rw-r--r--source/blender/draw/modes/particle_mode.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/source/blender/draw/modes/particle_mode.c b/source/blender/draw/modes/particle_mode.c
index d342f67ab61..7f1a62a88ce 100644
--- a/source/blender/draw/modes/particle_mode.c
+++ b/source/blender/draw/modes/particle_mode.c
@@ -190,12 +190,19 @@ static void particle_cache_populate(void *vedata, Object *object)
return;
}
const DRWContextState *draw_ctx = DRW_context_state_get();
+ Scene *scene_orig = (Scene *)DEG_get_original_id(&draw_ctx->scene->id);
+ /* Usually the edit structure is created by Particle Edit Mode Toggle
+ * operator, but sometimes it's invoked after tagging hair as outdated
+ * (for example, when toggling edit mode). That makes it impossible to
+ * create edit structure for until after next dependency graph evaluation.
+ *
+ * Ideally, the edit structure will be created here already via some
+ * dependency graph callback or so, but currently trying to make it nicer
+ * only causes bad level calls and breaks design from the past.
+ */
Object *object_orig = DEG_get_original_object(object);
- PTCacheEdit *edit = PE_get_current(draw_ctx->scene, object_orig);
- if (edit == NULL) {
- printf("Particle edit struct is NULL, not supposed to happen.\n");
- return;
- }
+ PTCacheEdit *edit = PE_create_current(
+ draw_ctx->depsgraph, scene_orig, object_orig);
ParticleSystem *psys = object->particlesystem.first;
ParticleSystem *psys_orig = object_orig->particlesystem.first;
while (psys_orig != NULL) {