[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