== LimitLoc Transform - Tweaks ==
authorJoshua Leung <aligorith@gmail.com>
Thu, 6 Dec 2007 02:57:47 +0000 (02:57 +0000)
committerJoshua Leung <aligorith@gmail.com>
Thu, 6 Dec 2007 02:57:47 +0000 (02:57 +0000)
* 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.

source/blender/src/buttons_object.c
source/blender/src/transform.c

index 2d51064112be31019892f119ecb441ea0f35a122..4b7ac1fe5a27373caf1101ded9f19fb6c74be5bf 100644 (file)
@@ -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:
index 637bed97abd4b250bec17c14c62061ce67c84a45..8a38c66738f2ededcd3341ac0158d0dd74eb66a7 100644 (file)
@@ -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);
        }
 }