Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntonio Vazquez <blendergit@gmail.com>2021-07-16 21:18:30 +0300
committerAntonio Vazquez <blendergit@gmail.com>2021-07-16 21:18:30 +0300
commitf222bc3ff76ed04ebd93b2de6a3aa60fc407fa4f (patch)
treec7e036aa8de214350d31548724afc6009c9ad83b /source/blender/editors/gpencil/gpencil_asset.c
parent2efd744b53230a3cab4c741756c71eaac38a193e (diff)
GPencil: Add option to reset center of the asset
Diffstat (limited to 'source/blender/editors/gpencil/gpencil_asset.c')
-rw-r--r--source/blender/editors/gpencil/gpencil_asset.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/source/blender/editors/gpencil/gpencil_asset.c b/source/blender/editors/gpencil/gpencil_asset.c
index 4bf8324d28c..b229f7d2463 100644
--- a/source/blender/editors/gpencil/gpencil_asset.c
+++ b/source/blender/editors/gpencil/gpencil_asset.c
@@ -174,7 +174,8 @@ static int gpencil_asset_create_exec(bContext *C, wmOperator *op)
Object *ob = CTX_data_active_object(C);
bGPdata *gpd_src = ob->data;
- eGP_AssetModes mode = RNA_enum_get(op->ptr, "mode");
+ const eGP_AssetModes mode = RNA_enum_get(op->ptr, "mode");
+ const int set_origin = RNA_boolean_get(op->ptr, "set_origin");
/* Create a copy of selected datablock. */
bGPdata *gpd = (bGPdata *)BKE_id_copy(bmain, &gpd_src->id);
@@ -214,6 +215,25 @@ static int gpencil_asset_create_exec(bContext *C, wmOperator *op)
}
}
+ /* Set origin to bounding box of strokes. */
+ if (set_origin) {
+ float gpcenter[3];
+ BKE_gpencil_centroid_3d(gpd, gpcenter);
+
+ LISTBASE_FOREACH (bGPDlayer *, gpl, &gpd->layers) {
+ LISTBASE_FOREACH (bGPDframe *, gpf, &gpl->frames) {
+ LISTBASE_FOREACH (bGPDstroke *, gps, &gpf->strokes) {
+ bGPDspoint *pt;
+ int i;
+ for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
+ sub_v3_v3(&pt->x, gpcenter);
+ }
+ BKE_gpencil_stroke_boundingbox_calc(gps);
+ }
+ }
+ }
+ }
+
if (ED_asset_mark_id(C, &gpd->id)) {
}
@@ -249,6 +269,11 @@ void GPENCIL_OT_asset_create(wmOperatorType *ot)
/* properties */
ot->prop = RNA_def_enum(
ot->srna, "mode", mode_types, GP_ASSET_MODE_SELECTED_STROKES, "Mode", "");
+ RNA_def_boolean(ot->srna,
+ "set_origin",
+ 0,
+ "Set Origin to Strokes",
+ "Set origin of the strokes in the center of the bounding box");
}
/** \} */