[Bf-blender-cvs] [1febe8caef1] temp-gpencil-eval: Use index to get evaluated frame

Antonio Vazquez noreply at git.blender.org
Tue Jan 14 11:56:16 CET 2020


Commit: 1febe8caef164d7a417ab5167ce255641df179b9
Author: Antonio Vazquez
Date:   Tue Jan 14 11:56:03 2020 +0100
Branches: temp-gpencil-eval
https://developer.blender.org/rB1febe8caef164d7a417ab5167ce255641df179b9

Use index to get evaluated frame

===================================================================

M	source/blender/blenkernel/intern/gpencil_modifier.c

===================================================================

diff --git a/source/blender/blenkernel/intern/gpencil_modifier.c b/source/blender/blenkernel/intern/gpencil_modifier.c
index 1733d869ac0..ab6f19e788d 100644
--- a/source/blender/blenkernel/intern/gpencil_modifier.c
+++ b/source/blender/blenkernel/intern/gpencil_modifier.c
@@ -833,7 +833,7 @@ static void gpencil_frame_copy_noalloc(Object *ob, bGPDframe *gpf, bGPDframe *gp
 }
 
 /* Remap frame (Time modifier) */
-static int gpencil_get_remap_time(Depsgraph *depsgraph, Scene *scene, Object *ob, bGPDlayer *gpl)
+static int gpencil_remap_time_get(Depsgraph *depsgraph, Scene *scene, Object *ob, bGPDlayer *gpl)
 {
   const bool is_render = (bool)(DEG_get_mode(depsgraph) == DAG_EVAL_RENDER);
   const bool time_remap = BKE_gpencil_has_time_modifiers(ob);
@@ -869,7 +869,7 @@ void BKE_gpencil_prepare_filling_data(Depsgraph *depsgraph, Scene *scene, Object
    * The first time this is slow, but in next loops, the strokes has all data calculated and
    * doesn't need calc again except if some modifier update the stroke geometry. */
   for (bGPDlayer *gpl = gpd_orig->layers.first; gpl; gpl = gpl->next) {
-    int remap_cfra = gpencil_get_remap_time(depsgraph, scene, ob, gpl);
+    int remap_cfra = gpencil_remap_time_get(depsgraph, scene, ob, gpl);
     bGPDframe *gpf = BKE_gpencil_layer_frame_get(gpl, remap_cfra, GP_GETFRAME_USE_PREV);
     if (gpf == NULL) {
       continue;
@@ -917,21 +917,23 @@ void BKE_gpencil_prepare_eval_data(Depsgraph *depsgraph, Scene *scene, Object *o
       ob->data = ob->runtime.gpd_eval;
 
       int layer_index = -1;
-      for (bGPDlayer *gpl = gpd_orig->layers.first; gpl; gpl = gpl->next) {
+      for (bGPDlayer *gpl_orig = gpd_orig->layers.first; gpl_orig; gpl_orig = gpl_orig->next) {
         layer_index++;
-        int remap_cfra = gpencil_get_remap_time(depsgraph, scene, ob, gpl);
-        bGPDframe *gpf_orig = BKE_gpencil_layer_frame_get(gpl, remap_cfra, GP_GETFRAME_USE_PREV);
-        if (gpd_eval == NULL) {
+
+        int remap_cfra = gpencil_remap_time_get(depsgraph, scene, ob, gpl_orig);
+        bGPDframe *gpf_orig = BKE_gpencil_layer_frame_get(
+            gpl_orig, remap_cfra, GP_GETFRAME_USE_PREV);
+        if (gpf_orig == NULL) {
           continue;
         }
+        int gpf_index = BLI_findindex(&gpl_orig->frames, gpf_orig);
 
         bGPDlayer *gpl_eval = BLI_findlink(&gpd_eval->layers, layer_index);
         if (gpl_eval == NULL) {
           continue;
         }
-        /* TODO: Use index instead of time? */
-        bGPDframe *gpf_eval = BKE_gpencil_layer_frame_get(
-            gpl_eval, remap_cfra, GP_GETFRAME_USE_PREV);
+        bGPDframe *gpf_eval = BLI_findlink(&gpl_eval->frames, gpf_index);
+
         if ((gpf_orig != NULL) && (gpf_eval != NULL)) {
           /* Delete old strokes. */
           BKE_gpencil_free_strokes(gpf_eval);
@@ -960,7 +962,7 @@ void BKE_gpencil_modifiers_calc(Depsgraph *depsgraph, Scene *scene, Object *ob)
   /* Loop all layers and apply modifiers. */
   for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) {
     /* Remap frame (Time modifier) */
-    int remap_cfra = gpencil_get_remap_time(depsgraph, scene, ob, gpl);
+    int remap_cfra = gpencil_remap_time_get(depsgraph, scene, ob, gpl);
     bGPDframe *gpf = BKE_gpencil_layer_frame_get(gpl, remap_cfra, GP_GETFRAME_USE_PREV);
 
     if (gpf == NULL) {



More information about the Bf-blender-cvs mailing list