[Bf-blender-cvs] [f41d2db7152] asset-greasepencil: GPencil: Cleanup transformations

Antonio Vazquez noreply at git.blender.org
Fri Jul 16 23:35:27 CEST 2021


Commit: f41d2db71520f687e062fce3253ffb450a6d4b92
Author: Antonio Vazquez
Date:   Fri Jul 16 23:35:17 2021 +0200
Branches: asset-greasepencil
https://developer.blender.org/rBf41d2db71520f687e062fce3253ffb450a6d4b92

GPencil: Cleanup transformations

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

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 b229f7d2463..bddac0f83f9 100644
--- a/source/blender/editors/gpencil/gpencil_asset.c
+++ b/source/blender/editors/gpencil/gpencil_asset.c
@@ -68,16 +68,12 @@
 
 /* Temporary Asset import operation data */
 typedef struct tGPDasset {
-  /** Current window from context. */
   struct wmWindow *win;
-  /** Current depsgraph from context. */
   struct Depsgraph *depsgraph;
-  /** current scene from context. */
   struct Scene *scene;
-  /** area where painting originated. */
   struct ScrArea *area;
-  /** region where painting originated. */
   struct ARegion *region;
+  struct RegionView3D *rv3d;
   /** Current object. */
   struct Object *ob;
   /** Current GP datablock. */
@@ -377,6 +373,7 @@ static bool gpencil_asset_import_set_init_values(bContext *C,
   tgpa->scene = CTX_data_scene(C);
   tgpa->area = CTX_wm_area(C);
   tgpa->region = CTX_wm_region(C);
+  tgpa->rv3d = CTX_wm_region_view3d(C);
   tgpa->ob = CTX_data_active_object(C);
 
   /* Setup space conversions data. */
@@ -544,28 +541,43 @@ static void gpencil_2d_cage_area_detect(tGPDasset *tgpa, const int mouse[2])
 /* Helper: Transfrom the stroke with mouse movements. */
 static void gpencil_asset_transform_strokes(tGPDasset *tgpa, const int mouse[2])
 {
-  switch (tgpa->mode) {
-    case GP_ASSET_TRANSFORM_LOC: {
-      float vec[3];
-      vec[0] = (mouse[0] - tgpa->mouse[0]) / 100.0f;
-      vec[1] = 0.0f;
-      vec[2] = (mouse[1] - tgpa->mouse[1]) / 100.0f;
-      GHashIterator gh_iter;
-      GHASH_ITER (gh_iter, tgpa->asset_strokes) {
-        bGPDstroke *gps = (bGPDstroke *)BLI_ghashIterator_getKey(&gh_iter);
-        const bGPDspoint *pt;
-        int i;
-        for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
+  /* Get the vector with the movement done by the mouse since last event. */
+  float origin_pt[3], dest_pt[3];
+  float mousef[2];
+  copy_v2fl_v2i(mousef, tgpa->mouse);
+  gpencil_point_xy_to_3d(&tgpa->gsc, tgpa->scene, mousef, origin_pt);
+
+  copy_v2fl_v2i(mousef, mouse);
+  gpencil_point_xy_to_3d(&tgpa->gsc, tgpa->scene, mousef, dest_pt);
+
+  float vec[3];
+  sub_v3_v3v3(vec, dest_pt, origin_pt);
+
+  GHashIterator gh_iter;
+  GHASH_ITER (gh_iter, tgpa->asset_strokes) {
+    bGPDstroke *gps = (bGPDstroke *)BLI_ghashIterator_getKey(&gh_iter);
+    const bGPDspoint *pt;
+    int i;
+    for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
+      switch (tgpa->mode) {
+        case GP_ASSET_TRANSFORM_LOC: {
           add_v3_v3(&pt->x, vec);
+          break;
         }
-        BKE_gpencil_stroke_boundingbox_calc(gps);
+        case GP_ASSET_TRANSFORM_ROT: {
+          break;
+        }
+        case GP_ASSET_TRANSFORM_SCALE: {
+          break;
+        }
+        default:
+          break;
       }
-      copy_v2_v2_int(tgpa->mouse, mouse);
-      break;
     }
-    default:
-      break;
+
+    BKE_gpencil_stroke_boundingbox_calc(gps);
   }
+  copy_v2_v2_int(tgpa->mouse, mouse);
 }
 
 /* Helper: Load all strokes in the target datablock. */



More information about the Bf-blender-cvs mailing list