diff options
author | Joshua Leung <aligorith@gmail.com> | 2007-12-06 05:57:47 +0300 |
---|---|---|
committer | Joshua Leung <aligorith@gmail.com> | 2007-12-06 05:57:47 +0300 |
commit | df1db2073759939fb8bec905eb99321efc3bd04b (patch) | |
tree | 8e174c0d0cf0da17e6e41c263edf0aeca3459fb8 /source/blender/src | |
parent | 26b8892c9c6733e2716df4aa84d02e3ff5331735 (diff) |
== LimitLoc Transform - Tweaks ==
* Made 'cob' be a stack var instead of allocating memory (as suggested by Martin)
* Adjusted the position of "Trans" button in panel, and changed its name/tooltip to better describe its function
* 'Active' constraint now draws brighter than other constraints... this is still not clear enough though.
Diffstat (limited to 'source/blender/src')
-rw-r--r-- | source/blender/src/buttons_object.c | 10 | ||||
-rw-r--r-- | source/blender/src/transform.c | 35 |
2 files changed, 22 insertions, 23 deletions
diff --git a/source/blender/src/buttons_object.c b/source/blender/src/buttons_object.c index 2d51064112b..4b7ac1fe5a2 100644 --- a/source/blender/src/buttons_object.c +++ b/source/blender/src/buttons_object.c @@ -527,7 +527,7 @@ static void draw_constraint (uiBlock *block, ListBase *list, bConstraint *con, s uiBlockSetEmboss(block, UI_EMBOSSN); /* rounded header */ - rb_col= (con->flag & CONSTRAINT_ACTIVE)?40:20; + rb_col= (con->flag & CONSTRAINT_ACTIVE)?50:20; uiDefBut(block, ROUNDBOX, B_DIFF, "", *xco-10, *yco-1, width+40, 22, NULL, 5.0, 0.0, (con->flag & CONSTRAINT_EXPAND)?3:15 , rb_col-20, ""); @@ -1249,7 +1249,7 @@ static void draw_constraint (uiBlock *block, ListBase *list, bConstraint *con, s int togButWidth = 50; int textButWidth = ((width/2)-togButWidth); - height = 106; + height = 136; uiDefBut(block, ROUNDBOX, B_DIFF, "", *xco-10, *yco-height, width+40,height-1, NULL, 5.0, 0.0, 12, rb_col, ""); /* Draw Pairs of LimitToggle+LimitValue */ @@ -1283,11 +1283,11 @@ static void draw_constraint (uiBlock *block, ListBase *list, bConstraint *con, s uiDefButF(block, NUM, B_CONSTRAINT_TEST, "", *xco+(width-textButWidth-5), *yco-72, (textButWidth-5), 18, &(data->zmax), -1000, 1000, 0.1,0.5,"Highest z value to allow"); uiBlockEndAlign(block); - // temp placement!!! - uiDefButBitS(block, TOG, LIMIT_TRANSFORM, B_CONSTRAINT_TEST, "Trans", *xco+245, *yco-100, 50, 18, &data->flag2, 0, 24, 0, 0, "Only use during transform"); + /* special option(s) */ + uiDefButBitS(block, TOG, LIMIT_TRANSFORM, B_CONSTRAINT_TEST, "For Transform", *xco+(width/4), *yco-100, (width/2), 18, &data->flag2, 0, 24, 0, 0, "Transforms are affected by this constraint as well"); /* constraint space settings */ - draw_constraint_spaceselect(block, con, *xco, *yco-100, is_armature_owner(ob), -1); + draw_constraint_spaceselect(block, con, *xco, *yco-130, is_armature_owner(ob), -1); } break; case CONSTRAINT_TYPE_ROTLIMIT: diff --git a/source/blender/src/transform.c b/source/blender/src/transform.c index 637bed97abd..8a38c66738f 100644 --- a/source/blender/src/transform.c +++ b/source/blender/src/transform.c @@ -1318,23 +1318,23 @@ static void constraintTransLim(TransInfo *t, TransData *td) { if (td->con) { bConstraintTypeInfo *cti= get_constraint_typeinfo(CONSTRAINT_TYPE_LOCLIMIT); - bConstraintOb *cob; + bConstraintOb cob; bConstraint *con; /* Make a temporary bConstraintOb for using these limit constraints * - they only care that cob->matrix is correctly set ;-) * - current space should be local */ - cob= MEM_callocN(sizeof(bConstraintOb), "bConstraintOb-Transform"); - Mat4One(cob->matrix); + memset(&cob, 0, sizeof(bConstraintOb)); + Mat4One(cob.matrix); if (td->tdi) { TransDataIpokey *tdi= td->tdi; - cob->matrix[3][0]= tdi->locx[0]; - cob->matrix[3][1]= tdi->locy[0]; - cob->matrix[3][2]= tdi->locz[0]; + cob.matrix[3][0]= tdi->locx[0]; + cob.matrix[3][1]= tdi->locy[0]; + cob.matrix[3][2]= tdi->locz[0]; } else { - VECCOPY(cob->matrix[3], td->loc); + VECCOPY(cob.matrix[3], td->loc); } /* Evaluate valid constraints */ @@ -1351,8 +1351,8 @@ static void constraintTransLim(TransInfo *t, TransData *td) /* do space conversions */ if (con->ownspace == CONSTRAINT_SPACE_WORLD) { /* just multiply by td->mtx (this should be ok) */ - Mat4CpyMat4(tmat, cob->matrix); - Mat4MulMat34(cob->matrix, td->mtx, tmat); // checkme + Mat4CpyMat4(tmat, cob.matrix); + Mat4MulMat34(cob.matrix, td->mtx, tmat); // checkme } else if (con->ownspace != CONSTRAINT_SPACE_LOCAL) { /* skip... incompatable spacetype */ @@ -1360,28 +1360,27 @@ static void constraintTransLim(TransInfo *t, TransData *td) } /* do constraint */ - cti->evaluate_constraint(con, cob, NULL); + cti->evaluate_constraint(con, &cob, NULL); /* convert spaces again */ if (con->ownspace == CONSTRAINT_SPACE_WORLD) { /* just multiply by td->mtx (this should be ok) */ - Mat4CpyMat4(tmat, cob->matrix); - Mat4MulMat34(cob->matrix, td->smtx, tmat); // checkme + Mat4CpyMat4(tmat, cob.matrix); + Mat4MulMat34(cob.matrix, td->smtx, tmat); // checkme } } } - /* copy results from cob->matrix, and free */ + /* copy results from cob->matrix */ if (td->tdi) { TransDataIpokey *tdi= td->tdi; - tdi->locx[0]= cob->matrix[3][0]; - tdi->locy[0]= cob->matrix[3][1]; - tdi->locz[0]= cob->matrix[3][2]; + tdi->locx[0]= cob.matrix[3][0]; + tdi->locy[0]= cob.matrix[3][1]; + tdi->locz[0]= cob.matrix[3][2]; } else { - VECCOPY(td->loc, cob->matrix[3]); + VECCOPY(td->loc, cob.matrix[3]); } - MEM_freeN(cob); } } |