diff options
Diffstat (limited to 'source/blender/blenkernel/intern/displist.c')
-rw-r--r-- | source/blender/blenkernel/intern/displist.c | 74 |
1 files changed, 31 insertions, 43 deletions
diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c index 0154a2fa1e5..9274d7aefcb 100644 --- a/source/blender/blenkernel/intern/displist.c +++ b/source/blender/blenkernel/intern/displist.c @@ -425,8 +425,8 @@ static void curve_to_displist(Curve *cu, ListBase *nubase, ListBase *dispbase, i void BKE_displist_fill(ListBase *dispbase, ListBase *to, int flipnormal) { ScanFillContext sf_ctx; - ScanFillVert *eve, *v1, *vlast; - ScanFillFace *efa; + ScanFillVert *sf_vert, *sf_vert_new, *sf_vert_last; + ScanFillFace *sf_tri; DispList *dlnew = NULL, *dl; float *f1; int colnr = 0, charidx = 0, cont = 1, tot, a, *index, nextcol = 0; @@ -454,24 +454,24 @@ void BKE_displist_fill(ListBase *dispbase, ListBase *to, int flipnormal) /* make editverts and edges */ f1 = dl->verts; a = dl->nr; - eve = v1 = NULL; + sf_vert = sf_vert_new = NULL; while (a--) { - vlast = eve; + sf_vert_last = sf_vert; - eve = BLI_scanfill_vert_add(&sf_ctx, f1); + sf_vert = BLI_scanfill_vert_add(&sf_ctx, f1); totvert++; - if (vlast == NULL) - v1 = eve; + if (sf_vert_last == NULL) + sf_vert_new = sf_vert; else { - BLI_scanfill_edge_add(&sf_ctx, vlast, eve); + BLI_scanfill_edge_add(&sf_ctx, sf_vert_last, sf_vert); } f1 += 3; } - if (eve != NULL && v1 != NULL) { - BLI_scanfill_edge_add(&sf_ctx, eve, v1); + if (sf_vert != NULL && sf_vert_new != NULL) { + BLI_scanfill_edge_add(&sf_ctx, sf_vert, sf_vert_new); } } else if (colnr < dl->col) { @@ -499,31 +499,31 @@ void BKE_displist_fill(ListBase *dispbase, ListBase *to, int flipnormal) /* vert data */ f1 = dlnew->verts; totvert = 0; - eve = sf_ctx.fillvertbase.first; - while (eve) { - copy_v3_v3(f1, eve->co); + sf_vert = sf_ctx.fillvertbase.first; + while (sf_vert) { + copy_v3_v3(f1, sf_vert->co); f1 += 3; /* index number */ - eve->tmp.l = totvert; + sf_vert->tmp.l = totvert; totvert++; - eve = eve->next; + sf_vert = sf_vert->next; } /* index data */ - efa = sf_ctx.fillfacebase.first; + sf_tri = sf_ctx.fillfacebase.first; index = dlnew->index; - while (efa) { - index[0] = (intptr_t)efa->v1->tmp.l; - index[1] = (intptr_t)efa->v2->tmp.l; - index[2] = (intptr_t)efa->v3->tmp.l; + while (sf_tri) { + index[0] = (intptr_t)sf_tri->v1->tmp.l; + index[1] = (intptr_t)sf_tri->v2->tmp.l; + index[2] = (intptr_t)sf_tri->v3->tmp.l; if (flipnormal) SWAP(int, index[0], index[2]); index += 3; - efa = efa->next; + sf_tri = sf_tri->next; } } @@ -752,7 +752,7 @@ static void curve_calc_modifiers_pre(Scene *scene, Object *ob, int forRender, fl Curve *cu = ob->data; ListBase *nurb = BKE_curve_nurbs_get(cu); int numVerts = 0; - const int editmode = (!forRender && cu->editnurb); + const int editmode = (!forRender && (cu->editnurb || cu->editfont)); ModifierApplyFlag app_flag = 0; float (*originalVerts)[3] = NULL; float (*deformedVerts)[3] = NULL; @@ -793,9 +793,7 @@ static void curve_calc_modifiers_pre(Scene *scene, Object *ob, int forRender, fl md->scene = scene; - if ((md->mode & required_mode) != required_mode) - continue; - if (mti->isDisabled && mti->isDisabled(md, forRender)) + if (!modifier_isEnabled(scene, md, required_mode)) continue; if (mti->type != eModifierTypeType_OnlyDeform) continue; @@ -867,7 +865,7 @@ static void curve_calc_modifiers_post(Scene *scene, Object *ob, ListBase *dispba Curve *cu = ob->data; ListBase *nurb = BKE_curve_nurbs_get(cu); int required_mode = 0, totvert = 0; - int editmode = (!forRender && cu->editnurb); + int editmode = (!forRender && (cu->editnurb || cu->editfont)); DerivedMesh *dm = NULL, *ndm; float (*vertCos)[3] = NULL; int useCache = !forRender; @@ -899,9 +897,7 @@ static void curve_calc_modifiers_post(Scene *scene, Object *ob, ListBase *dispba md->scene = scene; - if ((md->mode & required_mode) != required_mode) - continue; - if (mti->isDisabled && mti->isDisabled(md, forRender)) + if (!modifier_isEnabled(scene, md, required_mode)) continue; if (mti->type == eModifierTypeType_OnlyDeform || @@ -1095,7 +1091,7 @@ static void curve_calc_orcodm(Scene *scene, Object *ob, DerivedMesh *derivedFina ModifierData *pretessellatePoint; Curve *cu = ob->data; int required_mode; - int editmode = (!forRender && cu->editnurb); + int editmode = (!forRender && (cu->editnurb || cu->editfont)); DerivedMesh *ndm, *orcodm = NULL; const ModifierApplyFlag app_flag = forRender ? MOD_APPLY_RENDER : 0; @@ -1118,9 +1114,7 @@ static void curve_calc_orcodm(Scene *scene, Object *ob, DerivedMesh *derivedFina md->scene = scene; - if ((md->mode & required_mode) != required_mode) - continue; - if (mti->isDisabled && mti->isDisabled(md, forRender)) + if (!modifier_isEnabled(scene, md, required_mode)) continue; if (mti->type != eModifierTypeType_Constructive) continue; @@ -1606,19 +1600,13 @@ static void boundbox_displist(Object *ob) if (cu->bb == NULL) cu->bb = MEM_callocN(sizeof(BoundBox), "boundbox"); bb = cu->bb; - dl = ob->disp.first; - - while (dl) { - if (dl->type == DL_INDEX3) tot = dl->nr; - else tot = dl->nr * dl->parts; - + for (dl = ob->disp.first; dl; dl = dl->next) { + tot = (dl->type == DL_INDEX3) ? dl->nr : dl->nr * dl->parts; vert = dl->verts; for (a = 0; a < tot; a++, vert += 3) { - doit = 1; - DO_MINMAX(vert, min, max); + minmax_v3v3_v3(min, max, vert); } - - dl = dl->next; + doit = (tot != 0); } if (!doit) { |