[Bf-blender-cvs] [05617a068e6] temp-object-multi-mode: TMP
Campbell Barton
noreply at git.blender.org
Tue Apr 10 19:11:52 CEST 2018
Commit: 05617a068e61d2ab3d5807ca98fd7802311f06a9
Author: Campbell Barton
Date: Mon Apr 9 17:36:47 2018 +0200
Branches: temp-object-multi-mode
https://developer.blender.org/rB05617a068e61d2ab3d5807ca98fd7802311f06a9
TMP
===================================================================
M source/blender/editors/transform/transform_conversions.c
M source/blender/editors/transform/transform_generics.c
===================================================================
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index 2d068a351ab..3eeeab31512 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -8098,7 +8098,7 @@ static void createTransGPencil(bContext *C, TransInfo *t)
* For now, we just do these without creating TransData2D for the 2D
* strokes. This may cause issues in future though.
*/
- t->total = 0;
+ th->total = 0;
if (gpd == NULL)
return;
@@ -8127,11 +8127,11 @@ static void createTransGPencil(bContext *C, TransInfo *t)
if (is_prop_edit_connected) {
/* connected only - so only if selected */
if (gps->flag & GP_STROKE_SELECT)
- t->total += gps->totpoints;
+ th->total += gps->totpoints;
}
else {
/* everything goes - connection status doesn't matter */
- t->total += gps->totpoints;
+ th->total += gps->totpoints;
}
}
else {
@@ -8143,7 +8143,7 @@ static void createTransGPencil(bContext *C, TransInfo *t)
// TODO: 2D vs 3D?
for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
if (pt->flag & GP_SPOINT_SELECT)
- t->total++;
+ th->total++;
}
}
}
@@ -8152,13 +8152,13 @@ static void createTransGPencil(bContext *C, TransInfo *t)
}
/* Stop trying if nothing selected */
- if (t->total == 0) {
+ if (th->total == 0) {
return;
}
/* Allocate memory for data */
- t->data = MEM_callocN(t->total * sizeof(TransData), "TransData(GPencil)");
- td = t->data;
+ th->data = MEM_callocN(th->total * sizeof(TransData), "TransData(GPencil)");
+ td = th->data;
unit_m3(smtx);
unit_m3(mtx);
@@ -8339,10 +8339,13 @@ void createTransData(bContext *C, TransInfo *t)
createTransTexspace(t);
}
else if (t->options & CTX_EDGE) {
- t->ext = NULL;
t->flag |= T_EDIT;
+ FOREACH_THAND (t, th) {
+ th->ext = NULL;
+ }
+
createTransEdge(t);
- if (t->data && t->flag & T_PROP_EDIT) {
+ if (t->total_all_handle && t->flag & T_PROP_EDIT) {
sort_trans_data(t); // makes selected become first in array
set_prop_dist(t, 1);
sort_trans_data_dist(t);
@@ -8353,7 +8356,7 @@ void createTransData(bContext *C, TransInfo *t)
t->flag |= T_POINTS;
createTransGPencil(C, t);
- if (t->data && (t->flag & T_PROP_EDIT)) {
+ if (t->total_all_handle && (t->flag & T_PROP_EDIT)) {
sort_trans_data(t); // makes selected become first in array
set_prop_dist(t, 1);
sort_trans_data_dist(t);
@@ -8365,7 +8368,7 @@ void createTransData(bContext *C, TransInfo *t)
/* copied from below */
createTransMaskingData(C, t);
- if (t->data && (t->flag & T_PROP_EDIT)) {
+ if (t->total_all_handle && (t->flag & T_PROP_EDIT)) {
sort_trans_data(t); // makes selected become first in array
set_prop_dist(t, true);
sort_trans_data_dist(t);
@@ -8375,9 +8378,9 @@ void createTransData(bContext *C, TransInfo *t)
if (!ELEM(t->mode, TFM_SHEAR, TFM_SHRINKFATTEN))
createTransPaintCurveVerts(C, t);
}
- else if (t->obedit) {
+ else if (t->flag & T_EDIT) {
createTransUVs(C, t);
- if (t->data && (t->flag & T_PROP_EDIT)) {
+ if (t->total_all_handle && (t->flag & T_PROP_EDIT)) {
sort_trans_data(t); // makes selected become first in array
set_prop_dist(t, 1);
sort_trans_data_dist(t);
@@ -8388,7 +8391,7 @@ void createTransData(bContext *C, TransInfo *t)
t->flag |= T_POINTS | T_2D_EDIT;
createTransActionData(C, t);
- if (t->data && (t->flag & T_PROP_EDIT)) {
+ if (t->total_all_handle && (t->flag & T_PROP_EDIT)) {
sort_trans_data(t); // makes selected become first in array
//set_prop_dist(t, false); /* don't do that, distance has been set in createTransActionData already */
sort_trans_data_dist(t);
@@ -8407,7 +8410,7 @@ void createTransData(bContext *C, TransInfo *t)
t->flag |= T_POINTS | T_2D_EDIT;
createTransGraphEditData(C, t);
- if (t->data && (t->flag & T_PROP_EDIT)) {
+ if (t->total_all_handle && (t->flag & T_PROP_EDIT)) {
sort_trans_data(t); // makes selected become first in array
set_prop_dist(t, false); /* don't do that, distance has been set in createTransGraphEditData already */
sort_trans_data_dist(t);
@@ -8416,7 +8419,7 @@ void createTransData(bContext *C, TransInfo *t)
else if (t->spacetype == SPACE_NODE) {
t->flag |= T_POINTS | T_2D_EDIT;
createTransNodeData(C, t);
- if (t->data && (t->flag & T_PROP_EDIT)) {
+ if (t->total_all_handle && (t->flag & T_PROP_EDIT)) {
sort_trans_data(t); // makes selected become first in array
set_prop_dist(t, 1);
sort_trans_data_dist(t);
@@ -8430,28 +8433,30 @@ void createTransData(bContext *C, TransInfo *t)
/* copied from above */
createTransMaskingData(C, t);
- if (t->data && (t->flag & T_PROP_EDIT)) {
+ if (t->total_all_handle && (t->flag & T_PROP_EDIT)) {
sort_trans_data(t); // makes selected become first in array
set_prop_dist(t, true);
sort_trans_data_dist(t);
}
}
}
- else if (t->obedit) {
- t->ext = NULL;
- if (t->obedit->type == OB_MESH) {
+ else if (t->flag & T_EDIT) {
+ FOREACH_THAND (t, th) {
+ th->ext = NULL;
+ }
+ if (t->obedit_type == OB_MESH) {
createTransEditVerts(t);
}
- else if (ELEM(t->obedit->type, OB_CURVE, OB_SURF)) {
+ else if (ELEM(t->obedit_type, OB_CURVE, OB_SURF)) {
createTransCurveVerts(t);
}
- else if (t->obedit->type == OB_LATTICE) {
+ else if (t->obedit_type == OB_LATTICE) {
createTransLatticeVerts(t);
}
- else if (t->obedit->type == OB_MBALL) {
+ else if (t->obedit_type == OB_MBALL) {
createTransMBallVerts(t);
}
- else if (t->obedit->type == OB_ARMATURE) {
+ else if (t->obedit_type == OB_ARMATURE) {
t->flag &= ~T_PROP_EDIT;
createTransArmatureVerts(t);
}
@@ -8461,10 +8466,10 @@ void createTransData(bContext *C, TransInfo *t)
t->flag |= T_EDIT | T_POINTS;
- if (t->data && t->flag & T_PROP_EDIT) {
- if (ELEM(t->obedit->type, OB_CURVE, OB_MESH)) {
+ if (t->total_all_handle && t->flag & T_PROP_EDIT) {
+ if (ELEM(t->obedit_type, OB_CURVE, OB_MESH)) {
sort_trans_data(t); // makes selected become first in array
- if ((t->obedit->type == OB_MESH) && (t->flag & T_PROP_CONNECTED)) {
+ if ((t->obedit_type == OB_MESH) && (t->flag & T_PROP_CONNECTED)) {
/* already calculated by editmesh_set_connectivity_distance */
}
else {
@@ -8483,13 +8488,17 @@ void createTransData(bContext *C, TransInfo *t)
if (t->mode == TFM_BONESIZE) {
t->flag &= ~(T_EDIT | T_POINTS);
t->flag |= T_POSE;
- t->poseobj = ob; /* <- tsk tsk, this is going to give issues one day */
+
+ FOREACH_THAND (t, th) {
+ th->poseobj = th->obedit;
+ th->obedit = NULL;
+ }
}
}
else if (ob && (ob->mode & OB_MODE_POSE)) {
// XXX this is currently limited to active armature only...
// XXX active-layer checking isn't done as that should probably be checked through context instead
- Object **objects[1];
+ Object *objects[1];
objects[0] = ob;
uint objects_len = 1;
createTransPose(t, objects, objects_len);
@@ -8502,7 +8511,7 @@ void createTransData(bContext *C, TransInfo *t)
Base *base_arm = BKE_view_layer_base_find(t->view_layer, ob_armature);
if (base_arm) {
if (BASE_VISIBLE(base_arm)) {
- Object **objects[1];
+ Object *objects[1];
objects[0] = ob_armature;
uint objects_len = 1;
createTransPose(t, objects, objects_len);
@@ -8514,7 +8523,7 @@ void createTransData(bContext *C, TransInfo *t)
createTransParticleVerts(C, t);
t->flag |= T_POINTS;
- if (t->data && t->flag & T_PROP_EDIT) {
+ if (t->total_all_handle && t->flag & T_PROP_EDIT) {
sort_trans_data(t); // makes selected become first in array
set_prop_dist(t, 1);
sort_trans_data_dist(t);
@@ -8530,7 +8539,7 @@ void createTransData(bContext *C, TransInfo *t)
createTransObject(C, t);
t->flag |= T_OBJECT;
- if (t->data && t->flag & T_PROP_EDIT) {
+ if (t->total_all_handle && t->flag & T_PROP_EDIT) {
// selected objects are already first, no need to presort
set_prop_dist(t, 1);
sort_trans_data_dist(t);
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index 707a6eeeae9..6cd7d2f6a9b 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -167,7 +167,7 @@ static void clipMirrorModifier(TransInfo *t)
}
TransData *td = th->data;
- for (i = 0; i < t->total; i++, td++) {
+ for (i = 0; i < th->total; i++, td++) {
int clip;
float loc[3], iloc[3];
@@ -231,11 +231,12 @@ static void clipMirrorModifier(TransInfo *t)
/* assumes obedit set to mesh object */
static void editbmesh_apply_to_mirror(TransInfo *t)
{
- TransData *td = t->data;
+ FOREACH_THAND (t, th) {
+ TransData *td = th->data;
BMVert *eve;
int i;
-
- for (i = 0; i < t->total; i++, td++) {
+
+ for (i = 0; i < th->total; i++, td++) {
if (td->flag & TD_NOACTION)
break;
if (td->loc == NULL)
@@ -254,6 +255,8 @@ static void editbmesh_apply_to_mirror(TransInfo *t)
td->loc[0] = 0;
}
}
+
+ } // FIXME(indent)
}
/* for the realtime animation recording feature, handle overlapping data */
@@ -436,12 +439,16 @@ static void recalcData_nla(TransInfo *t)
Scene *scene = t->scene;
double secf = FPS;
int i;
-
+
+ /* only ever one */
+ BLI_assert(t->thand_len == 1);
+ TransHandle *th = &t->thand[0];
+
/* for each strip we've got, perform some additional validation of the values that got set before
* using RNA to set the value (which does some special operations when setting these values to make
* sure that everything works ok)
*/
- for (i = 0; i < t->total; i++, tdn++) {
+ for (i = 0; i < th->total; i++, tdn++) {
NlaStrip *strip = tdn->strip;
PointerRNA strip_ptr;
short pExceeded, nExceeded, iter;
@@ -658,14 +665,18 @@ static void recalcData_image(TransInfo *t)
else if (t->options & CTX_PAINT_CURVE) {
flushTransPaintCurve(t);
}
- else if (t->obedit && t->obedit->type == OB_MESH) {
+ else if ((t-
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list