[Bf-blender-cvs] [8e1051a6cf5] temp-transform-conversions-split: Transform: Move Mball conversions to its own file

mano-wii noreply at git.blender.org
Wed Sep 4 20:48:12 CEST 2019


Commit: 8e1051a6cf5b503402ccbc8ed17f4b314fa39b28
Author: mano-wii
Date:   Wed Sep 4 15:47:37 2019 -0300
Branches: temp-transform-conversions-split
https://developer.blender.org/rB8e1051a6cf5b503402ccbc8ed17f4b314fa39b28

Transform: Move Mball conversions to its own file

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

M	source/blender/editors/transform/CMakeLists.txt
M	source/blender/editors/transform/transform_conversions.c
M	source/blender/editors/transform/transform_conversions.h
A	source/blender/editors/transform/transform_conversions_mball.c

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

diff --git a/source/blender/editors/transform/CMakeLists.txt b/source/blender/editors/transform/CMakeLists.txt
index d8e86692acf..baace9af94b 100644
--- a/source/blender/editors/transform/CMakeLists.txt
+++ b/source/blender/editors/transform/CMakeLists.txt
@@ -43,6 +43,7 @@ set(SRC
   transform_conversions.c
   transform_conversions_armature.c
   transform_conversions_cursor.c
+  transform_conversions_mball.c
   transform_conversions_mesh.c
   transform_generics.c
   transform_gizmo_2d.c
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index 8b8ac262143..e8a2b94b01f 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -30,7 +30,6 @@
 #include "DNA_armature_types.h"
 #include "DNA_lattice_types.h"
 #include "DNA_mesh_types.h"
-#include "DNA_meta_types.h"
 #include "DNA_node_types.h"
 #include "DNA_screen_types.h"
 #include "DNA_space_types.h"
@@ -809,97 +808,6 @@ static void pose_grab_with_ik_clear(Main *bmain, Object *ob)
   }
 }
 
-/* ********************* meta elements ********* */
-
-static void createTransMBallVerts(TransInfo *t)
-{
-  FOREACH_TRANS_DATA_CONTAINER (t, tc) {
-    MetaBall *mb = (MetaBall *)tc->obedit->data;
-    MetaElem *ml;
-    TransData *td;
-    TransDataExtension *tx;
-    float mtx[3][3], smtx[3][3];
-    int count = 0, countsel = 0;
-    const bool is_prop_edit = (t->flag & T_PROP_EDIT) != 0;
-
-    /* count totals */
-    for (ml = mb->editelems->first; ml; ml = ml->next) {
-      if (ml->flag & SELECT) {
-        countsel++;
-      }
-      if (is_prop_edit) {
-        count++;
-      }
-    }
-
-    /* note: in prop mode we need at least 1 selected */
-    if (countsel == 0) {
-      continue;
-    }
-
-    if (is_prop_edit) {
-      tc->data_len = count;
-    }
-    else {
-      tc->data_len = countsel;
-    }
-
-    td = tc->data = MEM_callocN(tc->data_len * sizeof(TransData), "TransObData(MBall EditMode)");
-    tx = tc->data_ext = MEM_callocN(tc->data_len * sizeof(TransDataExtension),
-                                    "MetaElement_TransExtension");
-
-    copy_m3_m4(mtx, tc->obedit->obmat);
-    pseudoinverse_m3_m3(smtx, mtx, PSEUDOINVERSE_EPSILON);
-
-    for (ml = mb->editelems->first; ml; ml = ml->next) {
-      if (is_prop_edit || (ml->flag & SELECT)) {
-        td->loc = &ml->x;
-        copy_v3_v3(td->iloc, td->loc);
-        copy_v3_v3(td->center, td->loc);
-
-        quat_to_mat3(td->axismtx, ml->quat);
-
-        if (ml->flag & SELECT) {
-          td->flag = TD_SELECTED | TD_USEQUAT | TD_SINGLESIZE;
-        }
-        else {
-          td->flag = TD_USEQUAT;
-        }
-
-        copy_m3_m3(td->smtx, smtx);
-        copy_m3_m3(td->mtx, mtx);
-
-        td->ext = tx;
-
-        /* Radius of MetaElem (mass of MetaElem influence) */
-        if (ml->flag & MB_SCALE_RAD) {
-          td->val = &ml->rad;
-          td->ival = ml->rad;
-        }
-        else {
-          td->val = &ml->s;
-          td->ival = ml->s;
-        }
-
-        /* expx/expy/expz determine "shape" of some MetaElem types */
-        tx->size = &ml->expx;
-        tx->isize[0] = ml->expx;
-        tx->isize[1] = ml->expy;
-        tx->isize[2] = ml->expz;
-
-        /* quat is used for rotation of MetaElem */
-        tx->quat = ml->quat;
-        copy_qt_qt(tx->iquat, ml->quat);
-
-        tx->rot = NULL;
-
-        td++;
-        tx++;
-      }
-    }
-  }
-}
-
 /* ********************* curve/surface ********* */
 
 static void calc_distanceCurveVerts(TransData *head, TransData *tail)
diff --git a/source/blender/editors/transform/transform_conversions.h b/source/blender/editors/transform/transform_conversions.h
index 50fa9071a8e..5343ff250e1 100644
--- a/source/blender/editors/transform/transform_conversions.h
+++ b/source/blender/editors/transform/transform_conversions.h
@@ -58,6 +58,9 @@ void createTransArmatureVerts(TransInfo *t);
 void createTransCursor_image(TransInfo *t);
 void createTransCursor_view3d(TransInfo *t);
 
+/* transform_conversions_mball.c */
+void createTransMBallVerts(TransInfo *t);
+
 /* transform_conversions_mesh.c */
 void createTransEditVerts(TransInfo *t);
 #endif
diff --git a/source/blender/editors/transform/transform_conversions_mball.c b/source/blender/editors/transform/transform_conversions_mball.c
new file mode 100644
index 00000000000..5c27a625abd
--- /dev/null
+++ b/source/blender/editors/transform/transform_conversions_mball.c
@@ -0,0 +1,130 @@
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ */
+
+/** \file
+ * \ingroup edtransform
+ */
+
+#include "DNA_meta_types.h"
+
+#include "MEM_guardedalloc.h"
+
+#include "BLI_math.h"
+
+#include "BKE_context.h"
+#include "BKE_report.h"
+
+#include "transform.h"
+#include "transform_conversions.h"
+
+/* -------------------------------------------------------------------- */
+/** \name Meta Elements Transform Creation
+ *
+ * \{ */
+
+void createTransMBallVerts(TransInfo *t)
+{
+  FOREACH_TRANS_DATA_CONTAINER (t, tc) {
+    MetaBall *mb = (MetaBall *)tc->obedit->data;
+    MetaElem *ml;
+    TransData *td;
+    TransDataExtension *tx;
+    float mtx[3][3], smtx[3][3];
+    int count = 0, countsel = 0;
+    const bool is_prop_edit = (t->flag & T_PROP_EDIT) != 0;
+
+    /* count totals */
+    for (ml = mb->editelems->first; ml; ml = ml->next) {
+      if (ml->flag & SELECT) {
+        countsel++;
+      }
+      if (is_prop_edit) {
+        count++;
+      }
+    }
+
+    /* note: in prop mode we need at least 1 selected */
+    if (countsel == 0) {
+      continue;
+    }
+
+    if (is_prop_edit) {
+      tc->data_len = count;
+    }
+    else {
+      tc->data_len = countsel;
+    }
+
+    td = tc->data = MEM_callocN(tc->data_len * sizeof(TransData), "TransObData(MBall EditMode)");
+    tx = tc->data_ext = MEM_callocN(tc->data_len * sizeof(TransDataExtension),
+                                    "MetaElement_TransExtension");
+
+    copy_m3_m4(mtx, tc->obedit->obmat);
+    pseudoinverse_m3_m3(smtx, mtx, PSEUDOINVERSE_EPSILON);
+
+    for (ml = mb->editelems->first; ml; ml = ml->next) {
+      if (is_prop_edit || (ml->flag & SELECT)) {
+        td->loc = &ml->x;
+        copy_v3_v3(td->iloc, td->loc);
+        copy_v3_v3(td->center, td->loc);
+
+        quat_to_mat3(td->axismtx, ml->quat);
+
+        if (ml->flag & SELECT) {
+          td->flag = TD_SELECTED | TD_USEQUAT | TD_SINGLESIZE;
+        }
+        else {
+          td->flag = TD_USEQUAT;
+        }
+
+        copy_m3_m3(td->smtx, smtx);
+        copy_m3_m3(td->mtx, mtx);
+
+        td->ext = tx;
+
+        /* Radius of MetaElem (mass of MetaElem influence) */
+        if (ml->flag & MB_SCALE_RAD) {
+          td->val = &ml->rad;
+          td->ival = ml->rad;
+        }
+        else {
+          td->val = &ml->s;
+          td->ival = ml->s;
+        }
+
+        /* expx/expy/expz determine "shape" of some MetaElem types */
+        tx->size = &ml->expx;
+        tx->isize[0] = ml->expx;
+        tx->isize[1] = ml->expy;
+        tx->isize[2] = ml->expz;
+
+        /* quat is used for rotation of MetaElem */
+        tx->quat = ml->quat;
+        copy_qt_qt(tx->iquat, ml->quat);
+
+        tx->rot = NULL;
+
+        td++;
+        tx++;
+      }
+    }
+  }
+}
+
+/** \} */



More information about the Bf-blender-cvs mailing list