- eve->tmp.l is used for storing temporary indexes (not prev pointer)

- several for loops were deleted
   - several warnings were removed
This commit is contained in:
2006-11-22 16:44:27 +00:00
parent 0b0c8c9244
commit d8f99cf5c2

View File

@@ -466,14 +466,12 @@ static void emDM_foreachMappedEdge(DerivedMesh *dm, void (*func)(void *userData,
int i;
if (emdm->vertexCos) {
EditVert *eve, *preveve;
EditVert *eve;
for (i=0,eve=emdm->em->verts.first; eve; eve= eve->next)
eve->prev = (EditVert*) i++;
eve->tmp.l = (long) i++;
for(i=0,eed= emdm->em->edges.first; eed; i++,eed= eed->next)
func(userData, i, emdm->vertexCos[(int) eed->v1->prev], emdm->vertexCos[(int) eed->v2->prev]);
for (preveve=NULL, eve=emdm->em->verts.first; eve; preveve=eve, eve= eve->next)
eve->prev = preveve;
func(userData, i, emdm->vertexCos[(int) eed->v1->tmp.l], emdm->vertexCos[(int) eed->v2->tmp.l]);
} else {
for(i=0,eed= emdm->em->edges.first; eed; i++,eed= eed->next)
func(userData, i, eed->v1->co, eed->v2->co);
@@ -486,22 +484,19 @@ static void emDM_drawMappedEdges(DerivedMesh *dm, int (*setDrawOptions)(void *us
int i;
if (emdm->vertexCos) {
EditVert *eve, *preveve;
EditVert *eve;
for (i=0,eve=emdm->em->verts.first; eve; eve= eve->next)
eve->prev = (EditVert*) i++;
eve->tmp.l = (long) i++;
glBegin(GL_LINES);
for(i=0,eed= emdm->em->edges.first; eed; i++,eed= eed->next) {
if(!setDrawOptions || setDrawOptions(userData, i)) {
glVertex3fv(emdm->vertexCos[(int) eed->v1->prev]);
glVertex3fv(emdm->vertexCos[(int) eed->v2->prev]);
glVertex3fv(emdm->vertexCos[(int) eed->v1->tmp.l]);
glVertex3fv(emdm->vertexCos[(int) eed->v2->tmp.l]);
}
}
glEnd();
for (preveve=NULL, eve=emdm->em->verts.first; eve; preveve=eve, eve= eve->next)
eve->prev = preveve;
} else {
glBegin(GL_LINES);
for(i=0,eed= emdm->em->edges.first; eed; i++,eed= eed->next) {
@@ -524,24 +519,21 @@ static void emDM_drawMappedEdgesInterp(DerivedMesh *dm, int (*setDrawOptions)(vo
int i;
if (emdm->vertexCos) {
EditVert *eve, *preveve;
EditVert *eve;
for (i=0,eve=emdm->em->verts.first; eve; eve= eve->next)
eve->prev = (EditVert*) i++;
eve->tmp.l = (long) i++;
glBegin(GL_LINES);
for (i=0,eed= emdm->em->edges.first; eed; i++,eed= eed->next) {
if(!setDrawOptions || setDrawOptions(userData, i)) {
setDrawInterpOptions(userData, i, 0.0);
glVertex3fv(emdm->vertexCos[(int) eed->v1->prev]);
glVertex3fv(emdm->vertexCos[(int) eed->v1->tmp.l]);
setDrawInterpOptions(userData, i, 1.0);
glVertex3fv(emdm->vertexCos[(int) eed->v2->prev]);
glVertex3fv(emdm->vertexCos[(int) eed->v2->tmp.l]);
}
}
glEnd();
for (preveve=NULL, eve=emdm->em->verts.first; eve; preveve=eve, eve= eve->next)
eve->prev = preveve;
} else {
glBegin(GL_LINES);
for (i=0,eed= emdm->em->edges.first; eed; i++,eed= eed->next) {
@@ -590,10 +582,10 @@ static void emDM_drawUVEdges(DerivedMesh *dm)
static void emDM__calcFaceCent(EditFace *efa, float cent[3], float (*vertexCos)[3])
{
if (vertexCos) {
VECCOPY(cent, vertexCos[(int) efa->v1->prev]);
VecAddf(cent, cent, vertexCos[(int) efa->v2->prev]);
VecAddf(cent, cent, vertexCos[(int) efa->v3->prev]);
if (efa->v4) VecAddf(cent, cent, vertexCos[(int) efa->v4->prev]);
VECCOPY(cent, vertexCos[(int) efa->v1->tmp.l]);
VecAddf(cent, cent, vertexCos[(int) efa->v2->tmp.l]);
VecAddf(cent, cent, vertexCos[(int) efa->v3->tmp.l]);
if (efa->v4) VecAddf(cent, cent, vertexCos[(int) efa->v4->tmp.l]);
} else {
VECCOPY(cent, efa->v1->co);
VecAddf(cent, cent, efa->v2->co);
@@ -610,25 +602,20 @@ static void emDM__calcFaceCent(EditFace *efa, float cent[3], float (*vertexCos)[
static void emDM_foreachMappedFaceCenter(DerivedMesh *dm, void (*func)(void *userData, int index, float *co, float *no), void *userData)
{
EditMeshDerivedMesh *emdm= (EditMeshDerivedMesh*) dm;
EditVert *eve, *preveve;
EditVert *eve;
EditFace *efa;
float cent[3];
int i;
if (emdm->vertexCos) {
for (i=0,eve=emdm->em->verts.first; eve; eve= eve->next)
eve->prev = (EditVert*) i++;
eve->tmp.l = (long) i++;
}
for(i=0,efa= emdm->em->faces.first; efa; i++,efa= efa->next) {
emDM__calcFaceCent(efa, cent, emdm->vertexCos);
func(userData, i, cent, emdm->vertexCos?emdm->faceNos[i]:efa->n);
}
if (emdm->vertexCos) {
for (preveve=NULL, eve=emdm->em->verts.first; eve; preveve=eve, eve= eve->next)
eve->prev = preveve;
}
}
static void emDM_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *userData, int index, int *drawSmooth_r), void *userData, int useColors)
{
@@ -637,10 +624,10 @@ static void emDM_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *us
int i;
if (emdm->vertexCos) {
EditVert *eve, *preveve;
EditVert *eve;
for (i=0,eve=emdm->em->verts.first; eve; eve= eve->next)
eve->prev = (EditVert*) i++;
eve->tmp.l = (long) i++;
for (i=0,efa= emdm->em->faces.first; efa; i++,efa= efa->next) {
int drawSmooth = (efa->flag & ME_SMOOTH);
@@ -650,28 +637,25 @@ static void emDM_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *us
glBegin(efa->v4?GL_QUADS:GL_TRIANGLES);
if (!drawSmooth) {
glNormal3fv(emdm->faceNos[i]);
glVertex3fv(emdm->vertexCos[(int) efa->v1->prev]);
glVertex3fv(emdm->vertexCos[(int) efa->v2->prev]);
glVertex3fv(emdm->vertexCos[(int) efa->v3->prev]);
if(efa->v4) glVertex3fv(emdm->vertexCos[(int) efa->v4->prev]);
glVertex3fv(emdm->vertexCos[(int) efa->v1->tmp.l]);
glVertex3fv(emdm->vertexCos[(int) efa->v2->tmp.l]);
glVertex3fv(emdm->vertexCos[(int) efa->v3->tmp.l]);
if(efa->v4) glVertex3fv(emdm->vertexCos[(int) efa->v4->tmp.l]);
} else {
glNormal3fv(emdm->vertexNos[(int) efa->v1->prev]);
glVertex3fv(emdm->vertexCos[(int) efa->v1->prev]);
glNormal3fv(emdm->vertexNos[(int) efa->v2->prev]);
glVertex3fv(emdm->vertexCos[(int) efa->v2->prev]);
glNormal3fv(emdm->vertexNos[(int) efa->v3->prev]);
glVertex3fv(emdm->vertexCos[(int) efa->v3->prev]);
glNormal3fv(emdm->vertexNos[(int) efa->v1->tmp.l]);
glVertex3fv(emdm->vertexCos[(int) efa->v1->tmp.l]);
glNormal3fv(emdm->vertexNos[(int) efa->v2->tmp.l]);
glVertex3fv(emdm->vertexCos[(int) efa->v2->tmp.l]);
glNormal3fv(emdm->vertexNos[(int) efa->v3->tmp.l]);
glVertex3fv(emdm->vertexCos[(int) efa->v3->tmp.l]);
if(efa->v4) {
glNormal3fv(emdm->vertexNos[(int) efa->v4->prev]);
glVertex3fv(emdm->vertexCos[(int) efa->v4->prev]);
glNormal3fv(emdm->vertexNos[(int) efa->v4->tmp.l]);
glVertex3fv(emdm->vertexCos[(int) efa->v4->tmp.l]);
}
}
glEnd();
}
}
for (preveve=NULL, eve=emdm->em->verts.first; eve; preveve=eve, eve= eve->next)
eve->prev = preveve;
} else {
for (i=0,efa= emdm->em->faces.first; efa; i++,efa= efa->next) {
int drawSmooth = (efa->flag & ME_SMOOTH);
@@ -856,12 +840,12 @@ void emDM_copyEdgeArray(DerivedMesh *dm, MEdge *edge_r)
{
EditMesh *em = ((EditMeshDerivedMesh *)dm)->em;
EditEdge *ee = em->edges.first;
EditVert *ev, *prevev;
EditVert *ev;
int i;
/* store vert indices in the prev pointer (kind of hacky) */
/* store vertex indices in tmp union */
for(ev = em->verts.first, i = 0; ev; ev = ev->next, ++i)
ev->prev = (EditVert*) i++;
ev->tmp.l = (long) i++;
for( ; ee; ee = ee->next, ++edge_r) {
edge_r->crease = (unsigned char) (ee->crease*255.0f);
@@ -874,42 +858,34 @@ void emDM_copyEdgeArray(DerivedMesh *dm, MEdge *edge_r)
if (!ee->f2) edge_r->flag |= ME_LOOSEEDGE;
#endif
edge_r->v1 = (int)ee->v1->prev;
edge_r->v2 = (int)ee->v2->prev;
edge_r->v1 = (int)ee->v1->tmp.l;
edge_r->v2 = (int)ee->v2->tmp.l;
}
/* restore prev pointers */
for(prevev = NULL, ev = em->verts.first; ev; prevev = ev, ev = ev->next)
ev->prev = prevev;
}
void emDM_copyFaceArray(DerivedMesh *dm, MFace *face_r)
{
EditMesh *em = ((EditMeshDerivedMesh *)dm)->em;
EditFace *ef = em->faces.first;
EditVert *ev, *prevev;
EditVert *ev;
int i;
/* store vert indices in the prev pointer (kind of hacky) */
/* store vertexes indices in tmp union */
for(ev = em->verts.first, i = 0; ev; ev = ev->next, ++i)
ev->prev = (EditVert*) i++;
ev->tmp.l = (long) i++;
for( ; ef; ef = ef->next, ++face_r) {
face_r->mat_nr = ef->mat_nr;
face_r->flag = ef->flag;
face_r->v1 = (int)ef->v1->prev;
face_r->v2 = (int)ef->v2->prev;
face_r->v3 = (int)ef->v3->prev;
if(ef->v4) face_r->v4 = (int)ef->v4->prev;
face_r->v1 = (int)ef->v1->tmp.l;
face_r->v2 = (int)ef->v2->tmp.l;
face_r->v3 = (int)ef->v3->tmp.l;
if(ef->v4) face_r->v4 = (int)ef->v4->tmp.l;
else face_r->v4 = 0;
test_index_face(face_r, NULL, 0, ef->v4?4:3);
}
/* restore prev pointers */
for(prevev = NULL, ev = em->verts.first; ev; prevev = ev, ev = ev->next)
ev->prev = prevev;
}
static void emDM_release(DerivedMesh *dm)
@@ -975,36 +951,36 @@ static DerivedMesh *getEditMeshDerivedMesh(EditMesh *em, Object *ob,
}
if(vertexCos) {
EditVert *eve, *preveve;
EditVert *eve;
EditFace *efa;
int totface = BLI_countlist(&em->faces);
int i;
for (i=0,eve=em->verts.first; eve; eve= eve->next)
eve->prev = (EditVert*) i++;
eve->tmp.l = (long) i++;
emdm->vertexNos = MEM_callocN(sizeof(*emdm->vertexNos)*i, "emdm_vno");
emdm->faceNos = MEM_mallocN(sizeof(*emdm->faceNos)*totface, "emdm_vno");
for(i=0, efa= em->faces.first; efa; i++, efa=efa->next) {
float *v1 = vertexCos[(int) efa->v1->prev];
float *v2 = vertexCos[(int) efa->v2->prev];
float *v3 = vertexCos[(int) efa->v3->prev];
float *v1 = vertexCos[(int) efa->v1->tmp.l];
float *v2 = vertexCos[(int) efa->v2->tmp.l];
float *v3 = vertexCos[(int) efa->v3->tmp.l];
float *no = emdm->faceNos[i];
if(efa->v4) {
float *v4 = vertexCos[(int) efa->v3->prev];
float *v4 = vertexCos[(int) efa->v3->tmp.l];
CalcNormFloat4(v1, v2, v3, v4, no);
VecAddf(emdm->vertexNos[(int) efa->v4->prev], emdm->vertexNos[(int) efa->v4->prev], no);
VecAddf(emdm->vertexNos[(int) efa->v4->tmp.l], emdm->vertexNos[(int) efa->v4->tmp.l], no);
}
else {
CalcNormFloat(v1, v2, v3, no);
}
VecAddf(emdm->vertexNos[(int) efa->v1->prev], emdm->vertexNos[(int) efa->v1->prev], no);
VecAddf(emdm->vertexNos[(int) efa->v2->prev], emdm->vertexNos[(int) efa->v2->prev], no);
VecAddf(emdm->vertexNos[(int) efa->v3->prev], emdm->vertexNos[(int) efa->v3->prev], no);
VecAddf(emdm->vertexNos[(int) efa->v1->tmp.l], emdm->vertexNos[(int) efa->v1->tmp.l], no);
VecAddf(emdm->vertexNos[(int) efa->v2->tmp.l], emdm->vertexNos[(int) efa->v2->tmp.l], no);
VecAddf(emdm->vertexNos[(int) efa->v3->tmp.l], emdm->vertexNos[(int) efa->v3->tmp.l], no);
}
for(i=0, eve= em->verts.first; eve; i++, eve=eve->next) {
@@ -1016,9 +992,6 @@ static DerivedMesh *getEditMeshDerivedMesh(EditMesh *em, Object *ob,
Normalise(no);
}
}
for (preveve=NULL, eve=emdm->em->verts.first; eve; preveve=eve, eve= eve->next)
eve->prev = preveve;
}
return (DerivedMesh*) emdm;
@@ -1183,7 +1156,7 @@ void vDM_copyFaceArray(DerivedMesh *dm, MFace *face_r)
VerseVert *vvert = ((VDerivedMesh*)dm)->vertex_layer->dl.lb.first;
int i;
/* store vert indices in the prev pointer (kind of hacky) */
/* store vertexes indices in tmp union */
for(i = 0; vvert; vvert = vvert->next, ++i)
vvert->tmp.index = i;