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>2006-03-07 00:44:08 +0300
committerTon Roosendaal <ton@blender.org>2006-03-07 00:44:08 +0300
commitaa1d8162be2267f246c512b6591455a0c3815c7f (patch)
tree1c7ab140572df2daf706e2d6d27cb7afb4008976 /source/blender/blenkernel/intern/curve.c
parentf365dd2d91f0a97b12550d871e580eebc1ed93e5 (diff)
Curves with bevel, but without front/back or extrude depth, now render
as a full circle instead of 2 halves.
Diffstat (limited to 'source/blender/blenkernel/intern/curve.c')
-rw-r--r--source/blender/blenkernel/intern/curve.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c
index 9646ab3718e..315a1981354 100644
--- a/source/blender/blenkernel/intern/curve.c
+++ b/source/blender/blenkernel/intern/curve.c
@@ -1109,13 +1109,38 @@ void makebevelcurve(Object *ob, ListBase *disp)
fp[3]= fp[4]= 0.0;
fp[5]= cu->ext1;
}
+ else if( (cu->flag & (CU_FRONT|CU_BACK))==0 && cu->ext1==0.0f) { // we make a full round bevel in that case
+
+ nr= 4+ 2*cu->bevresol;
+
+ dl= MEM_callocN(sizeof(DispList), "makebevelcurve p1");
+ dl->verts= MEM_mallocN(nr*3*sizeof(float), "makebevelcurve p1");
+ BLI_addtail(disp, dl);
+ dl->type= DL_POLY;
+ dl->parts= 1;
+ dl->flag= DL_BACK_CURVE;
+ dl->nr= nr;
+
+ /* a circle */
+ fp= dl->verts;
+ dhoek= (2.0f*M_PI/(nr));
+ hoek= -(nr-1)*dhoek;
+
+ for(a=0; a<nr; a++) {
+ fp[0]= 0.0;
+ fp[1]= (float)(cos(hoek)*(cu->ext2));
+ fp[2]= (float)(sin(hoek)*(cu->ext2)) - cu->ext1;
+ hoek+= dhoek;
+ fp+= 3;
+ }
+ }
else {
short dnr;
/* bevel now in three parts, for proper vertex normals */
/* part 1 */
dnr= nr= 2+ cu->bevresol;
- if( (cu->flag & (CU_FRONT|CU_BACK))==0) // we make a full round bevel in that case
+ if( (cu->flag & (CU_FRONT|CU_BACK))==0)
nr= 3+ 2*cu->bevresol;
dl= MEM_callocN(sizeof(DispList), "makebevelcurve p1");