[Bf-blender-cvs] [f222bc3ff76] asset-greasepencil: GPencil: Add option to reset center of the asset
Antonio Vazquez
noreply at git.blender.org
Fri Jul 16 20:20:38 CEST 2021
Commit: f222bc3ff76ed04ebd93b2de6a3aa60fc407fa4f
Author: Antonio Vazquez
Date: Fri Jul 16 20:18:30 2021 +0200
Branches: asset-greasepencil
https://developer.blender.org/rBf222bc3ff76ed04ebd93b2de6a3aa60fc407fa4f
GPencil: Add option to reset center of the asset
===================================================================
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 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");
}
/** \} */
More information about the Bf-blender-cvs
mailing list