Commit: 96e460ed9b301b5a83399435bbf662a6258b243a
Author: Antonio Vazquez
Date:   Thu Aug 6 17:27:45 2020 +0200
Branches: blender-v2.90-release
https://developer.blender.org/rB96e460ed9b301b5a83399435bbf662a6258b243a

GPencil: Patch old files after the change in how the first frame is used

This patching duplicates the first frame of the layer if the first frame number 
is not equals to the scene first frame number.

Related to T79567

Differential Revision: https://developer.blender.org/D8486

Some minor cleanup in the patch.

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

M       source/blender/blenloader/intern/versioning_290.c

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

diff --git a/source/blender/blenloader/intern/versioning_290.c 
b/source/blender/blenloader/intern/versioning_290.c
index b6caa018756..a96b82e2e91 100644
--- a/source/blender/blenloader/intern/versioning_290.c
+++ b/source/blender/blenloader/intern/versioning_290.c
@@ -28,6 +28,7 @@
 #include "DNA_constraint_types.h"
 #include "DNA_genfile.h"
 #include "DNA_gpencil_modifier_types.h"
+#include "DNA_gpencil_types.h"
 #include "DNA_modifier_types.h"
 #include "DNA_object_types.h"
 #include "DNA_screen_types.h"
@@ -35,6 +36,7 @@
 
 #include "BKE_collection.h"
 #include "BKE_colortools.h"
+#include "BKE_gpencil.h"
 #include "BKE_lib_id.h"
 #include "BKE_main.h"
 #include "BKE_node.h"
@@ -183,6 +185,23 @@ void do_versions_after_linking_290(Main *bmain, ReportList 
*UNUSED(reports))
         }
       }
     }
+
+    /* Patch first frame for old files. */
+    Scene *scene = bmain->scenes.first;
+    LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
+      if (ob->type != OB_GPENCIL) {
+        continue;
+      }
+      bGPdata *gpd = ob->data;
+      LISTBASE_FOREACH (bGPDlayer *, gpl, &gpd->layers) {
+        bGPDframe *gpf = gpl->frames.first;
+        if (gpf && gpf->framenum > scene->r.sfra) {
+          bGPDframe *gpf_dup = BKE_gpencil_frame_duplicate(gpf);
+          gpf_dup->framenum = scene->r.sfra;
+          BLI_addhead(&gpl->frames, gpf_dup);
+        }
+      }
+    }
   }
 
   /**

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to