[Bf-blender-cvs] [aaf3505227d] asset-lite-greasepencil: Add new Create Asset option: Selected Points

Antonio Vazquez noreply at git.blender.org
Fri Jun 24 15:45:05 CEST 2022


Commit: aaf3505227d55aa99c5cd24a3d745bb83be4d637
Author: Antonio Vazquez
Date:   Fri Jun 24 15:44:36 2022 +0200
Branches: asset-lite-greasepencil
https://developer.blender.org/rBaaf3505227d55aa99c5cd24a3d745bb83be4d637

Add new Create Asset option: Selected Points

This new option create the asset with only selected points, not full stroke.

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

M	release/scripts/startup/bl_ui/space_view3d.py
M	source/blender/editors/gpencil/gpencil_asset.c

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

diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index 134b0ffa83d..50a86a97aba 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -5185,6 +5185,7 @@ class VIEW3D_MT_edit_gpencil_asset(Menu):
         layout.separator()
 
         layout.operator("gpencil.asset_create", text="Selected Strokes").mode = 'SELECTED'
+        layout.operator("gpencil.asset_create", text="Selected Points").mode = 'POINT'
 
 
 class VIEW3D_MT_weight_gpencil(Menu):
diff --git a/source/blender/editors/gpencil/gpencil_asset.c b/source/blender/editors/gpencil/gpencil_asset.c
index 21a12c88e5b..26eeb5c0427 100644
--- a/source/blender/editors/gpencil/gpencil_asset.c
+++ b/source/blender/editors/gpencil/gpencil_asset.c
@@ -48,8 +48,6 @@
 
 #include "gpencil_intern.h"
 
-#define ROTATION_CONTROL_GAP 15.0f
-
 typedef struct tGPDAssetStroke {
   bGPDlayer *gpl;
   bGPDframe *gpf;
@@ -108,6 +106,8 @@ typedef enum eGP_AssetModes {
   GP_ASSET_MODE_SELECTED_FRAMES,
   /* Selected Strokes. */
   GP_ASSET_MODE_SELECTED_STROKES,
+  /* Selected Strokes. */
+  GP_ASSET_MODE_SELECTED_POINTS,
 } eGP_AssetModes;
 
 /* Helper: Apply layer settings. */
@@ -223,7 +223,7 @@ static bool gpencil_asset_create(const bContext *C,
       }
 
       /* Remove any unselected stroke if selected strokes mode. */
-      if (mode == GP_ASSET_MODE_SELECTED_STROKES) {
+      if (ELEM(mode, GP_ASSET_MODE_SELECTED_STROKES, GP_ASSET_MODE_SELECTED_POINTS)) {
         LISTBASE_FOREACH_MUTABLE (bGPDstroke *, gps, &gpf->strokes) {
           if ((gps->flag & GP_STROKE_SELECT) == 0) {
             BLI_remlink(&gpf->strokes, gps);
@@ -232,6 +232,24 @@ static bool gpencil_asset_create(const bContext *C,
           }
         }
       }
+      /* Remove any unselected point if selected point mode. */
+      if (mode == GP_ASSET_MODE_SELECTED_POINTS) {
+        LISTBASE_FOREACH_MUTABLE (bGPDstroke *, gps, &gpf->strokes) {
+          if (gps->flag & GP_STROKE_SELECT) {
+            /* Mark the points to dissolve */
+            bGPDspoint *pt;
+            int i;
+            for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
+              if ((pt->flag & GP_SPOINT_SELECT) == 0) {
+                pt->flag |= GP_SPOINT_TAG;
+              }
+            }
+            BKE_gpencil_stroke_delete_tagged_points(
+                gpd, gpf, gps, gps->next, GP_SPOINT_TAG, false, false, 0);
+          }
+        }
+      }
+
       /* Unselect all strokes and points. */
       gpd->select_last_index = 0;
       LISTBASE_FOREACH (bGPDstroke *, gps, &gpf->strokes) {
@@ -377,6 +395,7 @@ void GPENCIL_OT_asset_create(wmOperatorType *ot)
       {GP_ASSET_MODE_SELECTED_FRAMES, "FRAME_SELECTED", 0, "Selected Frames", ""},
       RNA_ENUM_ITEM_SEPR,
       {GP_ASSET_MODE_SELECTED_STROKES, "SELECTED", 0, "Selected Strokes", ""},
+      {GP_ASSET_MODE_SELECTED_POINTS, "POINT", 0, "Selected Points", ""},
       {0, NULL, 0, NULL, NULL},
   };



More information about the Bf-blender-cvs mailing list