[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