[Bf-blender-cvs] [04390941050] master: Cleanup: make the sculpt convert type follow transform convention

Germano Cavalcante noreply at git.blender.org
Wed Jun 10 21:36:27 CEST 2020


Commit: 04390941050b1b790cbe812e9a8867cb56c93565
Author: Germano Cavalcante
Date:   Wed Jun 10 16:36:07 2020 -0300
Branches: master
https://developer.blender.org/rB04390941050b1b790cbe812e9a8867cb56c93565

Cleanup: make the sculpt convert type follow transform convention

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

M	source/blender/editors/include/ED_transform.h
M	source/blender/editors/transform/transform.c
M	source/blender/editors/transform/transform_convert.c
M	source/blender/editors/transform/transform_convert.h
M	source/blender/editors/transform/transform_convert_sculpt.c
M	source/blender/editors/transform/transform_mode.c

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

diff --git a/source/blender/editors/include/ED_transform.h b/source/blender/editors/include/ED_transform.h
index a62deb9d69f..29ed0485490 100644
--- a/source/blender/editors/include/ED_transform.h
+++ b/source/blender/editors/include/ED_transform.h
@@ -97,7 +97,6 @@ enum TfmMode {
 #define CTX_OBMODE_XFORM_OBDATA (1 << 11)
 /** Transform object parents without moving their children. */
 #define CTX_OBMODE_XFORM_SKIP_CHILDREN (1 << 12)
-#define CTX_SCULPT (1 << 13)
 
 /* Standalone call to get the transformation center corresponding to the current situation
  * returns 1 if successful, 0 otherwise (usually means there's no selection)
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 79090bd633e..d8503a28774 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -45,7 +45,6 @@
 #include "ED_keyframing.h"
 #include "ED_node.h"
 #include "ED_screen.h"
-#include "ED_sculpt.h"
 #include "ED_space_api.h"
 
 #include "WM_api.h"
@@ -1767,10 +1766,6 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op)
     }
   }
 
-  if ((t->options & CTX_SCULPT) && !(t->options & CTX_PAINT_CURVE)) {
-    ED_sculpt_end_transform(C);
-  }
-
   if ((prop = RNA_struct_find_property(op->ptr, "correct_uv"))) {
     RNA_property_boolean_set(
         op->ptr, prop, (t->settings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT) != 0);
@@ -1851,13 +1846,6 @@ bool initTransform(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve
     }
   }
 
-  if (CTX_wm_view3d(C) != NULL) {
-    Object *ob = CTX_data_active_object(C);
-    if (ob && ob->mode == OB_MODE_SCULPT && ob->sculpt) {
-      options |= CTX_SCULPT;
-    }
-  }
-
   t->options = options;
 
   t->mode = mode;
@@ -1924,10 +1912,6 @@ bool initTransform(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve
 
   createTransData(C, t);  // make TransData structs from selection
 
-  if ((t->options & CTX_SCULPT) && !(t->options & CTX_PAINT_CURVE)) {
-    ED_sculpt_init_transform(C);
-  }
-
   if (t->data_len_all == 0) {
     postTrans(C, t);
     return 0;
diff --git a/source/blender/editors/transform/transform_convert.c b/source/blender/editors/transform/transform_convert.c
index fcca9b06451..8496642185d 100644
--- a/source/blender/editors/transform/transform_convert.c
+++ b/source/blender/editors/transform/transform_convert.c
@@ -916,6 +916,9 @@ void special_aftertrans_update(bContext *C, TransInfo *t)
     case TC_OBJECT_TEXSPACE:
       special_aftertrans_update__object(C, t);
       break;
+    case TC_SCULPT:
+      special_aftertrans_update__sculpt(C, t);
+      break;
     case TC_SEQ_DATA:
       special_aftertrans_update__sequencer(C, t);
       break;
@@ -932,7 +935,6 @@ void special_aftertrans_update(bContext *C, TransInfo *t)
     case TC_MESH_UV:
     case TC_PAINT_CURVE_VERTS:
     case TC_PARTICLE_VERTS:
-    case TC_SCULPT:
     case TC_NONE:
     default:
       break;
@@ -1013,7 +1015,8 @@ void createTransData(bContext *C, TransInfo *t)
       convert_type = TC_CURSOR_VIEW3D;
     }
   }
-  else if ((t->options & CTX_SCULPT) && !(t->options & CTX_PAINT_CURVE)) {
+  else if (!(t->options & CTX_PAINT_CURVE) && (t->spacetype == SPACE_VIEW3D) && ob &&
+           (ob->mode == OB_MODE_SCULPT) && ob->sculpt) {
     convert_type = TC_SCULPT;
   }
   else if (t->options & CTX_TEXTURE) {
@@ -1255,7 +1258,7 @@ void createTransData(bContext *C, TransInfo *t)
       createTransParticleVerts(C, t);
       break;
     case TC_SCULPT:
-      createTransSculpt(t);
+      createTransSculpt(C, t);
       init_prop_edit = false;
       break;
     case TC_SEQ_DATA:
diff --git a/source/blender/editors/transform/transform_convert.h b/source/blender/editors/transform/transform_convert.h
index 872f05418c4..fdb6767a267 100644
--- a/source/blender/editors/transform/transform_convert.h
+++ b/source/blender/editors/transform/transform_convert.h
@@ -176,8 +176,9 @@ void createTransParticleVerts(bContext *C, TransInfo *t);
 void recalcData_particles(TransInfo *t);
 
 /* transform_convert_sculpt.c */
-void createTransSculpt(TransInfo *t);
+void createTransSculpt(bContext *C, TransInfo *t);
 void recalcData_sculpt(TransInfo *t);
+void special_aftertrans_update__sculpt(bContext *C, TransInfo *t);
 
 /* transform_convert_sequencer.c */
 void createTransSeqData(TransInfo *t);
diff --git a/source/blender/editors/transform/transform_convert_sculpt.c b/source/blender/editors/transform/transform_convert_sculpt.c
index b439c9a1731..0ac6bd9264f 100644
--- a/source/blender/editors/transform/transform_convert_sculpt.c
+++ b/source/blender/editors/transform/transform_convert_sculpt.c
@@ -39,7 +39,7 @@
  *
  * \{ */
 
-void createTransSculpt(TransInfo *t)
+void createTransSculpt(bContext *C, TransInfo *t)
 {
   TransData *td;
 
@@ -99,6 +99,9 @@ void createTransSculpt(TransInfo *t)
   copy_m3_m3(td->smtx, obmat_inv);
   copy_m3_m4(td->mtx, ob->obmat);
   copy_m3_m4(td->axismtx, ob->obmat);
+
+  BLI_assert(!(t->options & CTX_PAINT_CURVE));
+  ED_sculpt_init_transform(C);
 }
 
 /** \} */
@@ -113,4 +116,16 @@ void recalcData_sculpt(TransInfo *t)
   ED_sculpt_update_modal_transform(t->context);
 }
 
+void special_aftertrans_update__sculpt(bContext *C, TransInfo *t)
+{
+  Scene *scene = t->scene;
+  if (ID_IS_LINKED(scene)) {
+    /* `ED_sculpt_init_transform` was not called in this case. */
+    return;
+  }
+
+  BLI_assert(!(t->options & CTX_PAINT_CURVE));
+  ED_sculpt_end_transform(C);
+}
+
 /** \} */
diff --git a/source/blender/editors/transform/transform_mode.c b/source/blender/editors/transform/transform_mode.c
index c2c880b03ff..e1fd22f06be 100644
--- a/source/blender/editors/transform/transform_mode.c
+++ b/source/blender/editors/transform/transform_mode.c
@@ -46,6 +46,7 @@
 #include "BLT_translation.h"
 
 #include "transform.h"
+#include "transform_convert.h"
 #include "transform_snap.h"
 
 /* Own include. */
@@ -937,7 +938,7 @@ void ElementResize(TransInfo *t, TransDataContainer *tc, TransData *td, float ma
   if (td->ext && td->ext->size) {
     float fsize[3];
 
-    if ((t->options & CTX_SCULPT) || t->flag & (T_OBJECT | T_TEXTURE | T_POSE)) {
+    if (ELEM(t->data_type, TC_SCULPT, TC_OBJECT, TC_OBJECT_TEXSPACE, TC_POSE)) {
       float obsizemat[3][3];
       /* Reorient the size mat to fit the oriented object. */
       mul_m3_m3m3(obsizemat, tmat, td->axismtx);



More information about the Bf-blender-cvs mailing list