diff options
Diffstat (limited to 'source/blender/blenkernel/intern/curve.c')
-rw-r--r-- | source/blender/blenkernel/intern/curve.c | 36 |
1 files changed, 22 insertions, 14 deletions
diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c index 769c31ad8a9..6676bf0e03f 100644 --- a/source/blender/blenkernel/intern/curve.c +++ b/source/blender/blenkernel/intern/curve.c @@ -1445,7 +1445,7 @@ static void alfa_bezpart(BezTriple *prevbezt, BezTriple *bezt, Nurb *nu, float * for(a=0; a<resolu; a++, fac+= dfac) { - set_four_ipo(fac, t, KEY_LINEAR); + set_four_ipo(fac, t, nu->tilt_interp); data_a[a]= t[0]*pprev->alfa + t[1]*prevbezt->alfa + t[2]*bezt->alfa + t[3]*next->alfa; } @@ -2351,6 +2351,8 @@ void sethandlesNurb(short code) /* code==2: set vectorhandle */ /* code==3 (HD_ALIGN) it toggle, vectorhandles become HD_FREE */ /* code==4: sets icu flag to become IPO_AUTO_HORIZ, horizontal extremes on auto-handles */ + /* code==5: Set align, like 3 but no toggle */ + /* code==6: Clear align, like 3 but no toggle */ Nurb *nu; BezTriple *bezt; short a, ok=0; @@ -2381,22 +2383,28 @@ void sethandlesNurb(short code) /* there is 1 handle not FREE: FREE it all, else make ALIGNED */ nu= editNurb.first; - while(nu) { - if( (nu->type & 7)==1) { - bezt= nu->bezt; - a= nu->pntsu; - while(a--) { - if(bezt->f1 && bezt->h1) ok= 1; - if(bezt->f3 && bezt->h2) ok= 1; - if(ok) break; - bezt++; + if (code == 5) { + ok = HD_ALIGN; + } else if (code == 6) { + ok = HD_FREE; + } else { + /* Toggle */ + while(nu) { + if( (nu->type & 7)==1) { + bezt= nu->bezt; + a= nu->pntsu; + while(a--) { + if(bezt->f1 && bezt->h1) ok= 1; + if(bezt->f3 && bezt->h2) ok= 1; + if(ok) break; + bezt++; + } } + nu= nu->next; } - nu= nu->next; + if(ok) ok= HD_FREE; + else ok= HD_ALIGN; } - if(ok) ok= HD_FREE; - else ok= HD_ALIGN; - nu= editNurb.first; while(nu) { if( (nu->type & 7)==1) { |