Three fixes in edge/crease edit for Transform Properties Panel (NKEY)

- code wasn't edge-select aware yet
- the "Median" button now allows to move a "median" correctly around, also
  to 0 or 1 in a single step
- missing undo push  here.
This commit is contained in:
2004-12-09 16:43:37 +00:00
parent add697407a
commit 2de89e2a35

View File

@@ -1088,7 +1088,7 @@ static void v3d_editvertex_buts(uiBlock *block, Object *ob, float lim)
if(me->medge) {
eed= em->edges.first;
while(eed) {
if((eed->v1->f & 1) && (eed->v2->f & 1)) {
if((eed->f & SELECT)) {
totedge++;
median[3]+= eed->crease;
}
@@ -1184,6 +1184,8 @@ static void v3d_editvertex_buts(uiBlock *block, Object *ob, float lim)
median[3]= ve_median[3]-median[3];
if(ob->type==OB_MESH) {
float diffac= 1.0;
eve= em->verts.first;
while(eve) {
if(eve->f & 1) {
@@ -1192,14 +1194,29 @@ static void v3d_editvertex_buts(uiBlock *block, Object *ob, float lim)
eve= eve->next;
}
eed= em->edges.first;
while(eed) {
if((eed->v1->f & 1) && (eed->v2->f & 1)) {
totedge++;
/* calculate the differences to squeeze a range smaller when values are close to 1 or 0 */
/* this way you can edit a median value which is applied on clipped values :) */
if(totedge>1) {
float max= 0.0;
for(eed= em->edges.first; eed; eed= eed->next) {
if(eed->f & SELECT) {
if(max < ABS(eed->crease-ve_median[3])) max= ABS(eed->crease-ve_median[3]);
}
}
if(max>0.0) {
if(ve_median[3]> 0.5) diffac= (1.0-ve_median[3])/max;
else diffac= (ve_median[3])/max;
if(diffac>1.0) diffac= 1.0;
}
}
for(eed= em->edges.first; eed; eed= eed->next) {
if(eed->f & SELECT) {
eed->crease+= median[3];
eed->crease= ve_median[3] + diffac*(eed->crease-ve_median[3]);
CLAMP(eed->crease, 0.0, 1.0);
}
eed= eed->next;
}
}
else if(ob->type==OB_CURVE || ob->type==OB_SURF) {
@@ -1249,6 +1266,7 @@ static void v3d_editvertex_buts(uiBlock *block, Object *ob, float lim)
nu= nu->next;
}
}
BIF_undo_push("Transform properties");
}
}