Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Leung <aligorith@gmail.com>2007-12-06 05:57:47 +0300
committerJoshua Leung <aligorith@gmail.com>2007-12-06 05:57:47 +0300
commitdf1db2073759939fb8bec905eb99321efc3bd04b (patch)
tree8e174c0d0cf0da17e6e41c263edf0aeca3459fb8 /source/blender/src
parent26b8892c9c6733e2716df4aa84d02e3ff5331735 (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.c10
-rw-r--r--source/blender/src/transform.c35
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);
}
}