[Bf-blender-cvs] [ee09d2c1271] temp-gpencil-eval: Keep orig pointer references updated
Antonio Vazquez
noreply at git.blender.org
Tue Jan 14 13:51:13 CET 2020
Commit: ee09d2c1271a46120acff5bbe1a310775edb0262
Author: Antonio Vazquez
Date: Tue Jan 14 13:51:07 2020 +0100
Branches: temp-gpencil-eval
https://developer.blender.org/rBee09d2c1271a46120acff5bbe1a310775edb0262
Keep orig pointer references updated
===================================================================
M source/blender/blenkernel/BKE_gpencil.h
M source/blender/blenkernel/intern/gpencil.c
M source/blender/blenkernel/intern/gpencil_modifier.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_gpencil.h b/source/blender/blenkernel/BKE_gpencil.h
index ef46087e332..ed505f0bb8d 100644
--- a/source/blender/blenkernel/BKE_gpencil.h
+++ b/source/blender/blenkernel/BKE_gpencil.h
@@ -325,7 +325,8 @@ extern void (*BKE_gpencil_batch_cache_free_cb)(struct bGPdata *gpd);
#ifdef __cplusplus
extern "C" {
#endif
-
+void BKE_gpencil_update_frame_reference_pointers(const struct bGPDframe *gpf_orig,
+ const struct bGPDframe *gpf_eval);
void BKE_gpencil_update_orig_pointers(const struct Object *ob_orig, const struct Object *ob_eval);
void BKE_gpencil_prepare_filling_data(const struct Object *ob);
diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c
index 1e88fec50da..6fbbecb7274 100644
--- a/source/blender/blenkernel/intern/gpencil.c
+++ b/source/blender/blenkernel/intern/gpencil.c
@@ -3859,8 +3859,8 @@ void BKE_gpencil_prepare_filling_data(const Object *ob)
}
}
-static void gpencil_update_frame_reference_pointers(const struct bGPDframe *gpf_orig,
- const struct bGPDframe *gpf_eval)
+void BKE_gpencil_update_frame_reference_pointers(const struct bGPDframe *gpf_orig,
+ const struct bGPDframe *gpf_eval)
{
int stroke_idx = -1;
for (bGPDstroke *gps_orig = gpf_orig->strokes.first; gps_orig; gps_orig = gps_orig->next) {
@@ -3910,7 +3910,7 @@ void BKE_gpencil_update_orig_pointers(const Object *ob_orig, const Object *ob_ev
continue;
}
/* Update frame reference pointers. */
- gpencil_update_frame_reference_pointers(gpf_orig, gpf_eval);
+ BKE_gpencil_update_frame_reference_pointers(gpf_orig, gpf_eval);
}
}
}
diff --git a/source/blender/blenkernel/intern/gpencil_modifier.c b/source/blender/blenkernel/intern/gpencil_modifier.c
index 27eafec7ec1..1d39d7f508d 100644
--- a/source/blender/blenkernel/intern/gpencil_modifier.c
+++ b/source/blender/blenkernel/intern/gpencil_modifier.c
@@ -862,12 +862,11 @@ static void gpencil_assign_object_eval(Object *object)
void BKE_gpencil_prepare_eval_data(Depsgraph *depsgraph, Scene *scene, Object *ob)
{
- Object *ob_orig = (Object *)DEG_get_original_id(&ob->id);
-
if (ob->greasepencil_modifiers.first == NULL) {
return;
}
+ Object *ob_orig = (Object *)DEG_get_original_id(&ob->id);
bGPdata *gpd_eval = (bGPdata *)ob->data;
DEG_debug_print_eval(depsgraph, __func__, gpd_eval->id.name, gpd_eval);
@@ -884,12 +883,13 @@ void BKE_gpencil_prepare_eval_data(Depsgraph *depsgraph, Scene *scene, Object *o
ob->runtime.gpd_eval = BKE_gpencil_copy_for_eval(ob->runtime.gpd_orig, true);
gpencil_assign_object_eval(ob);
+ BKE_gpencil_update_orig_pointers((Object *)ob_orig, (Object *)ob);
}
else {
/* Replace only active frame. */
if (DEG_is_active(depsgraph)) {
- bGPdata *gpd_orig = (bGPdata *)ob_orig->data;
+ bGPdata *gpd_orig = ob->runtime.gpd_orig;
bGPdata *gpd_eval = ob->runtime.gpd_eval;
ob->data = ob->runtime.gpd_eval;
@@ -916,6 +916,7 @@ void BKE_gpencil_prepare_eval_data(Depsgraph *depsgraph, Scene *scene, Object *o
BKE_gpencil_free_strokes(gpf_eval);
/* Copy again strokes. */
BKE_gpencil_frame_copy_strokes(gpf_orig, gpf_eval);
+ BKE_gpencil_update_frame_reference_pointers(gpf_orig, gpf_eval);
}
}
}
More information about the Bf-blender-cvs
mailing list