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:
authorTon Roosendaal <ton@blender.org>2004-12-09 19:43:37 +0300
committerTon Roosendaal <ton@blender.org>2004-12-09 19:43:37 +0300
commit2de89e2a353d251fce88c06da1a6a38cc770cf62 (patch)
treebfc0bf84b4fd1c2a8394b11811a36d8d9c8981ee /source/blender/src/drawview.c
parentadd697407af6e71f62744aa47141ffc0a8f24e1a (diff)
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.
Diffstat (limited to 'source/blender/src/drawview.c')
-rw-r--r--source/blender/src/drawview.c30
1 files changed, 24 insertions, 6 deletions
diff --git a/source/blender/src/drawview.c b/source/blender/src/drawview.c
index 24cf6b04af5..3692e5c0e5f 100644
--- a/source/blender/src/drawview.c
+++ b/source/blender/src/drawview.c
@@ -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");
}
}