diff options
Diffstat (limited to 'source/blender/src/transform_generics.c')
-rw-r--r-- | source/blender/src/transform_generics.c | 43 |
1 files changed, 35 insertions, 8 deletions
diff --git a/source/blender/src/transform_generics.c b/source/blender/src/transform_generics.c index 47a7bd5299f..6738d437ab6 100644 --- a/source/blender/src/transform_generics.c +++ b/source/blender/src/transform_generics.c @@ -550,6 +550,39 @@ void recalcData(TransInfo *t) } +void initTransModeFlags(TransInfo *t, int mode) +{ + t->mode = mode; + t->num.flag = 0; + + /* REMOVING RESTRICTIONS FLAGS */ + t->flag &= ~T_ALL_RESTRICTIONS; + + switch (mode) { + case TFM_RESIZE: + t->flag |= T_NULL_ONE; + t->num.flag |= NUM_NULL_ONE; + t->num.flag |= NUM_AFFECT_ALL; + if (!G.obedit) { + t->flag |= T_NO_ZERO; + t->num.flag |= NUM_NO_ZERO; + } + break; + case TFM_TOSPHERE: + t->num.flag |= NUM_NULL_ONE; + t->num.flag |= NUM_NO_NEGATIVE; + t->flag |= T_NO_CONSTRAINT; + break; + case TFM_SHEAR: + case TFM_CREASE: + case TFM_BONE_ENVELOPE: + case TFM_CURVE_SHRINKFATTEN: + case TFM_BONE_ROLL: + t->flag |= T_NO_CONSTRAINT; + break; + } +} + void drawLine(float *center, float *dir, char axis, short options) { extern void make_axis_color(char *col, char *col2, char axis); // drawview.c @@ -584,6 +617,7 @@ void drawLine(float *center, float *dir, char axis, short options) void initTrans (TransInfo *t) { + /* moving: is shown in drawobject() (transform color) */ if(G.obedit || (t->flag & T_POSE) ) G.moving= G_TRANSFORM_EDIT; else if(G.f & G_PARTICLEEDIT) G.moving= G_TRANSFORM_PARTICLE; @@ -593,8 +627,6 @@ void initTrans (TransInfo *t) t->ext = NULL; t->flag = 0; - t->num.flag = 0; - /* setting PET flag */ if ((t->context & CTX_NO_PET) == 0 && (G.scene->proportional)) { @@ -607,8 +639,6 @@ void initTrans (TransInfo *t) t->con.imval[1] = t->imval[1]; t->transform = NULL; - t->handleEvent = NULL; - t->customData = NULL; t->total = t->num.idx = @@ -644,6 +674,7 @@ void initTrans (TransInfo *t) t->around = V3D_CENTER; setTransformViewMatrices(t); + initNDofInput(&(t->ndof)); } /* Here I would suggest only TransInfo related issues, like free data & reset vars. Not redraws */ @@ -689,10 +720,6 @@ void postTrans (TransInfo *t) MEM_freeN(t->data2d); t->data2d= NULL; } - - if ((t->flag & T_FREE_CUSTOMDATA) && t->customData != NULL) { - MEM_freeN(t->customData); - } if(t->spacetype==SPACE_IMAGE) { if (G.sima->flag & SI_LIVE_UNWRAP) |