[Bf-blender-cvs] [3e8c2efd582] asset-greasepencil: GPencil: New option to create asset for selected frames

Antonio Vazquez noreply at git.blender.org
Wed Jul 21 20:59:45 CEST 2021


Commit: 3e8c2efd5820dcb0013ab359e4c3e2f059a033e5
Author: Antonio Vazquez
Date:   Wed Jul 21 20:59:38 2021 +0200
Branches: asset-greasepencil
https://developer.blender.org/rB3e8c2efd5820dcb0013ab359e4c3e2f059a033e5

GPencil: New option to create asset for selected frames

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

M	source/blender/editors/gpencil/gpencil_asset.c

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

diff --git a/source/blender/editors/gpencil/gpencil_asset.c b/source/blender/editors/gpencil/gpencil_asset.c
index a40ad00f316..34ac274d204 100644
--- a/source/blender/editors/gpencil/gpencil_asset.c
+++ b/source/blender/editors/gpencil/gpencil_asset.c
@@ -211,7 +211,9 @@ typedef enum eGP_AssetModes {
   GP_ASSET_MODE_FRAME,
   /* Active Frame All Layers. */
   GP_ASSET_MODE_FRAME_ALL_LAYERS,
-  /* Selected Strokesd. */
+  /* Selected Frames. */
+  GP_ASSET_MODE_SELECTED_FRAMES,
+  /* Selected Strokes. */
   GP_ASSET_MODE_SELECTED_STROKES,
 } eGP_AssetModes;
 
@@ -235,12 +237,12 @@ static void gpencil_asset_create(bContext *C,
   bGPDlayer *gpl_active = BKE_gpencil_layer_active_get(gpd);
 
   LISTBASE_FOREACH_MUTABLE (bGPDlayer *, gpl, &gpd->layers) {
-    /* If Layer o Active Frame mode, delete non active layers. */
+    /* If Layer or Active Frame mode, delete non active layers. */
     if ((ELEM(mode, GP_ASSET_MODE_LAYER, GP_ASSET_MODE_FRAME)) && (gpl != gpl_active)) {
       BKE_gpencil_layer_delete(gpd, gpl);
       continue;
     }
-    /* Remove if layer is not equals to parameter. */
+    /* For splitting, remove if layer is not equals to parameter. */
     if (mode == GP_ASSET_MODE_ALL_LAYERS_SPLIT) {
       if (!STREQ(gpl_filter->info, gpl->info)) {
         BKE_gpencil_layer_delete(gpd, gpl);
@@ -271,6 +273,12 @@ static void gpencil_asset_create(bContext *C,
         BKE_gpencil_layer_frame_delete(gpl, gpf);
         continue;
       }
+
+      if ((mode == GP_ASSET_MODE_SELECTED_FRAMES) && ((gpf->flag & GP_FRAME_SELECT) == 0)) {
+        BKE_gpencil_layer_frame_delete(gpl, gpf);
+        continue;
+      }
+
       /* Remove any unselected stroke if SELECTED mode. */
       if (mode == GP_ASSET_MODE_SELECTED_STROKES) {
         LISTBASE_FOREACH_MUTABLE (bGPDstroke *, gps, &gpf->strokes) {
@@ -355,6 +363,7 @@ void GPENCIL_OT_asset_create(wmOperatorType *ot)
        "Create an asset by layer."},
       {GP_ASSET_MODE_FRAME, "FRAME", 0, "Active Frame (Active Layer)", ""},
       {GP_ASSET_MODE_FRAME_ALL_LAYERS, "FRAME_ALL", 0, "Active Frame (All Layers)", ""},
+      {GP_ASSET_MODE_SELECTED_FRAMES, "FRAME_SELECTED", 0, "Selected Frames", ""},
       {GP_ASSET_MODE_SELECTED_STROKES, "SELECTED", 0, "Selected Strokes", ""},
       {0, NULL, 0, NULL, NULL},
   };



More information about the Bf-blender-cvs mailing list