diff options
author | Ton Roosendaal <ton@blender.org> | 2004-04-07 16:46:50 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2004-04-07 16:46:50 +0400 |
commit | d748c8c38284c99f1b57923b4ce29d65c402c447 (patch) | |
tree | 6ae5b69ad5301146568c3aab15c50b7ace433f2d /source | |
parent | 4edae3b2c5ceea18ba44889a6f70c80fb0b57b20 (diff) |
Bug fix #1073
CTRL+SHIFT+A (apply lattice deform) on a Bezier Curve object was not
implemented yet. Added this.
Little sidenote: when curves are 2D the result will remain 2D, disregarding
deformation in 3rd dimension.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/intern/lattice.c | 41 |
1 files changed, 27 insertions, 14 deletions
diff --git a/source/blender/blenkernel/intern/lattice.c b/source/blender/blenkernel/intern/lattice.c index d32d5118a20..4d36e965e1c 100644 --- a/source/blender/blenkernel/intern/lattice.c +++ b/source/blender/blenkernel/intern/lattice.c @@ -433,6 +433,7 @@ static int _object_deform(Object *ob, int applyflag) if(applyflag) { Nurb *nu; BPoint *bp; + BezTriple *bezt; nu= cu->nurb.first; while(nu) { @@ -444,24 +445,36 @@ static int _object_deform(Object *ob, int applyflag) bp++; } } + else if(nu->bezt) { + a= nu->pntsu; + bezt= nu->bezt; + while(a--) { + calc_latt_deform(bezt->vec[0]); + calc_latt_deform(bezt->vec[1]); + calc_latt_deform(bezt->vec[2]); + bezt++; + } + test2DNurb(nu); + } nu= nu->next; } } - - /* when apply, do this too, looks more interactive */ - dl= cu->disp.first; - while(dl) { - - fp= dl->verts; - - if(dl->type==DL_INDEX3) tot=dl->parts; - else tot= dl->nr*dl->parts; - - for(a=0; a<tot; a++, fp+=3) { - calc_latt_deform(fp); + else { + /* apply deform on displist */ + dl= cu->disp.first; + while(dl) { + + fp= dl->verts; + + if(dl->type==DL_INDEX3) tot=dl->parts; + else tot= dl->nr*dl->parts; + + for(a=0; a<tot; a++, fp+=3) { + calc_latt_deform(fp); + } + + dl= dl->next; } - - dl= dl->next; } } end_latt_deform(); |