diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c index 33cb0707316..fe95d15f82e 100644 --- a/source/blender/blenkernel/intern/armature.c +++ b/source/blender/blenkernel/intern/armature.c @@ -2541,14 +2541,14 @@ int get_selected_defgroups(Object *ob, char *dg_selection, int defbase_tot) } /************** Bounding box ********************/ -static int minmax_armature(Object *ob, float min[3], float max[3]) +static int minmax_armature(Object *ob, float r_min[3], float r_max[3]) { bPoseChannel *pchan; /* For now, we assume BKE_pose_where_is has already been called (hence we have valid data in pachan). */ for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) { - DO_MINMAX(pchan->pose_head, min, max); - DO_MINMAX(pchan->pose_tail, min, max); + minmax_v3v3_v3(r_min, r_max, pchan->pose_head); + minmax_v3v3_v3(r_min, r_max, pchan->pose_tail); } return (ob->pose->chanbase.first != NULL); diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index 3ef2ce56cd6..afbabd8d3e5 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -177,7 +177,7 @@ static void cdDM_getMinMax(DerivedMesh *dm, float min_r[3], float max_r[3]) if (dm->numVertData) { for (i = 0; i < dm->numVertData; i++) { - DO_MINMAX(cddm->mvert[i].co, min_r, max_r); + minmax_v3v3_v3(min_r, max_r, cddm->mvert[i].co); } } else { diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c index d5dfcda77ce..54bc4c742fb 100644 --- a/source/blender/blenkernel/intern/curve.c +++ b/source/blender/blenkernel/intern/curve.c @@ -393,7 +393,7 @@ void BKE_curve_texspace_calc(Curve *cu) if (tot) doit = 1; fp = dl->verts; while (tot--) { - DO_MINMAX(fp, min, max); + minmax_v3v3_v3(min, max, fp); fp += 3; } dl = dl->next; @@ -598,9 +598,9 @@ void BKE_nurb_minmax(Nurb *nu, float min[3], float max[3]) a = nu->pntsu; bezt = nu->bezt; while (a--) { - DO_MINMAX(bezt->vec[0], min, max); - DO_MINMAX(bezt->vec[1], min, max); - DO_MINMAX(bezt->vec[2], min, max); + minmax_v3v3_v3(min, max, bezt->vec[0]); + minmax_v3v3_v3(min, max, bezt->vec[1]); + minmax_v3v3_v3(min, max, bezt->vec[2]); bezt++; } } @@ -608,7 +608,7 @@ void BKE_nurb_minmax(Nurb *nu, float min[3], float max[3]) a = nu->pntsu * nu->pntsv; bp = nu->bp; while (a--) { - DO_MINMAX(bp->vec, min, max); + minmax_v3v3_v3(min, max, bp->vec); bp++; } } diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c index 0154a2fa1e5..17c65856dd6 100644 --- a/source/blender/blenkernel/intern/displist.c +++ b/source/blender/blenkernel/intern/displist.c @@ -1606,19 +1606,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) { diff --git a/source/blender/blenkernel/intern/editderivedmesh.c b/source/blender/blenkernel/intern/editderivedmesh.c index f480f881a8d..585e0e1c745 100644 --- a/source/blender/blenkernel/intern/editderivedmesh.c +++ b/source/blender/blenkernel/intern/editderivedmesh.c @@ -1229,12 +1229,12 @@ static void emDM_getMinMax(DerivedMesh *dm, float min_r[3], float max_r[3]) if (bmdm->tc->bm->totvert) { if (bmdm->vertexCos) { BM_ITER_MESH_INDEX (eve, &iter, bmdm->tc->bm, BM_VERTS_OF_MESH, i) { - DO_MINMAX(bmdm->vertexCos[i], min_r, max_r); + minmax_v3v3_v3(min_r, max_r, bmdm->vertexCos[i]); } } else { BM_ITER_MESH (eve, &iter, bmdm->tc->bm, BM_VERTS_OF_MESH) { - DO_MINMAX(eve->co, min_r, max_r); + minmax_v3v3_v3(min_r, max_r, eve->co); } } } diff --git a/source/blender/blenkernel/intern/lattice.c b/source/blender/blenkernel/intern/lattice.c index c6f2bb75858..6a69ffb474a 100644 --- a/source/blender/blenkernel/intern/lattice.c +++ b/source/blender/blenkernel/intern/lattice.c @@ -701,7 +701,7 @@ void curve_deform_verts(Scene *scene, Object *cuOb, Object *target, if (defvert_find_weight(dvert, index) > 0.0f) { mul_m4_v3(cd.curvespace, vertexCos[a]); - DO_MINMAX(vertexCos[a], cd.dmin, cd.dmax); + minmax_v3v3_v3(cd.dmin, cd.dmax, vertexCos[a]); } } @@ -736,7 +736,7 @@ void curve_deform_verts(Scene *scene, Object *cuOb, Object *target, for (a = 0; a < numVerts; a++) { mul_m4_v3(cd.curvespace, vertexCos[a]); - DO_MINMAX(vertexCos[a], cd.dmin, cd.dmax); + minmax_v3v3_v3(cd.dmin, cd.dmax, vertexCos[a]); } for (a = 0; a < numVerts; a++) { diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c index 8075aaa21d3..7da0661fef6 100644 --- a/source/blender/blenkernel/intern/mball.c +++ b/source/blender/blenkernel/intern/mball.c @@ -368,7 +368,7 @@ void BKE_mball_texspace_calc(Object *ob) data = dl->verts; while (tot--) { /* Also weird... but longer. From utildefines. */ - DO_MINMAX(data, min, max); + minmax_v3v3_v3(min, max, data); data += 3; } dl = dl->next; @@ -2397,7 +2397,7 @@ int BKE_mball_minmax(MetaBall *mb, float min[3], float max[3]) INIT_MINMAX(min, max); for (ml = mb->elems.first; ml; ml = ml->next) { - DO_MINMAX(&ml->x, min, max); + minmax_v3v3_v3(min, max, &ml->x); } return (mb->elems.first != NULL); diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index 16e75fff702..537c64a4dbc 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -3017,7 +3017,7 @@ int BKE_mesh_minmax(Mesh *me, float r_min[3], float r_max[3]) int i = me->totvert; MVert *mvert; for (mvert = me->mvert; i--; mvert++) { - DO_MINMAX(mvert->co, r_min, r_max); + minmax_v3v3_v3(r_min, r_max, mvert->co); } return (me->totvert != 0); diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index e43c0999698..2ea832eebaa 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -2259,7 +2259,7 @@ void BKE_object_minmax(Object *ob, float min_r[3], float max_r[3]) for (a = 0; a < 8; a++) { mul_m4_v3(ob->obmat, bb.vec[a]); - DO_MINMAX(bb.vec[a], min_r, max_r); + minmax_v3v3_v3(min_r, max_r, bb.vec[a]); } change = TRUE; } @@ -2274,7 +2274,7 @@ void BKE_object_minmax(Object *ob, float min_r[3], float max_r[3]) for (v = 0; v < lt->pntsv; v++) { for (u = 0; u < lt->pntsu; u++, bp++) { mul_v3_m4v3(vec, ob->obmat, bp->vec); - DO_MINMAX(vec, min_r, max_r); + minmax_v3v3_v3(min_r, max_r, vec); } } } @@ -2286,9 +2286,9 @@ void BKE_object_minmax(Object *ob, float min_r[3], float max_r[3]) bPoseChannel *pchan; for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) { mul_v3_m4v3(vec, ob->obmat, pchan->pose_head); - DO_MINMAX(vec, min_r, max_r); + minmax_v3v3_v3(min_r, max_r, vec); mul_v3_m4v3(vec, ob->obmat, pchan->pose_tail); - DO_MINMAX(vec, min_r, max_r); + minmax_v3v3_v3(min_r, max_r, vec); } change = TRUE; } @@ -2302,7 +2302,7 @@ void BKE_object_minmax(Object *ob, float min_r[3], float max_r[3]) for (a = 0; a < 8; a++) { mul_m4_v3(ob->obmat, bb.vec[a]); - DO_MINMAX(bb.vec[a], min_r, max_r); + minmax_v3v3_v3(min_r, max_r, bb.vec[a]); } change = TRUE; } @@ -2311,15 +2311,15 @@ void BKE_object_minmax(Object *ob, float min_r[3], float max_r[3]) } if (change == FALSE) { - DO_MINMAX(ob->obmat[3], min_r, max_r); + minmax_v3v3_v3(min_r, max_r, ob->obmat[3]); copy_v3_v3(vec, ob->obmat[3]); add_v3_v3(vec, ob->size); - DO_MINMAX(vec, min_r, max_r); + minmax_v3v3_v3(min_r, max_r, vec); copy_v3_v3(vec, ob->obmat[3]); sub_v3_v3(vec, ob->size); - DO_MINMAX(vec, min_r, max_r); + minmax_v3v3_v3(min_r, max_r, vec); } } @@ -2343,7 +2343,7 @@ int BKE_object_minmax_dupli(Scene *scene, Object *ob, float r_min[3], float r_ma for (i = 0; i < 8; i++) { float vec[3]; mul_v3_m4v3(vec, dob->mat, bb->vec[i]); - DO_MINMAX(vec, r_min, r_max); + minmax_v3v3_v3(r_min, r_max, vec); } ok = 1; diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c index 26971368aea..2a92992cb9f 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.c +++ b/source/blender/blenkernel/intern/subsurf_ccg.c @@ -414,9 +414,7 @@ static void set_subsurf_uv(CCGSubSurf *ss, DerivedMesh *dm, DerivedMesh *result, /* make a map from original faces to CCGFaces */ faceMap = MEM_mallocN(totface * sizeof(*faceMap), "facemapuv"); - - fi = ccgSubSurf_getFaceIterator(uvss); - for (; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) { + for (fi = ccgSubSurf_getFaceIterator(uvss); !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) { CCGFace *f = ccgFaceIterator_getCurrent(fi); faceMap[GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(f))] = f; } @@ -664,9 +662,9 @@ static void ccgDM_getMinMax(DerivedMesh *dm, float min_r[3], float max_r[3]) { CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGSubSurf *ss = ccgdm->ss; - CCGVertIterator *vi = ccgSubSurf_getVertIterator(ss); - CCGEdgeIterator *ei = ccgSubSurf_getEdgeIterator(ss); - CCGFaceIterator *fi = ccgSubSurf_getFaceIterator(ss); + CCGVertIterator *vi; + CCGEdgeIterator *ei; + CCGFaceIterator *fi; CCGKey key; int i, edgeSize = ccgSubSurf_getEdgeSize(ss); int gridSize = ccgSubSurf_getGridSize(ss); @@ -676,22 +674,24 @@ static void ccgDM_getMinMax(DerivedMesh *dm, float min_r[3], float max_r[3]) if (!ccgSubSurf_getNumVerts(ss)) min_r[0] = min_r[1] = min_r[2] = max_r[0] = max_r[1] = max_r[2] = 0.0; - for (; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) { + for (vi = ccgSubSurf_getVertIterator(ss); !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) { CCGVert *v = ccgVertIterator_getCurrent(vi); float *co = ccgSubSurf_getVertData(ss, v); minmax_v3_v3v3(co, min_r, max_r); } + ccgVertIterator_free(vi); - for (; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) { + for (ei = ccgSubSurf_getEdgeIterator(ss); !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) { CCGEdge *e = ccgEdgeIterator_getCurrent(ei); CCGElem *edgeData = ccgSubSurf_getEdgeDataArray(ss, e); for (i = 0; i < edgeSize; i++) minmax_v3_v3v3(CCG_elem_offset_co(&key, edgeData, i), min_r, max_r); } + ccgEdgeIterator_free(ei); - for (; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) { + for (fi = ccgSubSurf_getFaceIterator(ss); !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) { CCGFace *f = ccgFaceIterator_getCurrent(fi); int S, x, y, numVerts = ccgSubSurf_getFaceNumVerts(f); @@ -703,10 +703,7 @@ static void ccgDM_getMinMax(DerivedMesh *dm, float min_r[3], float max_r[3]) minmax_v3_v3v3(CCG_grid_elem_co(&key, faceGridData, x, y), min_r, max_r); } } - ccgFaceIterator_free(fi); - ccgEdgeIterator_free(ei); - ccgVertIterator_free(vi); } static int ccgDM_getNumVerts(DerivedMesh *dm) @@ -1399,8 +1396,7 @@ static void ccgdm_getVertCos(DerivedMesh *dm, float (*cos)[3]) totvert = ccgSubSurf_getNumVerts(ss); vertMap2 = MEM_mallocN(totvert * sizeof(*vertMap2), "vertmap"); - vi = ccgSubSurf_getVertIterator(ss); - for (; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) { + for (vi = ccgSubSurf_getVertIterator(ss); !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) { CCGVert *v = ccgVertIterator_getCurrent(vi); vertMap2[GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v))] = v; @@ -1409,8 +1405,7 @@ static void ccgdm_getVertCos(DerivedMesh *dm, float (*cos)[3]) totedge = ccgSubSurf_getNumEdges(ss); edgeMap2 = MEM_mallocN(totedge * sizeof(*edgeMap2), "edgemap"); - ei = ccgSubSurf_getEdgeIterator(ss); - for (i = 0; !ccgEdgeIterator_isStopped(ei); i++, ccgEdgeIterator_next(ei)) { + for (ei = ccgSubSurf_getEdgeIterator(ss), i = 0; !ccgEdgeIterator_isStopped(ei); i++, ccgEdgeIterator_next(ei)) { CCGEdge *e = ccgEdgeIterator_getCurrent(ei); edgeMap2[GET_INT_FROM_POINTER(ccgSubSurf_getEdgeEdgeHandle(e))] = e; @@ -1418,8 +1413,7 @@ static void ccgdm_getVertCos(DerivedMesh *dm, float (*cos)[3]) totface = ccgSubSurf_getNumFaces(ss); faceMap2 = MEM_mallocN(totface * sizeof(*faceMap2), "facemap"); - fi = ccgSubSurf_getFaceIterator(ss); - for (; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) { + for (fi = ccgSubSurf_getFaceIterator(ss); !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) { CCGFace *f = ccgFaceIterator_getCurrent(fi); faceMap2[GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(f))] = f; @@ -1473,11 +1467,11 @@ static void ccgDM_foreachMappedVert( void *userData) { CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; - CCGVertIterator *vi = ccgSubSurf_getVertIterator(ccgdm->ss); + CCGVertIterator *vi; CCGKey key; CCG_key_top_level(&key, ccgdm->ss); - for (; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) { + for (vi = ccgSubSurf_getVertIterator(ccgdm->ss); !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) { CCGVert *v = ccgVertIterator_getCurrent(vi); CCGElem *vd = ccgSubSurf_getVertData(ccgdm->ss, v); int index = ccgDM_getVertMapIndex(ccgdm->ss, v); @@ -1496,13 +1490,13 @@ static void ccgDM_foreachMappedEdge( { CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGSubSurf *ss = ccgdm->ss; - CCGEdgeIterator *ei = ccgSubSurf_getEdgeIterator(ss); + CCGEdgeIterator *ei; CCGKey key; int i, edgeSize = ccgSubSurf_getEdgeSize(ss); CCG_key_top_level(&key, ss); - for (; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) { + for (ei = ccgSubSurf_getEdgeIterator(ss); !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) { CCGEdge *e = ccgEdgeIterator_getCurrent(ei); CCGElem *edgeData = ccgSubSurf_getEdgeDataArray(ss, e); int index = ccgDM_getEdgeMapIndex(ss, e); @@ -1527,15 +1521,13 @@ static void ccgDM_drawVerts(DerivedMesh *dm) CCGFaceIterator *fi; glBegin(GL_POINTS); - vi = ccgSubSurf_getVertIterator(ss); - for (; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) { + for (vi = ccgSubSurf_getVertIterator(ss); !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) { CCGVert *v = ccgVertIterator_getCurrent(vi); glVertex3fv(ccgSubSurf_getVertData(ss, v)); } ccgVertIterator_free(vi); - ei = ccgSubSurf_getEdgeIterator(ss); - for (; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) { + for (ei = ccgSubSurf_getEdgeIterator(ss); !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) { CCGEdge *e = ccgEdgeIterator_getCurrent(ei); int x; @@ -1544,8 +1536,7 @@ static void ccgDM_drawVerts(DerivedMesh *dm) } ccgEdgeIterator_free(ei); - fi = ccgSubSurf_getFaceIterator(ss); - for (; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) { + for (fi = ccgSubSurf_getFaceIterator(ss); !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) { CCGFace *f = ccgFaceIterator_getCurrent(fi); int x, y, S, numVerts = ccgSubSurf_getFaceNumVerts(f); @@ -1805,25 +1796,26 @@ static void ccgDM_drawMappedFacesGLSL(DerivedMesh *dm, doDraw = 0; matnr = -1; -#define PASSATTRIB(dx, dy, vert) { \ - if (attribs.totorco) { \ - index = getFaceIndex(ss, f, S, x + dx, y + dy, edgeSize, gridSize); \ - glVertexAttrib3fvARB(attribs.orco.gl_index, attribs.orco.array[index]); \ - } \ - for (b = 0; b < attribs.tottface; b++) { \ - MTFace *tf = &attribs.tface[b].array[a]; \ - glVertexAttrib2fvARB(attribs.tface[b].gl_index, tf->uv[vert]); \ - } \ - for (b = 0; b < attribs.totmcol; b++) { \ - MCol *cp = &attribs.mcol[b].array[a * 4 + vert]; \ - GLubyte col[4]; \ - col[0] = cp->b; col[1] = cp->g; col[2] = cp->r; col[3] = cp->a; \ - glVertexAttrib4ubvARB(attribs.mcol[b].gl_index, col); \ - } \ - if (attribs.tottang) { \ - float *tang = attribs.tang.array[a * 4 + vert]; \ - glVertexAttrib4fvARB(attribs.tang.gl_index, tang); \ - } \ +#define PASSATTRIB(dx, dy, vert) { \ + if (attribs.totorco) { \ + index = getFaceIndex(ss, f, S, x + dx, y + dy, edgeSize, gridSize); \ + glVertexAttrib3fvARB(attribs.orco.gl_index, \ + attribs.orco.array[index]); \ + } \ + for (b = 0; b < attribs.tottface; b++) { \ + MTFace *tf = &attribs.tface[b].array[a]; \ + glVertexAttrib2fvARB(attribs.tface[b].gl_index, tf->uv[vert]); \ + } \ + for (b = 0; b < attribs.totmcol; b++) { \ + MCol *cp = &attribs.mcol[b].array[a * 4 + vert]; \ + GLubyte col[4]; \ + col[0] = cp->b; col[1] = cp->g; col[2] = cp->r; col[3] = cp->a; \ + glVertexAttrib4ubvARB(attribs.mcol[b].gl_index, col); \ + } \ + if (attribs.tottang) { \ + float *tang = attribs.tang.array[a * 4 + vert]; \ + glVertexAttrib4fvARB(attribs.tang.gl_index, tang); \ + } \ } totface = ccgSubSurf_getNumFaces(ss); @@ -1934,7 +1926,9 @@ static void ccgDM_drawFacesGLSL(DerivedMesh *dm, DMSetMaterial setMaterial) } /* Only used by non-editmesh types */ -static void ccgDM_drawMappedFacesMat(DerivedMesh *dm, void (*setMaterial)(void *userData, int, void *attribs), int (*setFace)(void *userData, int index), void *userData) +static void ccgDM_drawMappedFacesMat(DerivedMesh *dm, + void (*setMaterial)(void *userData, int, void *attribs), + int (*setFace)(void *userData, int index), void *userData) { CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGSubSurf *ss = ccgdm->ss; @@ -1952,31 +1946,32 @@ static void ccgDM_drawMappedFacesMat(DerivedMesh *dm, void (*setMaterial)(void * matnr = -1; -#define PASSATTRIB(dx, dy, vert) { \ - if (attribs.totorco) { \ - index = getFaceIndex(ss, f, S, x + dx, y + dy, edgeSize, gridSize); \ - if (attribs.orco.gl_texco) \ - glTexCoord3fv(attribs.orco.array[index]); \ - else \ - glVertexAttrib3fvARB(attribs.orco.gl_index, attribs.orco.array[index]); \ - } \ - for (b = 0; b < attribs.tottface; b++) { \ - MTFace *tf = &attribs.tface[b].array[a]; \ - if (attribs.tface[b].gl_texco) \ - glTexCoord2fv(tf->uv[vert]); \ - else \ - glVertexAttrib2fvARB(attribs.tface[b].gl_index, tf->uv[vert]); \ - } \ - for (b = 0; b < attribs.totmcol; b++) { \ - MCol *cp = &attribs.mcol[b].array[a * 4 + vert]; \ - GLubyte col[4]; \ - col[0] = cp->b; col[1] = cp->g; col[2] = cp->r; col[3] = cp->a; \ - glVertexAttrib4ubvARB(attribs.mcol[b].gl_index, col); \ - } \ - if (attribs.tottang) { \ - float *tang = attribs.tang.array[a * 4 + vert]; \ - glVertexAttrib4fvARB(attribs.tang.gl_index, tang); \ - } \ +#define PASSATTRIB(dx, dy, vert) { \ + if (attribs.totorco) { \ + index = getFaceIndex(ss, f, S, x + dx, y + dy, edgeSize, gridSize); \ + if (attribs.orco.gl_texco) \ + glTexCoord3fv(attribs.orco.array[index]); \ + else \ + glVertexAttrib3fvARB(attribs.orco.gl_index, \ + attribs.orco.array[index]); \ + } \ + for (b = 0; b < attribs.tottface; b++) { \ + MTFace *tf = &attribs.tface[b].array[a]; \ + if (attribs.tface[b].gl_texco) \ + glTexCoord2fv(tf->uv[vert]); \ + else \ + glVertexAttrib2fvARB(attribs.tface[b].gl_index, tf->uv[vert]); \ + } \ + for (b = 0; b < attribs.totmcol; b++) { \ + MCol *cp = &attribs.mcol[b].array[a * 4 + vert]; \ + GLubyte col[4]; \ + col[0] = cp->b; col[1] = cp->g; col[2] = cp->r; col[3] = cp->a; \ + glVertexAttrib4ubvARB(attribs.mcol[b].gl_index, col); \ + } \ + if (attribs.tottang) { \ + float *tang = attribs.tang.array[a * 4 + vert]; \ + glVertexAttrib4fvARB(attribs.tang.gl_index, tang); \ + } \ } totface = ccgSubSurf_getNumFaces(ss); @@ -2422,14 +2417,14 @@ static void ccgDM_drawMappedEdges(DerivedMesh *dm, { CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGSubSurf *ss = ccgdm->ss; - CCGEdgeIterator *ei = ccgSubSurf_getEdgeIterator(ss); + CCGEdgeIterator *ei; CCGKey key; int i, useAging, edgeSize = ccgSubSurf_getEdgeSize(ss); CCG_key_top_level(&key, ss); ccgSubSurf_getUseAgeCounts(ss, &useAging, NULL, NULL, NULL); - for (; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) { + for (ei = ccgSubSurf_getEdgeIterator(ss); !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) { CCGEdge *e = ccgEdgeIterator_getCurrent(ei); CCGElem *edgeData = ccgSubSurf_getEdgeDataArray(ss, e); int index = ccgDM_getEdgeMapIndex(ss, e); @@ -2460,13 +2455,13 @@ static void ccgDM_drawMappedEdgesInterp(DerivedMesh *dm, CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGSubSurf *ss = ccgdm->ss; CCGKey key; - CCGEdgeIterator *ei = ccgSubSurf_getEdgeIterator(ss); + CCGEdgeIterator *ei; int i, useAging, edgeSize = ccgSubSurf_getEdgeSize(ss); CCG_key_top_level(&key, ss); ccgSubSurf_getUseAgeCounts(ss, &useAging, NULL, NULL, NULL); - for (; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) { + for (ei = ccgSubSurf_getEdgeIterator(ss); !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) { CCGEdge *e = ccgEdgeIterator_getCurrent(ei); CCGElem *edgeData = ccgSubSurf_getEdgeDataArray(ss, e); int index = ccgDM_getEdgeMapIndex(ss, e); @@ -2498,11 +2493,11 @@ static void ccgDM_foreachMappedFaceCenter( CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGSubSurf *ss = ccgdm->ss; CCGKey key; - CCGFaceIterator *fi = ccgSubSurf_getFaceIterator(ss); + CCGFaceIterator *fi; CCG_key_top_level(&key, ss); - for (; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) { + for (fi = ccgSubSurf_getFaceIterator(ss); !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) { CCGFace *f = ccgFaceIterator_getCurrent(fi); int index = ccgDM_getFaceMapIndex(ss, f); @@ -3168,8 +3163,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, totvert = ccgSubSurf_getNumVerts(ss); ccgdm->vertMap = MEM_mallocN(totvert * sizeof(*ccgdm->vertMap), "vertMap"); - vi = ccgSubSurf_getVertIterator(ss); - for (; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) { + for (vi = ccgSubSurf_getVertIterator(ss); !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) { CCGVert *v = ccgVertIterator_getCurrent(vi); ccgdm->vertMap[GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v))].vert = v; @@ -3178,8 +3172,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, totedge = ccgSubSurf_getNumEdges(ss); ccgdm->edgeMap = MEM_mallocN(totedge * sizeof(*ccgdm->edgeMap), "edgeMap"); - ei = ccgSubSurf_getEdgeIterator(ss); - for (; !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) { + for (ei = ccgSubSurf_getEdgeIterator(ss); !ccgEdgeIterator_isStopped(ei); ccgEdgeIterator_next(ei)) { CCGEdge *e = ccgEdgeIterator_getCurrent(ei); ccgdm->edgeMap[GET_INT_FROM_POINTER(ccgSubSurf_getEdgeEdgeHandle(e))].edge = e; @@ -3187,8 +3180,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, totface = ccgSubSurf_getNumFaces(ss); ccgdm->faceMap = MEM_mallocN(totface * sizeof(*ccgdm->faceMap), "faceMap"); - fi = ccgSubSurf_getFaceIterator(ss); - for (; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) { + for (fi = ccgSubSurf_getFaceIterator(ss); !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) { CCGFace *f = ccgFaceIterator_getCurrent(fi); ccgdm->faceMap[GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(f))].face = f; @@ -3237,7 +3229,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, has_edge_origindex = CustomData_has_layer(&ccgdm->dm.edgeData, CD_ORIGINDEX); - loopindex = loopindex2 = 0; //current loop index + loopindex = loopindex2 = 0; /* current loop index */ for (index = 0; index < totface; index++) { CCGFace *f = ccgdm->faceMap[index].face; int numVerts = ccgSubSurf_getFaceNumVerts(f); @@ -3587,8 +3579,7 @@ void subsurf_calculate_limit_positions(Mesh *me, float (*positions_r)[3]) ss_sync_from_derivedmesh(ss, dm, NULL, 0); - vi = ccgSubSurf_getVertIterator(ss); - for (; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) { + for (vi = ccgSubSurf_getVertIterator(ss); !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) { CCGVert *v = ccgVertIterator_getCurrent(vi); int idx = GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v)); int N = ccgSubSurf_getVertNumEdges(v); @@ -3596,8 +3587,8 @@ void subsurf_calculate_limit_positions(Mesh *me, float (*positions_r)[3]) float *co; int i; - edge_sum[0] = edge_sum[1] = edge_sum[2] = 0.0; - face_sum[0] = face_sum[1] = face_sum[2] = 0.0; + zero_v3(edge_sum); + zero_v3(face_sum); for (i = 0; i < N; i++) { CCGEdge *e = ccgSubSurf_getVertEdge(v, i); diff --git a/source/blender/blenlib/BLI_math_vector.h b/source/blender/blenlib/BLI_math_vector.h index d0f883e1c99..374da46a686 100644 --- a/source/blender/blenlib/BLI_math_vector.h +++ b/source/blender/blenlib/BLI_math_vector.h @@ -118,6 +118,8 @@ MINLINE void negate_v3_v3(float r[3], const float a[3]); MINLINE void negate_v4(float r[4]); MINLINE void negate_v4_v4(float r[4], const float a[3]); +MINLINE void negate_v3_short(short r[3]); + MINLINE float dot_v2v2(const float a[2], const float b[2]); MINLINE float dot_v3v3(const float a[3], const float b[3]); diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c index 5f5321162c9..3962f53862d 100644 --- a/source/blender/blenlib/intern/math_geom.c +++ b/source/blender/blenlib/intern/math_geom.c @@ -2323,7 +2323,7 @@ void box_minmax_bounds_m4(float min[3], float max[3], float boundbox[2][3], floa vec[2] = (a & 4) ? boundbox[0][2] : boundbox[1][2]; mul_m4_v3(mat, vec); - DO_MINMAX(vec, mn, mx); + minmax_v3v3_v3(mn, mx, vec); } copy_v3_v3(min, mn); diff --git a/source/blender/blenlib/intern/math_vector_inline.c b/source/blender/blenlib/intern/math_vector_inline.c index ef8f26e3780..56188048c02 100644 --- a/source/blender/blenlib/intern/math_vector_inline.c +++ b/source/blender/blenlib/intern/math_vector_inline.c @@ -458,6 +458,14 @@ MINLINE void negate_v4_v4(float r[4], const float a[4]) r[3] = -a[3]; } +/* could add more... */ +MINLINE void negate_v3_short(short r[3]) +{ + r[0] = -r[0]; + r[1] = -r[1]; + r[2] = -r[2]; +} + MINLINE float dot_v2v2(const float a[2], const float b[2]) { return a[0] * b[0] + a[1] * b[1]; diff --git a/source/blender/blenlib/intern/pbvh.c b/source/blender/blenlib/intern/pbvh.c index d80f90ec41a..73a90fa53a0 100644 --- a/source/blender/blenlib/intern/pbvh.c +++ b/source/blender/blenlib/intern/pbvh.c @@ -1090,11 +1090,8 @@ static void pbvh_update_normals(PBVH *bvh, PBVHNode **nodes, copy_v3_v3(no, vnor[v]); normalize_v3(no); - - mvert->no[0] = (short)(no[0] * 32767.0f); - mvert->no[1] = (short)(no[1] * 32767.0f); - mvert->no[2] = (short)(no[2] * 32767.0f); - + normal_float_to_short_v3(mvert->no, no); + mvert->flag &= ~ME_VERT_PBVH_UPDATE; } } diff --git a/source/blender/bmesh/intern/bmesh_polygon.c b/source/blender/bmesh/intern/bmesh_polygon.c index fbfc253c364..6f6db3ce239 100644 --- a/source/blender/bmesh/intern/bmesh_polygon.c +++ b/source/blender/bmesh/intern/bmesh_polygon.c @@ -213,7 +213,7 @@ void BM_face_calc_center_bounds(BMFace *f, float r_cent[3]) l_iter = l_first = BM_FACE_FIRST_LOOP(f); do { - DO_MINMAX(l_iter->v->co, min, max); + minmax_v3v3_v3(min, max, l_iter->v->co); } while ((l_iter = l_iter->next) != l_first); mid_v3_v3v3(r_cent, min, max); diff --git a/source/blender/bmesh/operators/bmo_removedoubles.c b/source/blender/bmesh/operators/bmo_removedoubles.c index 8060c3b5142..52c693efc84 100644 --- a/source/blender/bmesh/operators/bmo_removedoubles.c +++ b/source/blender/bmesh/operators/bmo_removedoubles.c @@ -396,8 +396,8 @@ void bmo_collapse_exec(BMesh *bm, BMOperator *op) BLI_array_grow_one(edges); edges[tot] = e; - DO_MINMAX(e->v1->co, min, max); - DO_MINMAX(e->v2->co, min, max); + minmax_v3v3_v3(min, max, e->v1->co); + minmax_v3v3_v3(min, max, e->v2->co); } add_v3_v3v3(min, min, max); diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c index f698153eb7f..8e2dfb72703 100644 --- a/source/blender/editors/armature/editarmature.c +++ b/source/blender/editors/armature/editarmature.c @@ -569,8 +569,8 @@ void docenter_armature(Scene *scene, Object *ob, float cursor[3], int centermode float min[3], max[3]; INIT_MINMAX(min, max); for (ebone = arm->edbo->first; ebone; ebone = ebone->next) { - DO_MINMAX(ebone->head, min, max); - DO_MINMAX(ebone->tail, min, max); + minmax_v3v3_v3(min, max, ebone->head); + minmax_v3v3_v3(min, max, ebone->tail); } mid_v3_v3v3(cent, min, max); } diff --git a/source/blender/editors/armature/meshlaplacian.c b/source/blender/editors/armature/meshlaplacian.c index ccba3599318..b975d156868 100644 --- a/source/blender/editors/armature/meshlaplacian.c +++ b/source/blender/editors/armature/meshlaplacian.c @@ -451,11 +451,11 @@ static void heat_ray_tree_create(LaplacianSystem *sys) float bb[6]; INIT_MINMAX(bb, bb + 3); - DO_MINMAX(verts[mf->v1], bb, bb + 3); - DO_MINMAX(verts[mf->v2], bb, bb + 3); - DO_MINMAX(verts[mf->v3], bb, bb + 3); + minmax_v3v3_v3(bb, bb + 3, verts[mf->v1]); + minmax_v3v3_v3(bb, bb + 3, verts[mf->v2]); + minmax_v3v3_v3(bb, bb + 3, verts[mf->v3]); if (mf->v4) { - DO_MINMAX(verts[mf->v4], bb, bb + 3); + minmax_v3v3_v3(bb, bb + 3, verts[mf->v4]); } BLI_bvhtree_insert(sys->heat.bvhtree, a, bb, 2); @@ -1753,7 +1753,7 @@ static void harmonic_coordinates_bind(Scene *UNUSED(scene), MeshDeformModifierDa INIT_MINMAX(mdb->min, mdb->max); for (a = 0; a < mdb->totcagevert; a++) - DO_MINMAX(mdb->cagecos[a], mdb->min, mdb->max); + minmax_v3v3_v3(mdb->min, mdb->max, mdb->cagecos[a]); /* allocate memory */ mdb->size = (2 << (mmd->gridsize - 1)) + 2; diff --git a/source/blender/editors/mesh/editface.c b/source/blender/editors/mesh/editface.c index 5f6384d6b24..63704f5b8e6 100644 --- a/source/blender/editors/mesh/editface.c +++ b/source/blender/editors/mesh/editface.c @@ -427,7 +427,7 @@ int paintface_minmax(Object *ob, float r_min[3], float r_max[3]) copy_v3_v3(vec, (mvert[ml->v].co)); mul_m3_v3(bmat, vec); add_v3_v3v3(vec, vec, ob->obmat[3]); - DO_MINMAX(vec, r_min, r_max); + minmax_v3v3_v3(r_min, r_max, vec); } ok = TRUE; diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index 2f317ed87c2..9be71218da0 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -734,7 +734,7 @@ static int edbm_dupli_extrude_cursor_invoke(bContext *C, wmOperator *op, wmEvent BM_ITER_MESH (v1, &iter, vc.em->bm, BM_VERTS_OF_MESH) { if (BM_elem_flag_test(v1, BM_ELEM_SELECT)) { - DO_MINMAX(v1->co, min, max); + minmax_v3v3_v3(min, max, v1->co); done = 1; } } diff --git a/source/blender/editors/mesh/meshtools.c b/source/blender/editors/mesh/meshtools.c index aa89eaa0c6d..989f1a36f99 100644 --- a/source/blender/editors/mesh/meshtools.c +++ b/source/blender/editors/mesh/meshtools.c @@ -806,7 +806,7 @@ intptr_t mesh_octree_table(Object *ob, BMEditMesh *em, const float co[3], char m BMVert *eve; BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) { - DO_MINMAX(eve->co, min, max); + minmax_v3v3_v3(min, max, eve->co); } } else { @@ -814,19 +814,17 @@ intptr_t mesh_octree_table(Object *ob, BMEditMesh *em, const float co[3], char m int a; for (a = 0, mvert = me->mvert; a < me->totvert; a++, mvert++) - DO_MINMAX(mvert->co, min, max); + minmax_v3v3_v3(min, max, mvert->co); } /* for quick unit coordinate calculus */ copy_v3_v3(MeshOctree.offs, min); - MeshOctree.offs[0] -= MOC_THRESH; /* we offset it 1 threshold unit extra */ - MeshOctree.offs[1] -= MOC_THRESH; - MeshOctree.offs[2] -= MOC_THRESH; + /* we offset it 1 threshold unit extra */ + add_v3_fl(MeshOctree.offs, -MOC_THRESH); sub_v3_v3v3(MeshOctree.div, max, min); - MeshOctree.div[0] += 2 * MOC_THRESH; /* and divide with 2 threshold unit more extra (try 8x8 unit grid on paint) */ - MeshOctree.div[1] += 2 * MOC_THRESH; - MeshOctree.div[2] += 2 * MOC_THRESH; + /* and divide with 2 threshold unit more extra (try 8x8 unit grid on paint) */ + add_v3_fl(MeshOctree.div, 2.0f * MOC_THRESH); mul_v3_fl(MeshOctree.div, 1.0f / MOC_RES); if (MeshOctree.div[0] == 0.0f) MeshOctree.div[0] = 1.0f; diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index 34395163ad3..9c58717ec53 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -697,7 +697,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) mul_v3_fl(cent, 1.0f / (float)total); } else { - DO_MINMAX(eve->co, min, max); + minmax_v3v3_v3(min, max, eve->co); mid_v3_v3v3(cent, min, max); } } diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c index 64f4ffe4881..9f5e700616e 100644 --- a/source/blender/editors/physics/particle_edit.c +++ b/source/blender/editors/physics/particle_edit.c @@ -3100,8 +3100,8 @@ static int particle_intersect_dm(Scene *scene, Object *ob, DerivedMesh *dm, if (pa_minmax==0) { INIT_MINMAX(p_min, p_max); - DO_MINMAX(co1, p_min, p_max); - DO_MINMAX(co2, p_min, p_max); + minmax_v3v3_v3(p_min, p_max, co1); + minmax_v3v3_v3(p_min, p_max, co2); } else { copy_v3_v3(p_min, pa_minmax); diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index bfd293ee5b6..e35c0e1c654 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -2189,9 +2189,9 @@ static int viewselected_exec(bContext *C, wmOperator *UNUSED(op)) bPoseChannel *pchan_tx = pchan->custom_tx ? pchan->custom_tx : pchan; ok = 1; mul_v3_m4v3(vec, ob->obmat, pchan_tx->pose_head); - DO_MINMAX(vec, min, max); + minmax_v3v3_v3(min, max, vec); mul_v3_m4v3(vec, ob->obmat, pchan_tx->pose_tail); - DO_MINMAX(vec, min, max); + minmax_v3v3_v3(min, max, vec); } } } diff --git a/source/blender/editors/space_view3d/view3d_snap.c b/source/blender/editors/space_view3d/view3d_snap.c index dfb3714948b..5af1829af5a 100644 --- a/source/blender/editors/space_view3d/view3d_snap.c +++ b/source/blender/editors/space_view3d/view3d_snap.c @@ -501,7 +501,7 @@ static void make_trans_verts(Object *obedit, float min[3], float max[3], int mod if (tv->flag & SELECT) { add_v3_v3(centroid, tv->oldloc); total += 1.0f; - DO_MINMAX(tv->oldloc, min, max); + minmax_v3v3_v3(min, max, tv->oldloc); } } if (total != 0.0f) { @@ -856,7 +856,7 @@ static void bundle_midpoint(Scene *scene, Object *ob, float vec[3]) if ((track->flag & TRACK_HAS_BUNDLE) && TRACK_SELECTED(track)) { ok = 1; mul_v3_m4v3(pos, obmat, track->bundle_pos); - DO_MINMAX(pos, min, max); + minmax_v3v3_v3(min, max, pos); } track = track->next; @@ -898,7 +898,7 @@ static int snap_curs_to_sel(bContext *C, wmOperator *UNUSED(op)) mul_m3_v3(bmat, vec); add_v3_v3(vec, obedit->obmat[3]); add_v3_v3(centroid, vec); - DO_MINMAX(vec, min, max); + minmax_v3v3_v3(min, max, vec); } if (v3d->around == V3D_CENTROID) { @@ -923,7 +923,7 @@ static int snap_curs_to_sel(bContext *C, wmOperator *UNUSED(op)) copy_v3_v3(vec, pchan->pose_head); mul_m4_v3(obact->obmat, vec); add_v3_v3(centroid, vec); - DO_MINMAX(vec, min, max); + minmax_v3v3_v3(min, max, vec); count++; } } @@ -943,7 +943,7 @@ static int snap_curs_to_sel(bContext *C, wmOperator *UNUSED(op)) } add_v3_v3(centroid, vec); - DO_MINMAX(vec, min, max); + minmax_v3v3_v3(min, max, vec); count++; } CTX_DATA_END; @@ -1082,7 +1082,7 @@ int ED_view3d_minmax_verts(Object *obedit, float min[3], float max[3]) mul_m3_v3(bmat, vec); add_v3_v3(vec, obedit->obmat[3]); add_v3_v3(centroid, vec); - DO_MINMAX(vec, min, max); + minmax_v3v3_v3(min, max, vec); } MEM_freeN(transvmain); diff --git a/source/blender/editors/transform/transform_manipulator.c b/source/blender/editors/transform/transform_manipulator.c index 94f6640ca5b..a869af56537 100644 --- a/source/blender/editors/transform/transform_manipulator.c +++ b/source/blender/editors/transform/transform_manipulator.c @@ -114,7 +114,7 @@ static void calc_tw_center(Scene *scene, float *co) float *min= scene->twmin; float *max= scene->twmax; - DO_MINMAX(co, min, max); + minmax_v3v3_v3(min, max, co); add_v3_v3(twcent, co); } diff --git a/source/blender/editors/uvedit/uvedit_unwrap_ops.c b/source/blender/editors/uvedit/uvedit_unwrap_ops.c index 6b03b5a1a8a..e504e37cb20 100644 --- a/source/blender/editors/uvedit/uvedit_unwrap_ops.c +++ b/source/blender/editors/uvedit/uvedit_unwrap_ops.c @@ -870,13 +870,12 @@ static void uv_map_transform_center(Scene *scene, View3D *v3d, float *result, switch (around) { case V3D_CENTER: /* bounding box center */ - min[0] = min[1] = min[2] = 1e20f; - max[0] = max[1] = max[2] = -1e20f; + INIT_MINMAX(min, max); BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { if (BM_elem_flag_test(efa, BM_ELEM_SELECT)) { BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { - DO_MINMAX(l->v->co, min, max); + minmax_v3v3_v3(min, max, l->v->co); } } } @@ -886,9 +885,7 @@ static void uv_map_transform_center(Scene *scene, View3D *v3d, float *result, case V3D_CURSOR: /*cursor center*/ cursx = give_cursor(scene, v3d); /* shift to objects world */ - result[0] = cursx[0] - ob->obmat[3][0]; - result[1] = cursx[1] - ob->obmat[3][1]; - result[2] = cursx[2] - ob->obmat[3][2]; + sub_v3_v3v3(result, cursx, ob->obmat[3]); break; case V3D_LOCAL: /*object center*/ diff --git a/source/blender/modifiers/intern/MOD_cast.c b/source/blender/modifiers/intern/MOD_cast.c index c4772895b03..5e791a9f748 100644 --- a/source/blender/modifiers/intern/MOD_cast.c +++ b/source/blender/modifiers/intern/MOD_cast.c @@ -367,16 +367,16 @@ static void cuboid_do( float vec[3]; /* let the center of the ctrl_ob be part of the bound box: */ - DO_MINMAX(center, min, max); + minmax_v3v3_v3(min, max, center); for (i = 0; i < numVerts; i++) { sub_v3_v3v3(vec, vertexCos[i], center); - DO_MINMAX(vec, min, max); + minmax_v3v3_v3(min, max, vec); } } else { for (i = 0; i < numVerts; i++) { - DO_MINMAX(vertexCos[i], min, max); + minmax_v3v3_v3(min, max, vertexCos[i]); } } diff --git a/source/blender/modifiers/intern/MOD_solidify.c b/source/blender/modifiers/intern/MOD_solidify.c index 264d84af81e..0ca4d8dcd4f 100644 --- a/source/blender/modifiers/intern/MOD_solidify.c +++ b/source/blender/modifiers/intern/MOD_solidify.c @@ -558,9 +558,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, /* flip vertex normals for copied verts */ mv = mvert + numVerts; for (i = 0; i < numVerts; i++, mv++) { - mv->no[0] = -mv->no[0]; - mv->no[1] = -mv->no[1]; - mv->no[2] = -mv->no[2]; + negate_v3_short(mv->no); } if (smd->flag & MOD_SOLIDIFY_RIM) { @@ -692,7 +690,8 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, } #ifdef SOLIDIFY_SIDE_NORMALS - normal_quad_v3(nor, mvert[ml[j - 4].v].co, + normal_quad_v3(nor, + mvert[ml[j - 4].v].co, mvert[ml[j - 3].v].co, mvert[ml[j - 2].v].co, mvert[ml[j - 1].v].co); diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 1fd10f83389..b69f9518c1a 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -4331,7 +4331,7 @@ static void finalize_render_object(Render *re, ObjectRen *obr, int timeoffset) if ((a & 255)==0) ver= obr->vertnodes[a>>8].vert; else ver++; - DO_MINMAX(ver->co, min, max); + minmax_v3v3_v3(min, max, ver->co); } if (obr->strandbuf) { @@ -4357,8 +4357,8 @@ static void finalize_render_object(Render *re, ObjectRen *obr, int timeoffset) copy_v3_v3(sbound->boundbox[0], smin); copy_v3_v3(sbound->boundbox[1], smax); - DO_MINMAX(smin, min, max); - DO_MINMAX(smax, min, max); + minmax_v3v3_v3(min, max, smin); + minmax_v3v3_v3(min, max, smax); } } diff --git a/source/blender/render/intern/source/occlusion.c b/source/blender/render/intern/source/occlusion.c index 03767dfa391..21e4e216063 100644 --- a/source/blender/render/intern/source/occlusion.c +++ b/source/blender/render/intern/source/occlusion.c @@ -402,7 +402,7 @@ static int occ_find_bbox_axis(OcclusionTree *tree, int begin, int end, float *mi INIT_MINMAX(min, max); for (a = begin; a < end; a++) { - DO_MINMAX(tree->co[a], min, max); + minmax_v3v3_v3(min, max, tree->co[a]); } for (a=0; a<3; a++) { diff --git a/source/blender/render/intern/source/rayshade.c b/source/blender/render/intern/source/rayshade.c index c68fb578d4c..f550cd82061 100644 --- a/source/blender/render/intern/source/rayshade.c +++ b/source/blender/render/intern/source/rayshade.c @@ -2234,8 +2234,8 @@ static void ray_shadow_qmc(ShadeInput *shi, LampRen *lar, const float lampco[3], QMC_initPixel(qsa, shi->thread); INIT_MINMAX(min, max); - for (i=0; iscale*tree->scale); points[i].back= (area[i] < 0.0f); - mul_v3_fl(points[i].co, 1.0f/tree->scale); - DO_MINMAX(points[i].co, tree->min, tree->max); + mul_v3_fl(points[i].co, 1.0f / tree->scale); + minmax_v3v3_v3(tree->min, tree->max, points[i].co); refpoints[i]= points + i; } diff --git a/source/blender/render/intern/source/strand.c b/source/blender/render/intern/source/strand.c index cc824087c87..6690425967c 100644 --- a/source/blender/render/intern/source/strand.c +++ b/source/blender/render/intern/source/strand.c @@ -1063,18 +1063,19 @@ void free_strand_surface(Render *re) void strand_minmax(StrandRen *strand, float min[3], float max[3], const float width) { StrandVert *svert; - float vec[3], width2= 2.0f*width; + const float width2 = width * 2.0f; + float vec[3]; int a; for (a=0, svert=strand->vert; atotvert; a++, svert++) { copy_v3_v3(vec, svert->co); - DO_MINMAX(vec, min, max); + minmax_v3v3_v3(min, max, vec); if (width!=0.0f) { - vec[0]+= width; vec[1]+= width; vec[2]+= width; - DO_MINMAX(vec, min, max); - vec[0]-= width2; vec[1]-= width2; vec[2]-= width2; - DO_MINMAX(vec, min, max); + add_v3_fl(vec, width); + minmax_v3v3_v3(min, max, vec); + add_v3_fl(vec, -width2); + minmax_v3v3_v3(min, max, vec); } } } diff --git a/source/blender/render/intern/source/volume_precache.c b/source/blender/render/intern/source/volume_precache.c index ff715eeca07..ea6b9b890ac 100644 --- a/source/blender/render/intern/source/volume_precache.c +++ b/source/blender/render/intern/source/volume_precache.c @@ -150,7 +150,7 @@ void global_bounds_obi(Render *re, ObjectInstanceRen *obi, float *bbmin, float * /* convert to global space */ mul_m4_v3(re->viewinv, co); - DO_MINMAX(co, vp->bbmin, vp->bbmax); + minmax_v3v3_v3(vp->bbmin, vp->bbmax, co); } copy_v3_v3(bbmin, vp->bbmin); diff --git a/source/gameengine/Converter/BL_BlenderDataConversion.cpp b/source/gameengine/Converter/BL_BlenderDataConversion.cpp index 14362cd8f06..196f032e584 100644 --- a/source/gameengine/Converter/BL_BlenderDataConversion.cpp +++ b/source/gameengine/Converter/BL_BlenderDataConversion.cpp @@ -1375,16 +1375,17 @@ static float my_boundbox_mesh(Mesh *me, float *loc, float *size) if (!size) size= msize; mvert= me->mvert; - for (a=0; atotvert; a++, mvert++) { - co= mvert->co; + for (a = 0; atotvert; a++, mvert++) { + co = mvert->co; /* bounds */ - DO_MINMAX(co, min, max); + minmax_v3v3_v3(min, max, co); /* radius */ - vert_radius= co[0]*co[0] + co[1]*co[1] + co[2]*co[2]; + + vert_radius = len_squared_v3(co); if (vert_radius > radius) - radius= vert_radius; + radius = vert_radius; } if (me->totvert) { @@ -1432,8 +1433,8 @@ static void my_tex_space_mesh(Mesh *me) INIT_MINMAX(min, max); fp= (float *)kb->data; - for (a=0; atotelem; a++, fp+=3) { - DO_MINMAX(fp, min, max); + for (a=0; atotelem; a++, fp += 3) { + minmax_v3v3_v3(min, max, fp); } if (kb->totelem) { loc[0]= (min[0]+max[0])/2.0f; loc[1]= (min[1]+max[1])/2.0f; loc[2]= (min[2]+max[2])/2.0f;