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
path: root/source
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2004-03-28 12:46:35 +0400
committerDaniel Dunbar <daniel@zuster.org>2004-03-28 12:46:35 +0400
commit9206a1eba69136c928dc72144862d31bb00e6b11 (patch)
tree09cc61d9068e587e338780731590cd9ee9dd6ff4 /source
parentd29d7030b64895574a1fdb4edd9764e5ce89f013 (diff)
- replaced G.{edve,eded,edvl} with G.editMesh, atm just a structure to
hold the three lists, nothing major, but gives a place to hang data off of and a single "mesh" structure to pass around for editing functions.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/BKE_displist.h3
-rw-r--r--source/blender/blenkernel/BKE_global.h5
-rw-r--r--source/blender/blenkernel/BKE_subsurf.h8
-rw-r--r--source/blender/blenkernel/intern/blender.c7
-rw-r--r--source/blender/blenkernel/intern/displist.c18
-rw-r--r--source/blender/blenkernel/intern/exotic.c5
-rw-r--r--source/blender/blenkernel/intern/object.c3
-rw-r--r--source/blender/blenkernel/intern/subsurf.c17
-rw-r--r--source/blender/blenlib/BLI_editVert.h5
-rw-r--r--source/blender/blenlib/intern/scanfill.c7
-rw-r--r--source/blender/src/buttons_object.c7
-rw-r--r--source/blender/src/drawobject.c31
-rw-r--r--source/blender/src/drawview.c5
-rw-r--r--source/blender/src/edit.c5
-rw-r--r--source/blender/src/editarmature.c6
-rw-r--r--source/blender/src/editdeform.c12
-rw-r--r--source/blender/src/editmesh.c637
-rw-r--r--source/blender/src/editobject.c17
-rw-r--r--source/blender/src/editview.c9
19 files changed, 452 insertions, 355 deletions
diff --git a/source/blender/blenkernel/BKE_displist.h b/source/blender/blenkernel/BKE_displist.h
index c5aae69fd2c..7b487bfca1e 100644
--- a/source/blender/blenkernel/BKE_displist.h
+++ b/source/blender/blenkernel/BKE_displist.h
@@ -57,6 +57,7 @@ struct Material;
struct Bone;
struct Mesh;
struct TFace;
+struct EditMesh;
typedef struct DispListMesh DispListMesh;
struct DispListMesh {
@@ -73,7 +74,7 @@ void displistmesh_calc_vert_normals(DispListMesh *dlm);
void displistmesh_to_mesh(DispListMesh *dlm, struct Mesh *me);
-DispListMesh *displistmesh_from_editmesh(struct ListBase *verts, struct ListBase *edges, struct ListBase *faces);
+DispListMesh *displistmesh_from_editmesh(struct EditMesh *em);
DispListMesh *displistmesh_from_mesh(struct Mesh *mesh, float *extverts);
/*
diff --git a/source/blender/blenkernel/BKE_global.h b/source/blender/blenkernel/BKE_global.h
index c8564e44cdc..66b103d571a 100644
--- a/source/blender/blenkernel/BKE_global.h
+++ b/source/blender/blenkernel/BKE_global.h
@@ -61,6 +61,7 @@ struct bScreen;
struct Object;
struct bSoundListener;
struct BMF_Font;
+struct EditMesh;
#define UNDO_MAX 64
#define UNDO_EDIT_MAX 64
@@ -110,9 +111,7 @@ typedef struct Global {
int f;
/* Editmode lists */
- struct ListBase edve;
- struct ListBase eded;
- struct ListBase edvl;
+ struct EditMesh *editMesh;
float textcurs[4][2];
diff --git a/source/blender/blenkernel/BKE_subsurf.h b/source/blender/blenkernel/BKE_subsurf.h
index 837ccf01f22..890fd92c42a 100644
--- a/source/blender/blenkernel/BKE_subsurf.h
+++ b/source/blender/blenkernel/BKE_subsurf.h
@@ -35,12 +35,10 @@ struct Mesh;
struct Object;
struct Displist;
struct DispListMesh;
-struct ListBase;
+struct EditMesh;
-struct DispListMesh *subsurf_make_dispListMesh_from_editmesh(struct ListBase *verts, struct ListBase *edges,
- struct ListBase *faces, int subdivLevels, int flags, short type);
-struct DispListMesh *subsurf_make_dispListMesh_from_mesh(struct Mesh *me,
- float *extverts, int subdivLevels, int flags);
+struct DispListMesh *subsurf_make_dispListMesh_from_editmesh(struct EditMesh *em, int subdivLevels, int flags, short type);
+struct DispListMesh *subsurf_make_dispListMesh_from_mesh(struct Mesh *me, float *extverts, int subdivLevels, int flags);
void subsurf_calculate_limit_positions(Mesh *me, float (*positions_r)[3]);
diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c
index 822d37b271a..9bbe9d3726f 100644
--- a/source/blender/blenkernel/intern/blender.c
+++ b/source/blender/blenkernel/intern/blender.c
@@ -65,6 +65,7 @@
#include "BLI_winstuff.h"
#endif
+#include "DNA_mesh_types.h"
#include "DNA_screen_types.h"
#include "BKE_library.h"
@@ -78,6 +79,7 @@
#include "BKE_curve.h"
#include "BKE_font.h"
+#include "BLI_editVert.h"
#include "BKE_bad_level_calls.h" /* for BPY_do_pyscript */
#include "BLO_readfile.h" /* for BLO_read_file */
@@ -188,10 +190,15 @@ void duplicatelist(ListBase *list1, ListBase *list2) /* copy from 2 to 1 */
}
}
+static EditMesh theEditMesh;
+
void initglobals(void)
{
memset(&G, 0, sizeof(Global));
+ G.editMesh = &theEditMesh;
+ memset(G.editMesh, 0, sizeof(G.editMesh));
+
U.savetime= 1;
G.animspeed= 4;
diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c
index 3159db7b5be..cfed127a6e5 100644
--- a/source/blender/blenkernel/intern/displist.c
+++ b/source/blender/blenkernel/intern/displist.c
@@ -107,7 +107,7 @@ struct _FastLamp {
static FastLamp *fastlamplist= NULL;
static float fviewmat[4][4];
-DispListMesh *displistmesh_from_editmesh(ListBase *verts, ListBase *edges, ListBase *faces) {
+DispListMesh *displistmesh_from_editmesh(EditMesh *em) {
DispListMesh *dlm= MEM_callocN(sizeof(*dlm),"dlm");
int i;
EditVert *eve, *evePrev;
@@ -115,22 +115,22 @@ DispListMesh *displistmesh_from_editmesh(ListBase *verts, ListBase *edges, ListB
EditVlak *evl;
dlm->flag= 0;
- dlm->totvert= BLI_countlist(verts);
- dlm->totface= BLI_countlist(edges)+BLI_countlist(faces);
+ dlm->totvert= BLI_countlist(&em->verts);
+ dlm->totface= BLI_countlist(&em->edges)+BLI_countlist(&em->faces);
dlm->mvert= MEM_callocN(sizeof(*dlm->mface)*dlm->totvert, "dlm->mvert");
dlm->mcol= NULL;
dlm->tface= NULL;
dlm->mface= MEM_mallocN(sizeof(*dlm->mface)*dlm->totface, "dlm->mface");
i=0;
- for (eve= verts->first; eve; eve= eve->next, i++) {
+ for (eve= em->verts.first; eve; eve= eve->next, i++) {
MVert *mvNew= &dlm->mvert[i];
VECCOPY(mvNew->co, eve->co);
eve->prev= (void*) i; /* hack to fetch indices */
}
i=0;
- for (evl= faces->first; evl; evl= evl->next, i++) {
+ for (evl= em->faces.first; evl; evl= evl->next, i++) {
MFace *mfNew= &dlm->mface[i];
mfNew->v1= (int) evl->v1->prev;
@@ -147,7 +147,7 @@ DispListMesh *displistmesh_from_editmesh(ListBase *verts, ListBase *edges, ListB
mfNew->v2^= mfNew->v4^= mfNew->v2^= mfNew->v4;
}
}
- for (eed= edges->first; eed; eed= eed->next, i++) {
+ for (eed= em->edges.first; eed; eed= eed->next, i++) {
MFace *mfNew= &dlm->mface[i];
mfNew->v1= (int) eed->v1->prev;
@@ -161,7 +161,7 @@ DispListMesh *displistmesh_from_editmesh(ListBase *verts, ListBase *edges, ListB
}
/* restore prev links */
- for (evePrev=NULL, eve= verts->first; eve; evePrev=eve, eve= eve->next)
+ for (evePrev=NULL, eve= em->verts.first; eve; evePrev=eve, eve= eve->next)
eve->prev= evePrev;
displistmesh_calc_vert_normals(dlm);
@@ -1621,6 +1621,7 @@ void set_displist_onlyzero(int val)
void makeDispList(Object *ob)
{
+ EditMesh *em = G.editMesh;
Mesh *me;
Nurb *nu;
Curve *cu;
@@ -1651,8 +1652,7 @@ void makeDispList(Object *ob)
DispListMesh *dlm;
if (ob==G.obedit) {
- dlm= subsurf_make_dispListMesh_from_editmesh(&G.edve, &G.eded, &G.edvl,
- me->subdiv, me->flag, me->subsurftype);
+ dlm= subsurf_make_dispListMesh_from_editmesh(em, me->subdiv, me->flag, me->subsurftype);
} else {
DispList *dlVerts= find_displist(&ob->disp, DL_VERTS);
dlm= subsurf_make_dispListMesh_from_mesh(me, dlVerts?dlVerts->verts:NULL,
diff --git a/source/blender/blenkernel/intern/exotic.c b/source/blender/blenkernel/intern/exotic.c
index e3297509fc5..fad1eeb93a6 100644
--- a/source/blender/blenkernel/intern/exotic.c
+++ b/source/blender/blenkernel/intern/exotic.c
@@ -2121,6 +2121,7 @@ char videosc_dir[160]= {0, 0};
static void write_videoscape_mesh(Object *ob, char *str)
{
+ EditMesh *em = G.editMesh;
Mesh *me;
Material *ma;
MVert *mvert;
@@ -2169,7 +2170,7 @@ static void write_videoscape_mesh(Object *ob, char *str)
fprintf(fp, "%d\n", G.totvert);
tot= 0;
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
VECCOPY(co, eve->co);
Mat4MulVecfl(ob->obmat, co);
@@ -2178,7 +2179,7 @@ static void write_videoscape_mesh(Object *ob, char *str)
tot++;
eve= eve->next;
}
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
if(evl->v4==0) {
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 9f3f63ba478..ffc8dcd4362 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -1024,6 +1024,7 @@ void ob_parlimb(Object *ob, Object *par, float mat[][4])
void give_parvert(Object *par, int nr, float *vec)
{
+ EditMesh *em = G.editMesh;
Mesh *me;
EditVert *eve;
/* extern ListBase editNurb; already in bad lev calls */
@@ -1042,7 +1043,7 @@ void give_parvert(Object *par, int nr, float *vec)
if(nr >= G.totvert) nr= 0;
count= 0;
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(count==nr) {
memcpy(vec, eve->co, 12);
diff --git a/source/blender/blenkernel/intern/subsurf.c b/source/blender/blenkernel/intern/subsurf.c
index d9f4d357989..759b458ba63 100644
--- a/source/blender/blenkernel/intern/subsurf.c
+++ b/source/blender/blenkernel/intern/subsurf.c
@@ -396,7 +396,7 @@ static HyperMesh *hypermesh_from_mesh(Mesh *me, float *extverts) {
return hme;
}
-static HyperMesh *hypermesh_from_editmesh(EditVert *everts, EditEdge *eedges, EditVlak *efaces) {
+static HyperMesh *hypermesh_from_editmesh(EditMesh *em) {
HyperMesh *hme= hypermesh_new();
EditVert *ev, *prevev;
EditEdge *ee;
@@ -404,13 +404,13 @@ static HyperMesh *hypermesh_from_editmesh(EditVert *everts, EditEdge *eedges, Ed
/* we only add vertices with edges, 'f1' is a free flag */
/* added: check for hide flag in vertices */
- for (ev= everts; ev; ev= ev->next) ev->f1= 1;
+ for (ev= em->verts.first; ev; ev= ev->next) ev->f1= 1;
/* hack, tuck the new hypervert pointer into
* the ev->prev link so we can find it easy,
* then restore real prev links later.
*/
- for (ee= eedges; ee; ee= ee->next) {
+ for (ee= em->edges.first; ee; ee= ee->next) {
if(ee->v1->h==0 && ee->v2->h==0) {
if(ee->v1->f1) {
ee->v1->prev= (EditVert*) hypermesh_add_vert(hme, ee->v1->co, ee->v1->co);
@@ -424,7 +424,7 @@ static HyperMesh *hypermesh_from_editmesh(EditVert *everts, EditEdge *eedges, Ed
hypermesh_add_edge(hme, (HyperVert*) ee->v1->prev, (HyperVert*) ee->v2->prev, 1);
}
}
- for (ef= efaces; ef; ef= ef->next) {
+ for (ef= em->faces.first; ef; ef= ef->next) {
if(ef->v1->h || ef->v2->h || ef->v3->h);
else if(ef->v4 && ef->v4->h);
else {
@@ -444,7 +444,7 @@ static HyperMesh *hypermesh_from_editmesh(EditVert *everts, EditEdge *eedges, Ed
}
/* see hack above, restore the prev links */
- for (prevev= NULL, ev= everts; ev; prevev= ev, ev= ev->next)
+ for (prevev= NULL, ev= em->verts.first; ev; prevev= ev, ev= ev->next)
ev->prev= prevev;
return hme;
@@ -944,12 +944,11 @@ static DispListMesh *subsurf_subdivide_to_displistmesh(HyperMesh *hme, short sub
return dlm;
}
-DispListMesh *subsurf_make_dispListMesh_from_editmesh(ListBase *verts, ListBase *edges,
- ListBase *faces, int subdivLevels, int flags, short type) {
+DispListMesh *subsurf_make_dispListMesh_from_editmesh(EditMesh *em, int subdivLevels, int flags, short type) {
if (subdivLevels<1) {
- return displistmesh_from_editmesh(verts, edges, faces);
+ return displistmesh_from_editmesh(em);
} else {
- HyperMesh *hme= hypermesh_from_editmesh(verts->first, edges->first, faces->first);
+ HyperMesh *hme= hypermesh_from_editmesh(em);
return subsurf_subdivide_to_displistmesh(hme, subdivLevels, flags, type);
}
diff --git a/source/blender/blenlib/BLI_editVert.h b/source/blender/blenlib/BLI_editVert.h
index cae08f8041f..a8e2123c6df 100644
--- a/source/blender/blenlib/BLI_editVert.h
+++ b/source/blender/blenlib/BLI_editVert.h
@@ -73,5 +73,10 @@ typedef struct EditVlak
unsigned char f, f1;
} EditVlak;
+typedef struct EditMesh
+{
+ ListBase verts, edges, faces;
+} EditMesh;
+
#endif
diff --git a/source/blender/blenlib/intern/scanfill.c b/source/blender/blenlib/intern/scanfill.c
index ea51cebf9fe..b11f1eb302f 100644
--- a/source/blender/blenlib/intern/scanfill.c
+++ b/source/blender/blenlib/intern/scanfill.c
@@ -1147,6 +1147,7 @@ int BLI_edgefill(int mode) /* THE MAIN FILL ROUTINE */
void fill_mesh(void)
{
+ EditMesh *em = G.editMesh;
EditVert *eve,*v1;
EditEdge *eed,*e1,*nexted;
EditVlak *evl,*nextvl;
@@ -1157,7 +1158,7 @@ void fill_mesh(void)
waitcursor(1);
/ * alle selected vertices kopieeren * /
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->f & 1) {
v1= addfillvert(eve->co);
@@ -1168,7 +1169,7 @@ void fill_mesh(void)
eve= eve->next;
}
/ * alle selected edges kopieeren * /
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
if( (eed->v1->f & 1) && (eed->v2->f & 1) ) {
e1= addfilledge(eed->v1->vn, eed->v2->vn);
@@ -1180,7 +1181,7 @@ void fill_mesh(void)
/ * van alle selected vlakken vertices en edges verwijderen om dubbels te voorkomen * /
/ * alle edges tellen punten op, vlakken trekken af,
edges met vertices ->h<2 verwijderen * /
- evl= G.edvl.first;
+ evl= em->faces.first;
ok= 0;
while(evl) {
nextvl= evl->next;
diff --git a/source/blender/src/buttons_object.c b/source/blender/src/buttons_object.c
index 0155371c44c..7a50003af96 100644
--- a/source/blender/src/buttons_object.c
+++ b/source/blender/src/buttons_object.c
@@ -932,6 +932,7 @@ extern ListBase editNurb;
void do_common_editbuts(unsigned short event) // old name, is a mix of object and editing events....
{
+ EditMesh *em = G.editMesh;
EditVlak *evl;
Base *base;
Object *ob;
@@ -948,7 +949,7 @@ void do_common_editbuts(unsigned short event) // old name, is a mix of object an
case B_MATWICH:
if(G.obedit && G.obedit->actcol>0) {
if(G.obedit->type == OB_MESH) {
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
if( vlakselectedAND(evl, 1) ) {
if(index== -1) index= evl->mat_nr;
@@ -993,7 +994,7 @@ void do_common_editbuts(unsigned short event) // old name, is a mix of object an
if(G.obedit && G.obedit->actcol>0) {
if(G.obedit->type == OB_MESH) {
undo_push_mesh("Assign material index");
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
if( vlakselectedAND(evl, 1) )
evl->mat_nr= G.obedit->actcol-1;
@@ -1105,7 +1106,7 @@ void do_common_editbuts(unsigned short event) // old name, is a mix of object an
case B_SETSOLID:
if(G.obedit) {
if(G.obedit->type == OB_MESH) {
- evl= G.edvl.first;
+ evl= em->faces.first;
if (event == B_SETSMOOTH) undo_push_mesh("Set Smooth");
else if (event==B_SETSOLID) undo_push_mesh("Set Solid");
while(evl) {
diff --git a/source/blender/src/drawobject.c b/source/blender/src/drawobject.c
index ba813a469ae..35029a99c1e 100644
--- a/source/blender/src/drawobject.c
+++ b/source/blender/src/drawobject.c
@@ -935,16 +935,17 @@ static void drawlattice(Object *ob)
/* window coord, assuming all matrices are set OK */
void calc_meshverts(void)
{
+ EditMesh *em = G.editMesh;
EditVert *eve;
float mat[4][4];
- if(G.edve.first==0) return;
- eve= G.edve.first;
+ if(em->verts.first==0) return;
+ eve= em->verts.first;
MTC_Mat4SwapMat4(G.vd->persmat, mat);
mygetsingmatrix(G.vd->persmat);
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->h==0) {
project_short(eve->co, &(eve->xs));
@@ -970,6 +971,7 @@ void calc_meshverts_ext(void)
/* window coord for current window, sets matrices temporal, sets (eve->f & 2) when not visible */
void calc_meshverts_ext_f2(void)
{
+ EditMesh *em = G.editMesh;
EditVert *eve;
float mat[4][4];
@@ -978,13 +980,13 @@ void calc_meshverts_ext_f2(void)
persp(PERSP_VIEW);
mymultmatrix(G.obedit->obmat);
- if(G.edve.first==0) return;
- eve= G.edve.first;
+ if(em->verts.first==0) return;
+ eve= em->verts.first;
MTC_Mat4SwapMat4(G.vd->persmat, mat);
mygetsingmatrix(G.vd->persmat);
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
eve->f &= ~2;
if(eve->h==0) {
@@ -1052,6 +1054,7 @@ void calc_nurbverts_ext(void)
void tekenvertices(short sel)
{
+ EditMesh *em = G.editMesh;
EditVert *eve;
float size;
char col[3];
@@ -1072,7 +1075,7 @@ void tekenvertices(short sel)
glEnable(GL_BLEND);
glBegin(GL_POINTS);
- for(eve= G.edve.first; eve; eve= eve->next) {
+ for(eve= em->verts.first; eve; eve= eve->next) {
if(eve->h==0 && (eve->f & 1)==sel ) glVertex3fv(eve->co);
}
glEnd();
@@ -1085,7 +1088,7 @@ void tekenvertices(short sel)
glColor3ub(col[0], col[1], col[2]);
glBegin(GL_POINTS);
- for(eve= G.edve.first; eve; eve= eve->next) {
+ for(eve= em->verts.first; eve; eve= eve->next) {
if(eve->h==0 && (eve->f & 1)==sel ) glVertex3fv(eve->co);
}
glEnd();
@@ -1695,6 +1698,7 @@ static void drawDispListshaded(ListBase *lb, Object *ob)
static void drawmeshsolid(Object *ob, float *nors)
{
+ EditMesh *em = G.editMesh;
Mesh *me;
DispList *dl;
MVert *mvert;
@@ -1730,7 +1734,7 @@ static void drawmeshsolid(Object *ob, float *nors)
if(ob==G.obedit || (G.obedit && ob->data==G.obedit->data)) {
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
if(evl->v1->h==0 && evl->v2->h==0 && evl->v3->h==0) {
@@ -2342,6 +2346,7 @@ static void draw_static_particle_system(Object *ob, PartEff *paf)
static void drawmeshwire(Object *ob)
{
+ EditMesh *em = G.editMesh;
extern float editbutsize; /* buttons.c */
Mesh *me;
MVert *mvert;
@@ -2369,7 +2374,7 @@ static void drawmeshwire(Object *ob)
glEnable(GL_BLEND);
glDepthMask(0); // disable write in zbuffer, needed for nice transp
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
if(evl->v1->h==0 && evl->v2->h==0 && evl->v3->h==0) {
@@ -2432,7 +2437,7 @@ static void drawmeshwire(Object *ob)
BIF_GetThemeColor3ubv(TH_EDGE_SELECT, col);
glShadeModel(GL_SMOOTH);
- eed= G.eded.first;
+ eed= em->edges.first;
glBegin(GL_LINES);
while(eed) {
if(eed->h==0) {
@@ -2447,7 +2452,7 @@ static void drawmeshwire(Object *ob)
glShadeModel(GL_FLAT);
}
else if(handles==0) {
- eed= G.eded.first;
+ eed= em->edges.first;
glBegin(GL_LINES);
while(eed) {
if(eed->h==0) {
@@ -2470,7 +2475,7 @@ static void drawmeshwire(Object *ob)
glBegin(GL_LINES);
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
if(evl->v1->h==0 && evl->v2->h==0 && evl->v3->h==0) {
if(evl->v4) CalcCent4f(fvec, evl->v1->co, evl->v2->co, evl->v3->co, evl->v4->co);
diff --git a/source/blender/src/drawview.c b/source/blender/src/drawview.c
index 13862bda2c5..90c56c52a12 100644
--- a/source/blender/src/drawview.c
+++ b/source/blender/src/drawview.c
@@ -1065,6 +1065,7 @@ static int ve_median_tot=0;
/* is used for both read and write... */
static void v3d_editvertex_buts(uiBlock *block, Object *ob, float lim)
{
+ EditMesh *em = G.editMesh;
EditVert *eve;
float median[4];
int tot, totw;
@@ -1073,7 +1074,7 @@ static void v3d_editvertex_buts(uiBlock *block, Object *ob, float lim)
tot= totw= 0;
if(ob->type==OB_MESH) {
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->f & 1) {
tot++;
@@ -1164,7 +1165,7 @@ static void v3d_editvertex_buts(uiBlock *block, Object *ob, float lim)
median[3]= ve_median[3]-median[3];
if(ob->type==OB_MESH) {
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->f & 1) {
VecAddf(eve->co, eve->co, median);
diff --git a/source/blender/src/edit.c b/source/blender/src/edit.c
index 30d1f85c121..dda1837235e 100644
--- a/source/blender/src/edit.c
+++ b/source/blender/src/edit.c
@@ -528,13 +528,14 @@ void countall()
if(G.obedit) {
if(G.obedit->type==OB_MESH) {
- eve= G.edve.first;
+ EditMesh *em = G.editMesh;
+ eve= em->verts.first;
while(eve) {
G.totvert++;
if(eve->f & 1) G.totvertsel++;
eve= eve->next;
}
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
G.totface++;
if(evl->v1->f & 1) {
diff --git a/source/blender/src/editarmature.c b/source/blender/src/editarmature.c
index 00b72acb0e4..24c44e0c6c6 100644
--- a/source/blender/src/editarmature.c
+++ b/source/blender/src/editarmature.c
@@ -1115,12 +1115,13 @@ static void make_boneList(ListBase* list, ListBase *bones, EditBone *parent)
#if 0
static EditVert* add_armatureVert (float *loc)
{
+ EditMesh *em = G.editMesh;
EditVert* vert=NULL;
vert = MEM_callocN (sizeof (EditVert), "armaturevert");
if (vert){
VECCOPY (vert->co, loc);
- BLI_addtail (&G.edve,vert);
+ BLI_addtail (&em->verts,vert);
}
return vert;
@@ -1129,9 +1130,10 @@ static EditVert* add_armatureVert (float *loc)
static EditVert* get_armatureVert (float *loc)
{
+ EditMesh *em = G.editMesh;
EditVert* vert;
- for (vert=G.edve.first;vert;vert=vert->next){
+ for (vert=em->verts.first;vert;vert=vert->next){
if ((vert->co[0]==loc[0])&&(vert->co[1]==loc[1])&&(vert->co[2]==loc[2])){
return (vert);
}
diff --git a/source/blender/src/editdeform.c b/source/blender/src/editdeform.c
index d5882718d48..9d32ed8c93b 100644
--- a/source/blender/src/editdeform.c
+++ b/source/blender/src/editdeform.c
@@ -57,6 +57,7 @@
void sel_verts_defgroup (int select)
{
+ EditMesh *em = G.editMesh;
EditVert *eve;
Object *ob;
int i;
@@ -68,7 +69,7 @@ void sel_verts_defgroup (int select)
switch (ob->type){
case OB_MESH:
- for (eve=G.edve.first; eve; eve=eve->next){
+ for (eve=em->verts.first; eve; eve=eve->next){
if (eve->totweight){
for (i=0; i<eve->totweight; i++){
if (eve->dw[i].def_nr == (ob->actdef-1)){
@@ -148,6 +149,7 @@ bDeformGroup *add_defgroup_name (Object *ob, char *name)
void del_defgroup (Object *ob)
{
+ EditMesh *em = G.editMesh;
bDeformGroup *defgroup;
EditVert *eve;
int i;
@@ -167,7 +169,7 @@ void del_defgroup (Object *ob)
remove_verts_defgroup(1);
/* Make sure that any verts with higher indices are adjusted accordingly */
- for (eve=G.edve.first; eve; eve=eve->next){
+ for (eve=em->verts.first; eve; eve=eve->next){
for (i=0; i<eve->totweight; i++){
if (eve->dw[i].def_nr > (ob->actdef-1))
eve->dw[i].def_nr--;
@@ -412,6 +414,7 @@ void add_vert_to_defgroup (Object *ob, bDeformGroup *dg, int vertnum,
void assign_verts_defgroup (void)
/* Only available in editmode */
{
+ EditMesh *em = G.editMesh;
Object *ob;
EditVert *eve;
bDeformGroup *dg, *eg;
@@ -433,7 +436,7 @@ void assign_verts_defgroup (void)
switch (ob->type){
case OB_MESH:
/* Go through the list of editverts and assign them */
- for (eve=G.edve.first; eve; eve=eve->next){
+ for (eve=em->verts.first; eve; eve=eve->next){
if (eve->f & 1){
done=0;
/* See if this vert already has a reference to this group */
@@ -505,6 +508,7 @@ void remove_vert_defgroup (Object *ob, bDeformGroup *dg, int vertnum)
void remove_verts_defgroup (int allverts)
/* Only available in editmode */
{
+ EditMesh *em = G.editMesh;
Object *ob;
EditVert *eve;
MDeformWeight *newdw;
@@ -524,7 +528,7 @@ void remove_verts_defgroup (int allverts)
switch (ob->type){
case OB_MESH:
- for (eve=G.edve.first; eve; eve=eve->next){
+ for (eve=em->verts.first; eve; eve=eve->next){
if (eve->dw && ((eve->f & 1) || allverts)){
for (i=0; i<eve->totweight; i++){
/* Find group */
diff --git a/source/blender/src/editmesh.c b/source/blender/src/editmesh.c
index f82eaeeab28..e9a7778a055 100644
--- a/source/blender/src/editmesh.c
+++ b/source/blender/src/editmesh.c
@@ -261,11 +261,12 @@ static void check_hashedge(void)
EditVert *addvertlist(float *vec)
{
+ EditMesh *em = G.editMesh;
EditVert *eve;
static unsigned char hashnr= 0;
eve= calloc(sizeof(EditVert),1);
- BLI_addtail(&G.edve, eve);
+ BLI_addtail(&em->verts, eve);
if(vec) VECCOPY(eve->co, vec);
@@ -379,6 +380,7 @@ void free_hashedgetab(void)
EditEdge *addedgelist(EditVert *v1, EditVert *v2)
{
+ EditMesh *em = G.editMesh;
EditVert *v3;
EditEdge *eed;
int swap= 0;
@@ -402,7 +404,7 @@ EditEdge *addedgelist(EditVert *v1, EditVert *v2)
eed= (EditEdge *)calloc(sizeof(EditEdge), 1);
eed->v1= v1;
eed->v2= v2;
- BLI_addtail(&G.eded, eed);
+ BLI_addtail(&em->edges, eed);
eed->dir= swap;
insert_hashedge(eed);
}
@@ -412,8 +414,9 @@ EditEdge *addedgelist(EditVert *v1, EditVert *v2)
void remedge(EditEdge *eed)
{
+ EditMesh *em = G.editMesh;
- BLI_remlink(&G.eded, eed);
+ BLI_remlink(&em->edges, eed);
remove_hashedge(eed);
}
@@ -438,6 +441,7 @@ static void freevlaklist(ListBase *lb)
EditVlak *addvlaklist(EditVert *v1, EditVert *v2, EditVert *v3, EditVert *v4, EditVlak *example)
{
+ EditMesh *em = G.editMesh;
EditVlak *evl;
EditEdge *e1, *e2=0, *e3=0, *e4=0;
@@ -476,7 +480,7 @@ EditVlak *addvlaklist(EditVert *v1, EditVert *v2, EditVert *v3, EditVert *v4, Ed
evl->tf.col[0]= evl->tf.col[1]= evl->tf.col[2]= evl->tf.col[3]= vpaint_get_current_col();
}
- BLI_addtail(&G.edvl, evl);
+ BLI_addtail(&em->faces, evl);
if(evl->v4) CalcNormFloat4(v1->co, v2->co, v3->co, v4->co, evl->n);
else CalcNormFloat(v1->co, v2->co, v3->co, evl->n);
@@ -528,7 +532,7 @@ static int dubbelvlak(EditVlak *evltest)
EditVlak *evl;
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
if(evl!=evltest) {
if(comparevlak(evltest, evl)) return 1;
@@ -541,6 +545,7 @@ static int dubbelvlak(EditVlak *evltest)
static int exist_vlak(EditVert *v1, EditVert *v2, EditVert *v3, EditVert *v4)
{
+ EditMesh *em = G.editMesh;
EditVlak *evl, evltest;
evltest.v1= v1;
@@ -548,7 +553,7 @@ static int exist_vlak(EditVert *v1, EditVert *v2, EditVert *v3, EditVert *v4)
evltest.v3= v3;
evltest.v4= v4;
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
if(comparevlak(&evltest, evl)) return 1;
evl= evl->next;
@@ -584,9 +589,10 @@ int vlakselectedAND(EditVlak *evl, int flag)
void recalc_editnormals(void)
{
+ EditMesh *em = G.editMesh;
EditVlak *evl;
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
if(evl->v4) CalcNormFloat4(evl->v1->co, evl->v2->co, evl->v3->co, evl->v4->co, evl->n);
else CalcNormFloat(evl->v1->co, evl->v2->co, evl->v3->co, evl->n);
@@ -619,9 +625,10 @@ static void flipvlak(EditVlak *evl)
void flip_editnormals(void)
{
+ EditMesh *em = G.editMesh;
EditVlak *evl;
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
if( vlakselectedAND(evl, 1) ) {
flipvlak(evl);
@@ -658,6 +665,7 @@ static void edge_normal_compare(EditEdge *eed, EditVlak *evl1)
static void edge_drawflags(void)
{
+ EditMesh *em = G.editMesh;
EditVert *eve;
EditEdge *eed, *e1, *e2, *e3, *e4;
EditVlak *evl;
@@ -674,19 +682,19 @@ static void edge_drawflags(void)
recalc_editnormals();
/* init */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
eve->f1= 1; /* during test it's set at zero */
eve= eve->next;
}
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
eed->f= eed->f1= 0;
eed->vn= 0;
eed= eed->next;
}
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
e1= evl->e1;
e2= evl->e2;
@@ -706,7 +714,7 @@ static void edge_drawflags(void)
}
if(G.f & G_ALLEDGES) {
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
if(evl->e1->f>=2) evl->e1->f= 1;
if(evl->e2->f>=2) evl->e2->f= 1;
@@ -720,14 +728,14 @@ static void edge_drawflags(void)
/* handle single-edges for 'test cylinder flag' (old engine) */
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
if(eed->f==1) eed->f1= 1;
eed= eed->next;
}
/* all faces, all edges with flag==2: compare normal */
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
if(evl->e1->f==2) edge_normal_compare(evl->e1, evl);
if(evl->e2->f==2) edge_normal_compare(evl->e2, evl);
@@ -739,7 +747,7 @@ static void edge_drawflags(void)
/* sphere collision flag */
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
if(eed->f1!=1) {
eed->v1->f1= eed->v2->f1= 0;
@@ -764,6 +772,7 @@ static int contrpuntnorm(float *n, float *puno) /* dutch: check vertex normal *
void vertexnormals(int testflip)
{
+ EditMesh *em = G.editMesh;
Mesh *me;
EditVert *eve;
EditVlak *evl;
@@ -780,7 +789,7 @@ void vertexnormals(int testflip)
if(G.totface==0) {
/* fake vertex normals for 'halo puno'! */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
VECCOPY(eve->no, eve->co);
Normalise( (float *)eve->no);
@@ -790,14 +799,14 @@ void vertexnormals(int testflip)
}
/* clear normals */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
eve->no[0]= eve->no[1]= eve->no[2]= 0.0;
eve= eve->next;
}
/* calculate cosine angles and add to vertex normal */
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
VecSubf(n1, evl->v2->co, evl->v1->co);
VecSubf(n2, evl->v3->co, evl->v2->co);
@@ -855,7 +864,7 @@ void vertexnormals(int testflip)
}
/* normalise vertex normals */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
len= Normalise(eve->no);
if(len==0.0) {
@@ -866,7 +875,7 @@ void vertexnormals(int testflip)
}
/* vertex normal flip-flags for shade (render) */
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
evl->f=0;
@@ -910,11 +919,11 @@ void vertexnormals(int testflip)
void free_editMesh(void)
{
-
-// if(G.edve.first) BLI_freelist(&G.edve);
- if(G.edve.first) free_editverts(&G.edve);
- if(G.eded.first) BLI_freelist(&G.eded);
- if(G.edvl.first) freevlaklist(&G.edvl);
+ EditMesh *em = G.editMesh;
+// if(em->verts.first) BLI_freelist(&em->verts);
+ if(em->verts.first) free_editverts(&em->verts);
+ if(em->edges.first) BLI_freelist(&em->edges);
+ if(em->faces.first) freevlaklist(&em->faces);
free_hashedgetab();
G.totvert= G.totface= 0;
}
@@ -967,6 +976,7 @@ void make_editMesh(void)
void make_editMesh_real(Mesh *me)
{
+ EditMesh *em = G.editMesh;
MFace *mface;
TFace *tface;
MVert *mvert;
@@ -1094,7 +1104,7 @@ void make_editMesh_real(Mesh *me)
/* intrr: needed because of hidden vertices imported from Mesh */
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
if(eed->v1->h || eed->v2->h) eed->h= 1;
else eed->h= 0;
@@ -1234,6 +1244,7 @@ void load_editMesh()
void load_editMesh_real(Mesh *me, int undo)
{
+ EditMesh *em = G.editMesh;
MFace *mface;
MVert *mvert, *oldverts;
MSticky *ms;
@@ -1263,7 +1274,7 @@ void load_editMesh_real(Mesh *me, int undo)
/* WATCH IT: in evl->f is punoflag (for vertex normal) */
vertexnormals( (me->flag & ME_NOPUNOFLIP)==0 );
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
if(eed->f==0) G.totface++;
eed= eed->next;
@@ -1292,7 +1303,7 @@ void load_editMesh_real(Mesh *me, int undo)
me->totface= G.totface;
/* the vertices, abuse ->vn as counter */
- eve= G.edve.first;
+ eve= em->verts.first;
a=0;
while(eve) {
@@ -1342,7 +1353,7 @@ void load_editMesh_real(Mesh *me, int undo)
#endif
/* the faces */
- evl= G.edvl.first;
+ evl= em->faces.first;
i = 0;
while(evl) {
mface= &((MFace *) me->mface)[i];
@@ -1403,7 +1414,7 @@ void load_editMesh_real(Mesh *me, int undo)
}
/* add loose edges as a face */
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
if( eed->f==0 ) {
mface= &((MFace *) me->mface)[i];
@@ -1424,7 +1435,7 @@ void load_editMesh_real(Mesh *me, int undo)
TFace *tfn, *tf;
tf=tfn= MEM_callocN(sizeof(TFace)*me->totface, "tface");
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
*tf= evl->tf;
@@ -1451,7 +1462,7 @@ void load_editMesh_real(Mesh *me, int undo)
unsigned int *mcn, *mc;
mc=mcn= MEM_mallocN(4*sizeof(int)*me->totface, "mcol");
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
memcpy(mc, evl->tf.col, 4*sizeof(int));
@@ -1486,7 +1497,7 @@ void load_editMesh_real(Mesh *me, int undo)
"currkey->data");
oldkey = currkey->data;
- eve= G.edve.first;
+ eve= em->verts.first;
i = 0;
mvert = me->mvert;
@@ -1527,7 +1538,7 @@ void load_editMesh_real(Mesh *me, int undo)
if(actkey) do_spec_key(me->key);
/* te be sure: clear ->vn pointers */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
eve->vn= 0;
eve= eve->next;
@@ -1721,11 +1732,12 @@ void slowerdraw(void) /* reset fasterdraw */
void convert_to_triface(int all)
{
+ EditMesh *em = G.editMesh;
EditVlak *evl, *evln, *next;
undo_push_mesh("Convert to triangles");
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
next= evl->next;
if(evl->v4) {
@@ -1742,7 +1754,7 @@ void convert_to_triface(int all)
evln->tf.col[1]= evln->tf.col[2];
evln->tf.col[2]= evln->tf.col[3];
- BLI_remlink(&G.edvl, evl);
+ BLI_remlink(&em->faces, evl);
freevlak(evl);
}
}
@@ -1754,12 +1766,13 @@ void convert_to_triface(int all)
void deselectall_mesh(void) /* toggle */
{
+ EditMesh *em = G.editMesh;
EditVert *eve;
int a;
if(G.obedit->lay & G.vd->lay) {
a= 0;
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->f & 1) {
a= 1;
@@ -1771,7 +1784,7 @@ void deselectall_mesh(void) /* toggle */
if (a) undo_push_mesh("Deselect all");
else undo_push_mesh("Select all");
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->h==0) {
if(a) eve->f&= -2;
@@ -1787,6 +1800,7 @@ void deselectall_mesh(void) /* toggle */
void righthandfaces(int select) /* makes faces righthand turning */
{
+ EditMesh *em = G.editMesh;
EditEdge *eed, *ed1, *ed2, *ed3, *ed4;
EditVlak *evl, *startvl;
float maxx, nor[3], cent[3];
@@ -1807,7 +1821,7 @@ void righthandfaces(int select) /* makes faces righthand turning */
waitcursor(1);
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
eed->f= 0;
eed->f1= 0;
@@ -1816,7 +1830,7 @@ void righthandfaces(int select) /* makes faces righthand turning */
/* count faces and edges */
totsel= 0;
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
if(select==0 || vlakselectedAND(evl, 1) ) {
evl->f= 1;
@@ -1834,7 +1848,7 @@ void righthandfaces(int select) /* makes faces righthand turning */
while(totsel>0) {
/* from the outside to the inside */
- evl= G.edvl.first;
+ evl= em->faces.first;
startvl= 0;
maxx= -1.0e10;
@@ -1893,8 +1907,8 @@ void righthandfaces(int select) /* makes faces righthand turning */
direct= 1;
while(found) {
found= 0;
- if(direct) evl= G.edvl.first;
- else evl= G.edvl.last;
+ if(direct) evl= em->faces.first;
+ else evl= em->faces.last;
while(evl) {
if(evl->f) {
turn= 0;
@@ -1976,24 +1990,25 @@ void righthandfaces(int select) /* makes faces righthand turning */
static EditVert *findnearestvert(short sel)
{
+ EditMesh *em = G.editMesh;
/* if sel==1 the vertices with flag==1 get a disadvantage */
EditVert *eve,*act=0;
static EditVert *acto=0;
short dist=100,temp,mval[2];
- if(G.edve.first==0) return 0;
+ if(em->verts.first==0) return 0;
/* do projection */
calc_meshverts_ext(); /* drawobject.c */
/* we count from acto->next to last, and from first to acto */
/* does acto exist? */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve==acto) break;
eve= eve->next;
}
- if(eve==0) acto= G.edve.first;
+ if(eve==0) acto= em->verts.first;
if(acto==0) return 0;
@@ -2014,7 +2029,7 @@ static EditVert *findnearestvert(short sel)
}
/* is there an indicated vertex? part 2 */
if(dist>3) {
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->h==0) {
temp= abs(mval[0]- eve->xs)+ abs(mval[1]- eve->ys);
@@ -2037,16 +2052,17 @@ static EditVert *findnearestvert(short sel)
static EditEdge *findnearestedge()
{
+ EditMesh *em = G.editMesh;
EditEdge *closest, *eed;
EditVert *eve;
short found=0, mval[2];
float distance[2], v1[2], v2[2], mval2[2];
- if(G.eded.first==0) return NULL;
- else eed=G.eded.first;
+ if(em->edges.first==0) return NULL;
+ else eed=em->edges.first;
/* reset flags */
- for(eve=G.edve.first; eve; eve=eve->next){
+ for(eve=em->verts.first; eve; eve=eve->next){
eve->f &= ~2;
}
@@ -2057,7 +2073,7 @@ static EditEdge *findnearestedge()
mval2[0] = (float)mval[0];
mval2[1] = (float)mval[1];
- eed=G.eded.first;
+ eed=em->edges.first;
/*compare the distance to the rest of the edges and find the closest one*/
while(eed) {
/* Are both vertices of the edge ofscreen or either of them hidden? then don't select the edge*/
@@ -2088,7 +2104,7 @@ static EditEdge *findnearestedge()
}
/* reset flags */
- for(eve=G.edve.first; eve; eve=eve->next){
+ for(eve=em->verts.first; eve; eve=eve->next){
eve->f &= ~2;
}
@@ -2099,16 +2115,17 @@ static EditEdge *findnearestedge()
/* does the same as findnearestedge but both vertices of the edge should be on screen*/
static EditEdge *findnearestvisibleedge()
{
+ EditMesh *em = G.editMesh;
EditEdge *closest, *eed;
EditVert *eve;
short foundedge=0, found=0, mval[2];
float distance[2], v1[2], v2[2], mval2[2];
- if(G.eded.first==0) return NULL;
- else eed=G.eded.first;
+ if(em->edges.first==0) return NULL;
+ else eed=em->edges.first;
/* reset flags */
- for(eve=G.edve.first; eve; eve=eve->next){
+ for(eve=em->verts.first; eve; eve=eve->next){
eve->f &= ~2;
}
calc_meshverts_ext_f2(); /*sets (eve->f & 2) for vertices that aren't visible*/
@@ -2119,7 +2136,7 @@ static EditEdge *findnearestvisibleedge()
mval2[0] = (float)mval[0]; /* cast to float because of the pdist function only taking floats...*/
mval2[1] = (float)mval[1];
- eed=G.eded.first;
+ eed=em->edges.first;
while(eed) { /* compare the distance to the rest of the edges and find the closest one*/
if( !((eed->v1->f | eed->v2->f) & 2) && (eed->v1->h==0 && eed->v2->h==0) ){ /* only return edges with both vertices on screen */
v1[0] = eed->v1->xs;
@@ -2146,7 +2163,7 @@ static EditEdge *findnearestvisibleedge()
}
/* reset flags */
- for(eve=G.edve.first; eve; eve=eve->next){
+ for(eve=em->verts.first; eve; eve=eve->next){
eve->f &= ~2;
}
@@ -2223,6 +2240,7 @@ parameters: mode tells the function what it should do with the loop:
void loopoperations(char mode)
{
+ EditMesh *em = G.editMesh;
EditVert* look = NULL;
EditEdge *start, *eed, *opposite,*currente, *oldstart;
@@ -2239,7 +2257,7 @@ void loopoperations(char mode)
char mesg[100];
- if ((G.obedit==0) || (G.edvl.first==0)) return;
+ if ((G.obedit==0) || (em->faces.first==0)) return;
if(mode==LOOP_CUT)undo_push_mesh("Faceloop Subdivide");
else if(mode==LOOP_SELECT)undo_push_mesh("Faceloop Select");
@@ -2262,7 +2280,7 @@ void loopoperations(char mode)
/* If the edge doesn't belong to a face, it's not a valid starting edge */
if(start){
start->f |= 16;
- evl=G.edvl.first;
+ evl=em->faces.first;
while(evl){
if(evl->e1->f & 16){
noface=0;
@@ -2292,13 +2310,13 @@ void loopoperations(char mode)
oldstart=start;
/* Clear flags */
- for(eed=G.eded.first; eed; eed=eed->next){
+ for(eed=em->edges.first; eed; eed=eed->next){
eed->f &= ~(2|4|8|32|64);
eed->v1->f &= ~(2|8|16);
eed->v2->f &= ~(2|8|16);
}
- for(evl= G.edvl.first; evl; evl=evl->next){
+ for(evl= em->faces.first; evl; evl=evl->next){
evl->f &= ~(4|8);
totface++;
}
@@ -2315,7 +2333,7 @@ void loopoperations(char mode)
/*----------Get Loop------------------------*/
tri=foundedge=lastface=0;
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl && !foundedge && !tri){
if(!(evl->v4)){ /* Exception for triangular faces */
@@ -2480,7 +2498,7 @@ void loopoperations(char mode)
glColor3ub(255, 255, 0);
if(mode==LOOP_SELECT){
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl){
if(evl->f & 8){
@@ -2519,7 +2537,7 @@ void loopoperations(char mode)
}
if(mode==LOOP_CUT){
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl){
if(evl->f & 8){
float cen[2][3];
@@ -2606,7 +2624,7 @@ void loopoperations(char mode)
evl=evl->next;
}
- eed=G.eded.first;
+ eed=em->edges.first;
while(eed){
if(eed->f & 64){
glBegin(GL_LINES);
@@ -2650,7 +2668,7 @@ void loopoperations(char mode)
/* If this is a unmodified select, clear the selection */
if(!(G.qual & LR_SHIFTKEY) && !(G.qual & LR_ALTKEY)){
- for(evl= G.edvl.first;evl;evl=evl->next){
+ for(evl= em->faces.first;evl;evl=evl->next){
evl->v1->f &= !1;
evl->v2->f &= !1;
evl->v3->f &= !1;
@@ -2659,7 +2677,7 @@ void loopoperations(char mode)
}
/* Alt was not pressed, so add to the selection */
if(!(G.qual & LR_ALTKEY)){
- for(evl= G.edvl.first;evl;evl=evl->next){
+ for(evl= em->faces.first;evl;evl=evl->next){
if(evl->f & 8){
evl->v1->f |= 1;
evl->v2->f |= 1;
@@ -2671,7 +2689,7 @@ void loopoperations(char mode)
/* alt was pressed, so subtract from the selection */
else
{
- for(evl= G.edvl.first;evl;evl=evl->next){
+ for(evl= em->faces.first;evl;evl=evl->next){
if(evl->f & 8){
evl->v1->f &= !1;
evl->v2->f &= !1;
@@ -2688,7 +2706,7 @@ void loopoperations(char mode)
if(mode==LOOP_CUT && start!=NULL && (event==LEFTMOUSE || event==RETKEY)){
/* count the number of edges in the loop */
- for(eed=G.eded.first; eed; eed = eed->next){
+ for(eed=em->edges.first; eed; eed = eed->next){
if(eed->f & 8)
ect++;
}
@@ -2701,7 +2719,7 @@ void loopoperations(char mode)
taggedsrch[i] = NULL;
}
ect = 0;
- for(eed=G.eded.first; eed; eed = eed->next){
+ for(eed=em->edges.first; eed; eed = eed->next){
if(eed->f & 8)
{
if(eed->h==0){
@@ -2784,7 +2802,7 @@ void loopoperations(char mode)
/* Count the Number of Faces in the selected loop*/
percentfaces = 0;
- for(evl= G.edvl.first; evl ;evl=evl->next){
+ for(evl= em->faces.first; evl ;evl=evl->next){
if(evl->f & 8)
{
percentfaces++;
@@ -2796,7 +2814,7 @@ void loopoperations(char mode)
/* put those faces in the array */
i=0;
- for(evl= G.edvl.first; evl ;evl=evl->next){
+ for(evl= em->faces.first; evl ;evl=evl->next){
if(evl->f & 8)
{
percentfacesloop[i] = evl;
@@ -2822,7 +2840,7 @@ void loopoperations(char mode)
for(i=0;i<percentfaces;i++){
evl = percentfacesloop[i];
- for(eed = G.eded.first; eed; eed=eed->next){
+ for(eed = em->edges.first; eed; eed=eed->next){
if(eed->f & 64){ /* color the starting edge */
glBegin(GL_LINES);
@@ -3197,7 +3215,7 @@ void loopoperations(char mode)
if(cut){
/* Now that we have selected a cut %, mark the edges for cutting. */
if(!inset){
- for(eed = G.eded.first; eed; eed=eed->next){
+ for(eed = em->edges.first; eed; eed=eed->next){
if(percentcut == 1.0)
percentcut = 0.9999;
else if(percentcut == 0.0)
@@ -3217,7 +3235,7 @@ void loopoperations(char mode)
else
subdivideflag(8, 0, B_KNIFE | B_PERCENTSUBD); /* B_KNIFE tells subdivide that edgeflags are already set */
- for(eed = G.eded.first; eed; eed=eed->next){
+ for(eed = em->edges.first; eed; eed=eed->next){
if(eed->v1->f & 16) eed->v1->f |= 1;
else eed->v1->f &= ~1;
@@ -3231,13 +3249,13 @@ void loopoperations(char mode)
/* Clear flags */
- for(eed = G.eded.first; eed; eed=eed->next){
+ for(eed = em->edges.first; eed; eed=eed->next){
eed->f &= ~(2|4|8|32|64);
eed->v1->f &= ~(2|16);
eed->v2->f &= ~(2|16);
}
- for(evl= G.edvl.first; evl; evl=evl->next){
+ for(evl= em->faces.first; evl; evl=evl->next){
evl->f &= ~(4|8);
}
@@ -3258,6 +3276,7 @@ void loopoperations(char mode)
void edge_select(void)
{
+ EditMesh *em = G.editMesh;
EditEdge *closest=0;
closest=findnearestedge();
@@ -3269,7 +3288,7 @@ void edge_select(void)
undo_push_mesh("Edge select");
/* deselectall */
- for(eve= G.edve.first; eve; eve= eve->next) eve->f&= ~1;
+ for(eve= em->verts.first; eve; eve= eve->next) eve->f&= ~1;
/* select edge */
closest->v1->f |= 1;
@@ -3299,6 +3318,7 @@ static void draw_vertices_special(int mode, EditVert *act) /* teken = draw */
* mode 0: deselect the selected ones, draw then, except act
* mode 1: only draw act
*/
+ EditMesh *em = G.editMesh;
EditVert *eve;
float size= BIF_GetThemeValuef(TH_VERTEX_SIZE);
char col[3];
@@ -3319,7 +3339,7 @@ static void draw_vertices_special(int mode, EditVert *act) /* teken = draw */
}
glBegin(GL_POINTS);
- eve= (EditVert *)G.edve.first;
+ eve= (EditVert *)em->verts.first;
while(eve) {
if(eve->h==0) {
if(eve!=act && (eve->f & 1)) {
@@ -3395,19 +3415,20 @@ void mouse_mesh(void)
static void selectconnectedAll(void)
{
+ EditMesh *em = G.editMesh;
EditVert *v1,*v2;
EditEdge *eed;
short flag=1,toggle=0;
- if(G.eded.first==0) return;
+ if(em->edges.first==0) return;
undo_push_mesh("Select Connected (All)");
while(flag==1) {
flag= 0;
toggle++;
- if(toggle & 1) eed= G.eded.first;
- else eed= G.eded.last;
+ if(toggle & 1) eed= em->edges.first;
+ else eed= em->edges.last;
while(eed) {
v1= eed->v1;
v2= eed->v2;
@@ -3437,11 +3458,12 @@ static void selectconnectedAll(void)
void selectconnected_mesh(int qual)
{
+ EditMesh *em = G.editMesh;
EditVert *eve,*v1,*v2,*act= 0;
EditEdge *eed;
short flag=1,sel,toggle=0;
- if(G.eded.first==0) return;
+ if(em->edges.first==0) return;
if(qual & LR_CTRLKEY) {
selectconnectedAll();
@@ -3459,7 +3481,7 @@ void selectconnected_mesh(int qual)
undo_push_mesh("Select linked");
/* clear test flags */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
eve->f&= ~2;
eve= eve->next;
@@ -3469,8 +3491,8 @@ void selectconnected_mesh(int qual)
while(flag==1) {
flag= 0;
toggle++;
- if(toggle & 1) eed= G.eded.first;
- else eed= G.eded.last;
+ if(toggle & 1) eed= em->edges.first;
+ else eed= em->edges.last;
while(eed) {
v1= eed->v1;
v2= eed->v2;
@@ -3503,7 +3525,7 @@ short extrudeflag(short flag,short type)
/* when type=1 old extrusion faces are removed (for spin etc) */
/* all verts with (flag & 'flag'): extrude */
/* from old verts, 'flag' is cleared, in new ones it is set */
-
+ EditMesh *em = G.editMesh;
EditVert *eve, *v1, *v2, *v3, *v4, *nextve;
EditEdge *eed, *e1, *e2, *e3, *e4, *nexted;
EditVlak *evl, *evl2, *nextvl;
@@ -3512,14 +3534,14 @@ short extrudeflag(short flag,short type)
if(G.obedit==0 || get_mesh(G.obedit)==0) return 0;
/* clear vert flag f1, we use this to detext a loose selected vertice */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->f & flag) eve->f1= 1;
else eve->f1= 0;
eve= eve->next;
}
/* clear edges counter flag, if selected we set it at 1 */
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
if( (eed->v1->f & flag) && (eed->v2->f & flag) ) {
eed->f= 1;
@@ -3535,7 +3557,7 @@ short extrudeflag(short flag,short type)
/* we set a flag in all selected faces, and increase the associated edge counters */
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
evl->f= 0;
@@ -3571,7 +3593,7 @@ short extrudeflag(short flag,short type)
}
/* set direction of edges */
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
if(evl->f== 0) {
if(evl->e1->f==2) {
@@ -3612,7 +3634,7 @@ short extrudeflag(short flag,short type)
/* copy all selected vertices, */
/* write pointer to new vert in old struct at eve->vn */
- eve= G.edve.last;
+ eve= em->verts.last;
while(eve) {
eve->f&= ~128; /* clear, for later test for loose verts */
if(eve->f & flag) {
@@ -3632,7 +3654,7 @@ short extrudeflag(short flag,short type)
/* all edges with eed->f==1 or eed->f==2 become faces */
/* if deloud==1 then edges with eed->f>2 are removed */
- eed= G.eded.last;
+ eed= em->edges.last;
while(eed) {
nexted= eed->prev;
if( eed->f<3) {
@@ -3650,7 +3672,7 @@ short extrudeflag(short flag,short type)
eed= nexted;
}
if(deloud) {
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
nexted= eed->next;
if(eed->f==3 && eed->f1==1) {
@@ -3661,7 +3683,7 @@ short extrudeflag(short flag,short type)
}
}
/* duplicate faces, if necessart remove old ones */
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
nextvl= evl->next;
if(evl->f & 1) {
@@ -3674,7 +3696,7 @@ short extrudeflag(short flag,short type)
evl2= addvlaklist(v1, v2, v3, v4, evl);
if(deloud) {
- BLI_remlink(&G.edvl, evl);
+ BLI_remlink(&em->faces, evl);
freevlak(evl);
}
if (smooth) evl2->flag |= ME_SMOOTH;
@@ -3685,14 +3707,14 @@ short extrudeflag(short flag,short type)
if eve->f1==1: make edge
if flag!=128 : if deloud==1: remove
*/
- eve= G.edve.last;
+ eve= em->verts.last;
while(eve) {
nextve= eve->prev;
if(eve->vn) {
if(eve->f1==1) addedgelist(eve,eve->vn);
else if( (eve->f & 128)==0) {
if(deloud) {
- BLI_remlink(&G.edve,eve);
+ BLI_remlink(&em->verts,eve);
// free(eve);
free_editvert(eve);
eve= NULL;
@@ -3710,10 +3732,10 @@ short extrudeflag(short flag,short type)
void rotateflag(short flag, float *cent, float rotmat[][3])
{
/* all verts with (flag & 'flag') rotate */
-
+ EditMesh *em = G.editMesh;
EditVert *eve;
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->f & flag) {
eve->co[0]-=cent[0];
@@ -3731,10 +3753,10 @@ void rotateflag(short flag, float *cent, float rotmat[][3])
void translateflag(short flag, float *vec)
{
/* all verts with (flag & 'flag') translate */
-
+ EditMesh *em = G.editMesh;
EditVert *eve;
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->f & flag) {
eve->co[0]+=vec[0];
@@ -3747,6 +3769,7 @@ void translateflag(short flag, float *vec)
short removedoublesflag(short flag, float limit) /* return amount */
{
+ EditMesh *em = G.editMesh;
/* all verts with (flag & 'flag') are being evaluated */
EditVert *eve, *v1, *nextve;
EditEdge *eed, *e1, *nexted;
@@ -3757,7 +3780,7 @@ short removedoublesflag(short flag, float limit) /* return amount */
int a, b, test, aantal;
/* flag 128 is cleared, count */
- eve= G.edve.first;
+ eve= em->verts.first;
aantal= 0;
while(eve) {
eve->f&= ~128;
@@ -3768,7 +3791,7 @@ short removedoublesflag(short flag, float limit) /* return amount */
/* allocate memory and qsort */
sb= sortblock= (struct xvertsort *)MEM_mallocN(sizeof(struct xvertsort)*aantal,"sortremovedoub");
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->f & flag) {
sb->x= eve->co[0]+eve->co[1]+eve->co[2];
@@ -3814,12 +3837,12 @@ short removedoublesflag(short flag, float limit) /* return amount */
MEM_freeN(sortblock);
/* test edges and insert again */
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
eed->f= 0;
eed= eed->next;
}
- eed= G.eded.last;
+ eed= em->edges.last;
while(eed) {
nexted= eed->prev;
@@ -3840,7 +3863,7 @@ short removedoublesflag(short flag, float limit) /* return amount */
}
/* first count amount of test faces */
- evl= (struct EditVlak *)G.edvl.first;
+ evl= (struct EditVlak *)em->faces.first;
aantal= 0;
while(evl) {
evl->f= 0;
@@ -3854,7 +3877,7 @@ short removedoublesflag(short flag, float limit) /* return amount */
}
/* test faces for double vertices, and if needed remove them */
- evl= (struct EditVlak *)G.edvl.first;
+ evl= (struct EditVlak *)em->faces.first;
while(evl) {
nextvl= evl->next;
if(evl->f==1) {
@@ -3885,13 +3908,13 @@ short removedoublesflag(short flag, float limit) /* return amount */
test= 0;
}
else {
- BLI_remlink(&G.edvl, evl);
+ BLI_remlink(&em->faces, evl);
freevlak(evl);
aantal--;
}
}
else {
- BLI_remlink(&G.edvl, evl);
+ BLI_remlink(&em->faces, evl);
freevlak(evl);
aantal--;
}
@@ -3917,7 +3940,7 @@ short removedoublesflag(short flag, float limit) /* return amount */
/* double faces: sort block */
/* count again, now all selected faces */
aantal= 0;
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
evl->f= 0;
if(vlakselectedAND(evl, 1)) {
@@ -3930,7 +3953,7 @@ short removedoublesflag(short flag, float limit) /* return amount */
if(aantal) {
/* double faces: sort block */
vsb= vlsortblock= MEM_mallocN(sizeof(struct vlaksort)*aantal, "sortremovedoub");
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
if(evl->f & 1) {
if(evl->v4) vsb->x= (long) MIN4( (long)evl->v1, (long)evl->v2, (long)evl->v3, (long)evl->v4);
@@ -3970,11 +3993,11 @@ short removedoublesflag(short flag, float limit) /* return amount */
MEM_freeN(vlsortblock);
/* remove double faces */
- evl= (struct EditVlak *)G.edvl.first;
+ evl= (struct EditVlak *)em->faces.first;
while(evl) {
nextvl= evl->next;
if(evl->f & 128) {
- BLI_remlink(&G.edvl, evl);
+ BLI_remlink(&em->faces, evl);
freevlak(evl);
}
evl= nextvl;
@@ -3983,13 +4006,13 @@ short removedoublesflag(short flag, float limit) /* return amount */
/* remove double vertices */
a= 0;
- eve= (struct EditVert *)G.edve.first;
+ eve= (struct EditVert *)em->verts.first;
while(eve) {
nextve= eve->next;
if(eve->f & flag) {
if(eve->f & 128) {
a++;
- BLI_remlink(&G.edve, eve);
+ BLI_remlink(&em->verts, eve);
// free(eve);
free_editvert(eve);
@@ -4002,6 +4025,7 @@ short removedoublesflag(short flag, float limit) /* return amount */
void xsortvert_flag(int flag)
{
+ EditMesh *em = G.editMesh;
/* all verts with (flag & 'flag') are sorted */
EditVert *eve;
struct xvertsort *sortblock, *sb;
@@ -4009,7 +4033,7 @@ void xsortvert_flag(int flag)
int aantal;
/* count */
- eve= G.edve.first;
+ eve= em->verts.first;
aantal= 0;
while(eve) {
if(eve->f & flag) aantal++;
@@ -4021,7 +4045,7 @@ void xsortvert_flag(int flag)
/* allocate memory and sort */
sb= sortblock= (struct xvertsort *)MEM_mallocN(sizeof(struct xvertsort)*aantal,"sortremovedoub");
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->f & flag) {
sb->x= eve->xs;
@@ -4037,12 +4061,12 @@ void xsortvert_flag(int flag)
sb= sortblock;
while(aantal--) {
eve= sb->v1;
- BLI_remlink(&G.edve, eve);
+ BLI_remlink(&em->verts, eve);
BLI_addtail(&tbase, eve);
sb++;
}
- addlisttolist(&G.edve, &tbase);
+ addlisttolist(&em->verts, &tbase);
MEM_freeN(sortblock);
}
@@ -4051,13 +4075,14 @@ void xsortvert_flag(int flag)
void hashvert_flag(int flag)
{
/* switch vertex order using hash table */
+ EditMesh *em = G.editMesh;
EditVert *eve;
struct xvertsort *sortblock, *sb, onth, *newsort;
ListBase tbase;
int aantal, a, b;
/* count */
- eve= G.edve.first;
+ eve= em->verts.first;
aantal= 0;
while(eve) {
if(eve->f & flag) aantal++;
@@ -4069,7 +4094,7 @@ void hashvert_flag(int flag)
/* allocate memory */
sb= sortblock= (struct xvertsort *)MEM_mallocN(sizeof(struct xvertsort)*aantal,"sortremovedoub");
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->f & flag) {
sb->v1= eve;
@@ -4096,12 +4121,12 @@ void hashvert_flag(int flag)
sb= sortblock;
while(aantal--) {
eve= sb->v1;
- BLI_remlink(&G.edve, eve);
+ BLI_remlink(&em->verts, eve);
BLI_addtail(&tbase, eve);
sb++;
}
- addlisttolist(&G.edve, &tbase);
+ addlisttolist(&em->verts, &tbase);
MEM_freeN(sortblock);
}
@@ -4350,6 +4375,7 @@ static void smooth_subdiv_quad(EditVlak *evl, float *vec)
void subdivideflag(int flag, float rad, int beauty)
{
+ EditMesh *em = G.editMesh;
/* subdivide all with (vertflag & flag) */
/* if rad>0.0 it's a 'sphere' subdivide */
/* if rad<0.0 it's a fractal subdivide */
@@ -4369,7 +4395,7 @@ void subdivideflag(int flag, float rad, int beauty)
}
/* edgeflags */
- eed= G.eded.first;
+ eed= em->edges.first;
while((eed) && !(beauty & B_KNIFE)) {
if( (eed->v1->f & flag) && (eed->v2->f & flag) ) eed->f= flag;
else eed->f= 0;
@@ -4378,7 +4404,7 @@ void subdivideflag(int flag, float rad, int beauty)
/* if beauty: test for area and clear edge flags of 'ugly' edges */
if(beauty & B_BEAUTY) {
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
if( vlakselectedAND(evl, flag) ) {
if(evl->v4) {
@@ -4441,7 +4467,7 @@ void subdivideflag(int flag, float rad, int beauty)
}
/* make new normal and put in edge, clear flag! needed for face creation part below */
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
if(eed->f & flag) {
/* Subdivide percentage is stored in 1/32768ths in eed->f1 */
@@ -4484,7 +4510,7 @@ void subdivideflag(int flag, float rad, int beauty)
/* test all faces for subdivide edges, there are 8 or 16 cases (ugh)! */
- evl= G.edvl.last;
+ evl= em->faces.last;
while(evl) {
if( vlakselectedOR(evl, flag) ) {
e1= evl->e1;
@@ -4739,7 +4765,7 @@ void subdivideflag(int flag, float rad, int beauty)
}
/* remove all old edges, if needed make new ones */
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
nexted= eed->next;
if( eed->vn ) {
@@ -4760,6 +4786,7 @@ void subdivideflag(int flag, float rad, int beauty)
void adduplicateflag(int flag)
{
+ EditMesh *em = G.editMesh;
/* old verts have flag 128 set, and flag 'flag' cleared
new verts have flag 'flag' set */
EditVert *eve, *v1, *v2, *v3, *v4;
@@ -4767,7 +4794,7 @@ void adduplicateflag(int flag)
EditVlak *evl;
/* vertices first */
- eve= G.edve.last;
+ eve= em->verts.last;
while(eve) {
eve->f&= ~128;
if(eve->f & flag) {
@@ -4789,7 +4816,7 @@ void adduplicateflag(int flag)
}
eve= eve->prev;
}
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
if( (eed->v1->f & 128) && (eed->v2->f & 128) ) {
v1= eed->v1->vn;
@@ -4800,7 +4827,7 @@ void adduplicateflag(int flag)
}
/* then dupicate faces */
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
if( (evl->v1->f & 128) && (evl->v2->f & 128) && (evl->v3->f & 128) ) {
if(evl->v4) {
@@ -4825,19 +4852,20 @@ void adduplicateflag(int flag)
static void delvlakflag(int flag)
{
+ EditMesh *em = G.editMesh;
/* delete all faces with 'flag', including edges and loose vertices */
/* in vertices the 'flag' is cleared */
EditVert *eve,*nextve;
EditEdge *eed, *nexted;
EditVlak *evl,*nextvl;
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
eed->f= 0;
eed= eed->next;
}
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
nextvl= evl->next;
if(vlakselectedAND(evl, flag)) {
@@ -4849,13 +4877,13 @@ static void delvlakflag(int flag)
evl->e4->f= 1;
}
- BLI_remlink(&G.edvl, evl);
+ BLI_remlink(&em->faces, evl);
freevlak(evl);
}
evl= nextvl;
}
/* all faces with 1, 2 (3) vertices selected: make sure we keep the edges */
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
evl->e1->f= 0;
evl->e2->f= 0;
@@ -4868,7 +4896,7 @@ static void delvlakflag(int flag)
}
/* test all edges for vertices with 'flag', and clear */
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
nexted= eed->next;
if(eed->f==1) {
@@ -4882,11 +4910,11 @@ static void delvlakflag(int flag)
eed= nexted;
}
/* vertices with 'flag' now are the loose ones, and will be removed */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
nextve= eve->next;
if(eve->f & flag) {
- BLI_remlink(&G.edve, eve);
+ BLI_remlink(&em->verts, eve);
// free(eve);
free_editvert(eve);
}
@@ -4978,6 +5006,7 @@ void separatemenu(void)
void separate_mesh(void)
{
+ EditMesh *em = G.editMesh;
EditVert *eve, *v1;
EditEdge *eed, *e1;
EditVlak *evl, *vl1;
@@ -5018,7 +5047,7 @@ void separate_mesh(void)
/* testen for split */
ok= 0;
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
flag= (eed->v1->f & 1)+(eed->v2->f & 1);
if(flag==1) {
@@ -5036,29 +5065,29 @@ void separate_mesh(void)
/* set apart: everything that is not selected */
edve.first= edve.last= eded.first= eded.last= edvl.first= edvl.last= 0;
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
v1= eve->next;
if((eve->f & 1)==0) {
- BLI_remlink(&G.edve, eve);
+ BLI_remlink(&em->verts, eve);
BLI_addtail(&edve, eve);
}
eve= v1;
}
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
e1= eed->next;
if( (eed->v1->f & 1)==0 || (eed->v2->f & 1)==0 ) {
- BLI_remlink(&G.eded, eed);
+ BLI_remlink(&em->edges, eed);
BLI_addtail(&eded, eed);
}
eed= e1;
}
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
vl1= evl->next;
if( (evl->v1->f & 1)==0 || (evl->v2->f & 1)==0 || (evl->v3->f & 1)==0 ) {
- BLI_remlink(&G.edvl, evl);
+ BLI_remlink(&em->faces, evl);
BLI_addtail(&edvl, evl);
}
evl= vl1;
@@ -5087,12 +5116,12 @@ void separate_mesh(void)
makeDispList(G.obedit);
free_editMesh();
- G.edve= edve;
- G.eded= eded;
- G.edvl= edvl;
+ em->verts= edve;
+ em->edges= eded;
+ em->faces= edvl;
/* hashedges are freed now, make new! */
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
if( findedgelist(eed->v1, eed->v2)==NULL )
insert_hashedge(eed);
@@ -5113,6 +5142,7 @@ void separate_mesh(void)
void separate_mesh_loose(void)
{
+ EditMesh *em = G.editMesh;
EditVert *eve, *v1;
EditEdge *eed, *e1;
EditVlak *evl, *vl1;
@@ -5161,19 +5191,19 @@ void separate_mesh_loose(void)
/*--------- Select connected-----------*/
//sel= 3;
/* clear test flags */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
eve->f&= ~1;
eve= eve->next;
}
/* Select a random vert to start with */
- eve= G.edve.first;
+ eve= em->verts.first;
eve->f |= 1;
while(check==1) {
check= 0;
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
if(eed->h==0) {
if(eed->v1->f & 1) {
@@ -5204,7 +5234,7 @@ void separate_mesh_loose(void)
else{
/* Test for splitting: Separate selected */
ok= 0;
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
flag= (eed->v1->f & 1)+(eed->v2->f & 1);
if(flag==1) {
@@ -5224,29 +5254,29 @@ void separate_mesh_loose(void)
/* set apart: everything that is not selected */
edve.first= edve.last= eded.first= eded.last= edvl.first= edvl.last= 0;
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
v1= eve->next;
if((eve->f & 1)==0) {
- BLI_remlink(&G.edve, eve);
+ BLI_remlink(&em->verts, eve);
BLI_addtail(&edve, eve);
}
eve= v1;
}
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
e1= eed->next;
if( (eed->v1->f & 1)==0 || (eed->v2->f & 1)==0 ) {
- BLI_remlink(&G.eded, eed);
+ BLI_remlink(&em->edges, eed);
BLI_addtail(&eded, eed);
}
eed= e1;
}
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
vl1= evl->next;
if( (evl->v1->f & 1)==0 || (evl->v2->f & 1)==0 || (evl->v3->f & 1)==0 ) {
- BLI_remlink(&G.edvl, evl);
+ BLI_remlink(&em->faces, evl);
BLI_addtail(&edvl, evl);
}
evl= vl1;
@@ -5275,12 +5305,12 @@ void separate_mesh_loose(void)
makeDispList(G.obedit);
free_editMesh();
- G.edve= edve;
- G.eded= eded;
- G.edvl= edvl;
+ em->verts= edve;
+ em->edges= eded;
+ em->faces= edvl;
/* hashedges are freed now, make new! */
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
if( findedgelist(eed->v1, eed->v2)==NULL )
insert_hashedge(eed);
@@ -5295,7 +5325,7 @@ void separate_mesh_loose(void)
}
/* unselect the vertices that we (ab)used for the separation*/
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
eve->f&= ~1;
eve= eve->next;
@@ -5349,6 +5379,7 @@ void extrude_repeat_mesh(int steps, float offs)
void spin_mesh(int steps,int degr,float *dvec, int mode)
{
+ EditMesh *em = G.editMesh;
EditVert *eve,*nextve;
float *curs, si,n[3],q[4],cmat[3][3],imat[3][3], tmat[3][3];
float cent[3],bmat[3][3];
@@ -5416,11 +5447,11 @@ void spin_mesh(int steps,int degr,float *dvec, int mode)
waitcursor(0);
if(ok==0) {
/* no vertices or only loose ones selected, remove duplicates */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
nextve= eve->next;
if(eve->f & 1) {
- BLI_remlink(&G.edve,eve);
+ BLI_remlink(&em->verts,eve);
// free(eve);
free_editvert(eve);
}
@@ -5435,6 +5466,7 @@ void spin_mesh(int steps,int degr,float *dvec, int mode)
void screw_mesh(int steps,int turns)
{
+ EditMesh *em = G.editMesh;
EditVert *eve,*v1=0,*v2=0;
EditEdge *eed;
float dvec[3], nor[3];
@@ -5450,13 +5482,13 @@ void screw_mesh(int steps,int turns)
undo_push_mesh("Screw");
/* clear flags */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
eve->f1= 0;
eve= eve->next;
}
/* edges set flags in verts */
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
if(eed->v1->f & 1) {
if(eed->v2->f & 1) {
@@ -5468,7 +5500,7 @@ void screw_mesh(int steps,int turns)
eed= eed->next;
}
/* find two vertices with eve->f1==1, more or less is wrong */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->f1==1) {
if(v1==0) v1= eve;
@@ -5504,9 +5536,10 @@ void screw_mesh(int steps,int turns)
void selectswap_mesh(void)
{
+ EditMesh *em = G.editMesh;
EditVert *eve;
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->h==0) {
if(eve->f & 1) eve->f&= ~1;
@@ -5523,6 +5556,7 @@ void selectswap_mesh(void)
void addvert_mesh(void)
{
+ EditMesh *em = G.editMesh;
EditVert *eve,*v1=0;
float *curs, mat[3][3],imat[3][3];
@@ -5531,7 +5565,7 @@ void addvert_mesh(void)
Mat3CpyMat4(mat, G.obedit->obmat);
Mat3Inv(imat, mat);
- v1= G.edve.first;
+ v1= em->verts.first;
while(v1) {
if(v1->f & 1) break;
v1= v1->next;
@@ -5567,6 +5601,7 @@ void addvert_mesh(void)
void addedgevlak_mesh(void)
{
+ EditMesh *em = G.editMesh;
EditVert *eve, *neweve[4];
EditVlak *evl;
float con1, con2, con3;
@@ -5575,7 +5610,7 @@ void addedgevlak_mesh(void)
if( (G.vd->lay & G.obedit->lay)==0 ) return;
/* how many selected ? */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->f & 1) {
aantal++;
@@ -5687,6 +5722,7 @@ static void erase_vertices(ListBase *l)
void delete_mesh(void)
{
+ EditMesh *em = G.editMesh;
EditVlak *evl, *nextvl;
EditVert *eve,*nextve;
EditEdge *eed,*nexted;
@@ -5700,13 +5736,13 @@ void delete_mesh(void)
if(event==10 ) {
undo_push_mesh("Erase Vertices");
- erase_edges(&G.eded);
- erase_faces(&G.edvl);
- erase_vertices(&G.edve);
+ erase_edges(&em->edges);
+ erase_faces(&em->faces);
+ erase_vertices(&em->verts);
}
else if(event==4) {
undo_push_mesh("Erase Edges & Faces");
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
nextvl= evl->next;
/* delete only faces with 2 or more vertices selected */
@@ -5716,12 +5752,12 @@ void delete_mesh(void)
if(evl->v3->f & 1) count++;
if(evl->v4 && (evl->v4->f & 1)) count++;
if(count>1) {
- BLI_remlink(&G.edvl, evl);
+ BLI_remlink(&em->faces, evl);
freevlak(evl);
}
evl= nextvl;
}
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
nexted= eed->next;
if( (eed->v1->f & 1) && (eed->v2->f & 1) ) {
@@ -5730,7 +5766,7 @@ void delete_mesh(void)
}
eed= nexted;
}
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
nextvl= evl->next;
event=0;
@@ -5740,7 +5776,7 @@ void delete_mesh(void)
if(evl->v4 && (evl->v4->f & 1)) event++;
if(event>1) {
- BLI_remlink(&G.edvl, evl);
+ BLI_remlink(&em->faces, evl);
freevlak(evl);
}
evl= nextvl;
@@ -5748,7 +5784,7 @@ void delete_mesh(void)
}
else if(event==1) {
undo_push_mesh("Erase Edges");
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
nexted= eed->next;
if( (eed->v1->f & 1) && (eed->v2->f & 1) ) {
@@ -5757,7 +5793,7 @@ void delete_mesh(void)
}
eed= nexted;
}
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
nextvl= evl->next;
event=0;
@@ -5767,23 +5803,23 @@ void delete_mesh(void)
if(evl->v4 && (evl->v4->f & 1)) event++;
if(event>1) {
- BLI_remlink(&G.edvl, evl);
+ BLI_remlink(&em->faces, evl);
freevlak(evl);
}
evl= nextvl;
}
/* to remove loose vertices: */
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
if( eed->v1->f & 1) eed->v1->f-=1;
if( eed->v2->f & 1) eed->v2->f-=1;
eed= eed->next;
}
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
nextve= eve->next;
if(eve->f & 1) {
- BLI_remlink(&G.edve,eve);
+ BLI_remlink(&em->verts,eve);
// free(eve);
free_editvert(eve);
}
@@ -5797,18 +5833,18 @@ void delete_mesh(void)
}
else if(event==3) {
undo_push_mesh("Erase All");
-// if(G.edve.first) BLI_freelist(&G.edve);
- if(G.edve.first) free_editverts(&G.edve);
- if(G.eded.first) BLI_freelist(&G.eded);
- if(G.edvl.first) freevlaklist(&G.edvl);
+// if(em->verts.first) BLI_freelist(&em->verts);
+ if(em->verts.first) free_editverts(&em->verts);
+ if(em->edges.first) BLI_freelist(&em->edges);
+ if(em->faces.first) freevlaklist(&em->faces);
}
else if(event==5) {
undo_push_mesh("Erase Only Faces");
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
nextvl= evl->next;
if(vlakselectedAND(evl, 1)) {
- BLI_remlink(&G.edvl, evl);
+ BLI_remlink(&em->faces, evl);
freevlak(evl);
}
evl= nextvl;
@@ -5824,6 +5860,7 @@ void delete_mesh(void)
void add_primitiveMesh(int type)
{
+ EditMesh *em = G.editMesh;
Mesh *me;
EditVert *eve, *v1=NULL, *v2, *v3, *v4=NULL, *vtop, *vdown;
float *curs, d, dia, phi, phid, cent[3], vec[3], imat[3][3], mat[3][3];
@@ -5861,7 +5898,7 @@ void add_primitiveMesh(int type)
me= G.obedit->data;
/* deselectall */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->f & 1) eve->f&= ~1;
eve= eve->next;
@@ -6063,7 +6100,7 @@ void add_primitiveMesh(int type)
}
else if(type==10) { /* grid */
/* clear flags */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
eve->f= 0;
eve= eve->next;
@@ -6095,7 +6132,7 @@ void add_primitiveMesh(int type)
float tmat[3][3];
/* clear all flags */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
eve->f= 0;
eve= eve->next;
@@ -6135,7 +6172,7 @@ void add_primitiveMesh(int type)
EditVert *eva[12];
/* clear all flags */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
eve->f= 0;
eve= eve->next;
@@ -6158,7 +6195,7 @@ void add_primitiveMesh(int type)
dia*=200;
for(a=1; a<subdiv; a++) subdivideflag(2, dia, 0);
/* and now do imat */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->f & 2) {
VecAddf(eve->co,eve->co,cent);
@@ -6199,8 +6236,9 @@ void add_primitiveMesh(int type)
void vertexsmooth(void)
{
- struct EditVert *eve;
- struct EditEdge *eed;
+ EditMesh *em = G.editMesh;
+ EditVert *eve;
+ EditEdge *eed;
float *adror, *adr, fac;
float fvec[3];
int teller=0;
@@ -6208,7 +6246,7 @@ void vertexsmooth(void)
if(G.obedit==0) return;
/* count */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->f & 1) teller++;
eve= eve->next;
@@ -6218,7 +6256,7 @@ void vertexsmooth(void)
undo_push_mesh("Smooth");
adr=adror= (float *)MEM_callocN(3*sizeof(float *)*teller, "vertsmooth");
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->f & 1) {
eve->vn= (EditVert *)adr;
@@ -6228,7 +6266,7 @@ void vertexsmooth(void)
eve= eve->next;
}
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
if( (eed->v1->f & 1) || (eed->v2->f & 1) ) {
fvec[0]= (eed->v1->co[0]+eed->v2->co[0])/2.0;
@@ -6247,7 +6285,7 @@ void vertexsmooth(void)
eed= eed->next;
}
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->f & 1) {
if(eve->f1) {
@@ -6271,6 +6309,7 @@ void vertexsmooth(void)
void vertexnoise(void)
{
+ EditMesh *em = G.editMesh;
extern float Tin;
Material *ma;
Tex *tex;
@@ -6289,7 +6328,7 @@ void vertexnoise(void)
ofs= tex->turbul/200.0;
- eve= (struct EditVert *)G.edve.first;
+ eve= (struct EditVert *)em->verts.first;
while(eve) {
if(eve->f & 1) {
@@ -6319,13 +6358,14 @@ void vertexnoise(void)
void hide_mesh(int swap)
{
- struct EditVert *eve;
- struct EditEdge *eed;
+ EditMesh *em = G.editMesh;
+ EditVert *eve;
+ EditEdge *eed;
if(G.obedit==0) return;
if(swap) {
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if((eve->f & 1)==0) {
eve->xs= 3200;
@@ -6335,7 +6375,7 @@ void hide_mesh(int swap)
}
}
else {
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->f & 1) {
eve->f-=1;
@@ -6345,7 +6385,7 @@ void hide_mesh(int swap)
eve= eve->next;
}
}
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
if(eed->v1->h || eed->v2->h) eed->h= 1;
else eed->h= 0;
@@ -6359,12 +6399,13 @@ void hide_mesh(int swap)
void reveal_mesh(void)
{
- struct EditVert *eve;
- struct EditEdge *eed;
+ EditMesh *em = G.editMesh;
+ EditVert *eve;
+ EditEdge *eed;
if(G.obedit==0) return;
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->h) {
eve->h= 0;
@@ -6373,7 +6414,7 @@ void reveal_mesh(void)
eve= eve->next;
}
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
eed->h= 0;
eed= eed->next;
@@ -6556,12 +6597,13 @@ static void free_tagged_edgelist(EditEdge *eed)
static void free_tagged_facelist(EditVlak *evl)
{
+ EditMesh *em = G.editMesh;
EditVlak *nextvl;
while(evl) {
nextvl= evl->next;
if(evl->f1) {
- BLI_remlink(&G.edvl, evl);
+ BLI_remlink(&em->faces, evl);
freevlak(evl);
}
evl= nextvl;
@@ -6639,6 +6681,7 @@ static int collect_quadedges(EVPTuple *evla, EditEdge *eed, EditVlak *evl)
void join_triangles(void)
{
+ EditMesh *em = G.editMesh;
EditVert *v1, *v2, *v3, *v4;
EditVlak *evl, *w;
EVPTuple *evlar;
@@ -6649,19 +6692,19 @@ void join_triangles(void)
unsigned int col[4];
- totedge = count_edges(G.eded.first);
+ totedge = count_edges(em->edges.first);
if(totedge==0) return;
undo_push_mesh("Join triangles");
evlar= (EVPTuple *) MEM_callocN(totedge * sizeof(EVPTuple), "jointris");
- ok = collect_quadedges(evlar, G.eded.first, G.edvl.first);
+ ok = collect_quadedges(evlar, em->edges.first, em->faces.first);
if (G.f & G_DEBUG) {
printf("edges selected: %d\n", ok);
}
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
nexted= eed->next;
@@ -6712,8 +6755,8 @@ void join_triangles(void)
}
eed= nexted;
}
- free_tagged_edgelist(G.eded.first);
- free_tagged_facelist(G.edvl.first);
+ free_tagged_edgelist(em->edges.first);
+ free_tagged_facelist(em->faces.first);
MEM_freeN(evlar);
@@ -6725,6 +6768,7 @@ void join_triangles(void)
/* quick hack, basically a copy of beauty_fill */
void edge_flip(void)
{
+ EditMesh *em = G.editMesh;
EditVert *v1, *v2, *v3, *v4;
EditEdge *eed, *nexted;
EditVlak *evl, *w;
@@ -6744,7 +6788,7 @@ void edge_flip(void)
- if true: remedge, addedge, all edges at the edge get new face pointers
*/
- totedge = count_edges(G.eded.first);
+ totedge = count_edges(em->edges.first);
if(totedge==0) return;
undo_push_mesh("Flip edges");
@@ -6752,9 +6796,9 @@ void edge_flip(void)
/* temporary array for : edge -> face[1], face[2] */
evlar= (EVPTuple *) MEM_callocN(totedge * sizeof(EVPTuple), "edgeflip");
- ok = collect_quadedges(evlar, G.eded.first, G.edvl.first);
+ ok = collect_quadedges(evlar, em->edges.first, em->faces.first);
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
nexted= eed->next;
@@ -6821,8 +6865,8 @@ void edge_flip(void)
}
/* clear tagged edges and faces: */
- free_tagged_edgelist(G.eded.first);
- free_tagged_facelist(G.edvl.first);
+ free_tagged_edgelist(em->edges.first);
+ free_tagged_facelist(em->faces.first);
MEM_freeN(evlar);
@@ -6832,6 +6876,7 @@ void edge_flip(void)
void beauty_fill(void)
{
+ EditMesh *em = G.editMesh;
EditVert *v1, *v2, *v3, *v4;
EditEdge *eed, *nexted;
EditEdge dia1, dia2;
@@ -6851,7 +6896,7 @@ void beauty_fill(void)
* - if true: remedge, addedge, all edges at the edge get new face pointers
*/
- totedge = count_edges(G.eded.first);
+ totedge = count_edges(em->edges.first);
if(totedge==0) return;
if(okee("Beauty Fill")==0) return;
@@ -6864,12 +6909,12 @@ void beauty_fill(void)
while (notbeauty) {
notbeauty--;
- ok = collect_quadedges(evlar, G.eded.first, G.edvl.first);
+ ok = collect_quadedges(evlar, em->edges.first, em->faces.first);
/* there we go */
onedone= 0;
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
nexted= eed->next;
@@ -6986,8 +7031,8 @@ void beauty_fill(void)
eed= nexted;
}
- free_tagged_edgelist(G.eded.first);
- free_tagged_facelist(G.edvl.first);
+ free_tagged_edgelist(em->edges.first);
+ free_tagged_facelist(em->faces.first);
if(onedone==0) break;
}
@@ -7299,9 +7344,10 @@ void join_mesh(void)
void clever_numbuts_mesh(void)
{
+ EditMesh *em = G.editMesh;
EditVert *eve;
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->f & 1) break;
eve= eve->next;
@@ -7398,6 +7444,7 @@ void sort_faces(void)
void vertices_to_sphere(void)
{
+ EditMesh *em = G.editMesh;
EditVert *eve;
Object *ob= OBACT;
float *curs, len, vec[3], cent[3], fac, facm, imat[3][3], bmat[3][3];
@@ -7426,7 +7473,7 @@ void vertices_to_sphere(void)
len= 0.0;
tot= 0;
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->f & 1) {
tot++;
@@ -7438,7 +7485,7 @@ void vertices_to_sphere(void)
if(len==0.0) len= 10.0;
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->f & 1) {
vec[0]= eve->co[0]-cent[0];
@@ -7463,6 +7510,7 @@ void vertices_to_sphere(void)
* callbacks for the scanfill.c code a bit for this to work. */
void fill_mesh(void)
{
+ EditMesh *em = G.editMesh;
EditVert *eve,*v1;
EditEdge *eed,*e1,*nexted;
EditVlak *evl,*nextvl;
@@ -7475,7 +7523,7 @@ void fill_mesh(void)
undo_push_mesh("Fill");
/* copy all selected vertices */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->f & 1) {
v1= BLI_addfillvert(eve->co);
@@ -7486,7 +7534,7 @@ void fill_mesh(void)
eve= eve->next;
}
/* copy all selected edges */
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
if( (eed->v1->f & 1) && (eed->v2->f & 1) ) {
e1= BLI_addfilledge(eed->v1->vn, eed->v2->vn);
@@ -7498,7 +7546,7 @@ void fill_mesh(void)
/* from all selected faces: remove vertices and edges verwijderen to prevent doubles */
/* all edges add values, faces subtract,
then remove edges with vertices ->h<2 */
- evl= G.edvl.first;
+ evl= em->faces.first;
ok= 0;
while(evl) {
nextvl= evl->next;
@@ -7743,10 +7791,11 @@ void vertexnormals_mesh(Mesh *me, float *extverts)
static int editmesh_nfaces_selected(void)
{
+ EditMesh *em = G.editMesh;
EditVlak *evl;
int count= 0;
- for (evl= G.edvl.first; evl; evl= evl->next)
+ for (evl= em->faces.first; evl; evl= evl->next)
if (vlakselectedAND(evl, SELECT))
count++;
@@ -7755,10 +7804,11 @@ static int editmesh_nfaces_selected(void)
static int editmesh_nvertices_selected(void)
{
+ EditMesh *em = G.editMesh;
EditVert *eve;
int count= 0;
- for (eve= G.edve.first; eve; eve= eve->next)
+ for (eve= em->verts.first; eve; eve= eve->next)
if (eve->f & SELECT)
count++;
@@ -7767,12 +7817,13 @@ static int editmesh_nvertices_selected(void)
static void editmesh_calc_selvert_center(float cent_r[3])
{
+ EditMesh *em = G.editMesh;
EditVert *eve;
int nsel= 0;
cent_r[0]= cent_r[1]= cent_r[0]= 0.0;
- for (eve= G.edve.first; eve; eve= eve->next) {
+ for (eve= em->verts.first; eve; eve= eve->next) {
if (eve->f & SELECT) {
cent_r[0]+= eve->co[0];
cent_r[1]+= eve->co[1];
@@ -7851,6 +7902,7 @@ void faceselect_align_view_to_selected(View3D *v3d, Mesh *me, int axis)
void editmesh_align_view_to_selected(View3D *v3d, int axis)
{
+ EditMesh *em = G.editMesh;
int nselverts= editmesh_nvertices_selected();
if (nselverts<3) {
@@ -7864,7 +7916,7 @@ void editmesh_align_view_to_selected(View3D *v3d, int axis)
EditVlak *evl;
norm[0]= norm[1]= norm[2]= 0.0;
- for (evl= G.edvl.first; evl; evl= evl->next) {
+ for (evl= em->faces.first; evl; evl= evl->next) {
if (vlakselectedAND(evl, SELECT)) {
float fno[3];
if (evl->v4) CalcNormFloat4(evl->v1->co, evl->v2->co, evl->v3->co, evl->v4->co, fno);
@@ -7886,7 +7938,7 @@ void editmesh_align_view_to_selected(View3D *v3d, int axis)
norm[0]= norm[1]= norm[2]= 0.0;
editmesh_calc_selvert_center(cent);
- for (eve= G.edve.first; eve; eve= eve->next) {
+ for (eve= em->verts.first; eve; eve= eve->next) {
if (eve->f & SELECT) {
if (leve) {
float tno[3];
@@ -8053,7 +8105,7 @@ CutCurve *get_mouse_trail(int *len, char mode){
*/
void KnifeSubdivide(char mode){
-
+ EditMesh *em = G.editMesh;
int oldcursor, len=0;
short isect=0;
CutCurve *curve;
@@ -8087,7 +8139,7 @@ void KnifeSubdivide(char mode){
curve=get_mouse_trail(&len, TRAIL_MIXED);
if (curve && len && mode){
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
if((eed->v1->f&1)&&(eed->v2->f&1)){
isect=seg_intersect(eed, curve, len);
@@ -8106,7 +8158,7 @@ void KnifeSubdivide(char mode){
if (mode==1) subdivideflag(1, 0, B_KNIFE|B_PERCENTSUBD);
else if (mode==2) subdivideflag(1, 0, B_KNIFE);
- eed=G.eded.first;
+ eed=em->edges.first;
while(eed){
eed->f=0;
eed->f1=0;
@@ -8565,11 +8617,12 @@ void fix_bevel_tri_wrap(float *o_v1, float *o_v2, float *o_v3, float *v1, float
void bevel_shrink_faces(float d, int flag)
{
+ EditMesh *em = G.editMesh;
EditVlak *evl;
float vec[3], no[3], v1[3], v2[3], v3[3], v4[3];
/* move edges of all faces with evl->f1 & flag closer towards their centres */
- evl= G.edvl.first;
+ evl= em->faces.first;
while (evl) {
if (evl->f1 & flag) {
VECCOPY(v1, evl->v1->co);
@@ -8605,11 +8658,12 @@ void bevel_shrink_faces(float d, int flag)
void bevel_shrink_draw(float d, int flag)
{
+ EditMesh *em = G.editMesh;
EditVlak *evl;
float vec[3], no[3], v1[3], v2[3], v3[3], v4[3], fv1[3], fv2[3], fv3[3], fv4[3];
/* move edges of all faces with evl->f1 & flag closer towards their centres */
- evl= G.edvl.first;
+ evl= em->faces.first;
while (evl) {
VECCOPY(v1, evl->v1->co);
VECCOPY(v2, evl->v2->co);
@@ -8673,6 +8727,7 @@ void bevel_shrink_draw(float d, int flag)
void bevel_mesh(float bsize, int allfaces)
{
+ EditMesh *em = G.editMesh;
//#define BEV_DEBUG
/* Enables debug printfs and assigns material indices: */
/* 2 = edge quad */
@@ -8693,7 +8748,7 @@ void bevel_mesh(float bsize, int allfaces)
removedoublesflag(1, limit);
/* tag all original faces */
- evl= G.edvl.first;
+ evl= em->faces.first;
while (evl) {
if (vlakselectedAND(evl, 1)||allfaces) {
evl->f1= 1;
@@ -8714,7 +8769,7 @@ void bevel_mesh(float bsize, int allfaces)
fprintf(stderr,"bevel_mesh: split\n");
#endif
- evl= G.edvl.first;
+ evl= em->faces.first;
while (evl) {
if (evl->f1 & 1) {
evl->f1-= 1;
@@ -8796,7 +8851,7 @@ void bevel_mesh(float bsize, int allfaces)
delvlakflag(128);
/* tag all faces for shrink*/
- evl= G.edvl.first;
+ evl= em->faces.first;
while (evl) {
if (vlakselectedAND(evl, 1)||allfaces) {
evl->f1= 2;
@@ -8810,7 +8865,7 @@ void bevel_mesh(float bsize, int allfaces)
/* find edges that are on each other and make quads between them */
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
eed->f= eed->f1= 0;
if ( ((eed->v1->f & eed->v2->f) & 1) || allfaces) eed->f1 |= 4; /* original edges */
@@ -8818,10 +8873,10 @@ void bevel_mesh(float bsize, int allfaces)
eed= eed->next;
}
- eed= G.eded.first;
+ eed= em->edges.first;
while (eed) {
if ( ((eed->f1 & 2)==0) && (eed->f1 & 4) ) {
- eed2= G.eded.first;
+ eed2= em->edges.first;
while (eed2) {
if ( (eed2 != eed) && ((eed2->f1 & 2)==0) && (eed->f1 & 4) ) {
if (
@@ -8843,7 +8898,7 @@ void bevel_mesh(float bsize, int allfaces)
eed2->f1 |= 2;
example= NULL;
- evl= G.edvl.first; /* search example vlak (for mat_nr, ME_SMOOTH, ...) */
+ evl= em->faces.first; /* search example vlak (for mat_nr, ME_SMOOTH, ...) */
while (evl) {
if ( (evl->e1 == eed) ||
(evl->e2 == eed) ||
@@ -8886,7 +8941,7 @@ void bevel_mesh(float bsize, int allfaces)
eed= eed->next;
}
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
eed->f= eed->f1= 0;
eed->f1= 0;
@@ -8902,7 +8957,7 @@ void bevel_mesh(float bsize, int allfaces)
/* Look for vertex clusters */
- eve= G.edve.first;
+ eve= em->verts.first;
while (eve) {
eve->f &= ~(64|128);
eve->vn= NULL;
@@ -8912,9 +8967,9 @@ void bevel_mesh(float bsize, int allfaces)
/* eve->f: 128: first vertex in a list (->vn) */
/* 64: vertex is in a list */
- eve= G.edve.first;
+ eve= em->verts.first;
while (eve) {
- eve2= G.edve.first;
+ eve2= em->verts.first;
eve3= NULL;
while (eve2) {
if ((eve2 != eve) && ((eve2->f & (64|128))==0)) {
@@ -8952,13 +9007,13 @@ void bevel_mesh(float bsize, int allfaces)
/* Make former vertex clusters faces */
- eve= G.edve.first;
+ eve= em->verts.first;
while (eve) {
eve->f &= ~64;
eve= eve->next;
}
- eve= G.edve.first;
+ eve= em->verts.first;
while (eve) {
if (eve->f & 128) {
eve->f &= ~128;
@@ -8974,7 +9029,7 @@ void bevel_mesh(float bsize, int allfaces)
evl= NULL;
if (a>=3) {
example= NULL;
- evl= G.edvl.first; /* search example vlak */
+ evl= em->faces.first; /* search example vlak */
while (evl) {
if ( (evl->v1 == neweve[0]) ||
(evl->v2 == neweve[0]) ||
@@ -9000,7 +9055,7 @@ void bevel_mesh(float bsize, int allfaces)
cent[2]= (min[2]+max[2])/2;
eve2= addvertlist(cent);
eve2->f |= 1;
- eed= G.eded.first;
+ eed= em->edges.first;
while (eed) {
c= 0;
for (b=0; b<a; b++)
@@ -9046,7 +9101,7 @@ void bevel_mesh(float bsize, int allfaces)
eve= eve->next;
}
- eve= G.edve.first;
+ eve= em->verts.first;
while (eve) {
eve->f1= 0;
eve->f &= ~(128|64);
@@ -9189,6 +9244,7 @@ void bevel_menu()
void select_non_manifold(void)
{
+ EditMesh *em = G.editMesh;
EditVert *eve;
EditEdge *eed;
EditVlak *evl;
@@ -9198,7 +9254,7 @@ void select_non_manifold(void)
*/
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
/* this will count how many edges are connected
* to this vert */
@@ -9206,7 +9262,7 @@ void select_non_manifold(void)
eve= eve->next;
}
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
/* this will count how many faces are connected to
* this edge */
@@ -9217,7 +9273,7 @@ void select_non_manifold(void)
eed= eed->next;
}
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
/* increase face count for edges */
++evl->e1->f1;
@@ -9230,7 +9286,7 @@ void select_non_manifold(void)
/* select verts that are attached to an edge that does not
* have 2 neighboring faces */
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
if (eed->f1 != 2) {
if (!eed->v1->h) eed->v1->f |= 1;
@@ -9240,7 +9296,7 @@ void select_non_manifold(void)
}
/* select isolated verts */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if (eve->f1 == 0) {
if (!eve->h) eve->f |= 1;
@@ -9255,16 +9311,17 @@ void select_non_manifold(void)
void select_more(void)
{
+ EditMesh *em = G.editMesh;
EditVert *eve;
EditEdge *eed;
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
eve->f1 = 0;
eve= eve->next;
}
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
if (eed->v1->f & 1)
eed->v2->f1 = 1;
@@ -9274,7 +9331,7 @@ void select_more(void)
eed= eed->next;
}
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if (eve->f1 == 1)
if (!eve->h) eve->f |= 1;
@@ -9288,6 +9345,7 @@ void select_more(void)
void select_less(void)
{
+ EditMesh *em = G.editMesh;
EditVert *eve;
EditEdge *eed;
EditVlak *evl;
@@ -9297,7 +9355,7 @@ void select_less(void)
/* eve->f1 & 4 => shares edge with a deselected vert */
/* eve->f1 & 8 => at most one neighbor */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
/* assume vert is isolated unless proven otherwise, */
/* assume at most one neighbor too */
@@ -9306,7 +9364,7 @@ void select_less(void)
eve= eve->next;
}
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
/* this will count how many faces are connected to
* this edge */
@@ -9330,7 +9388,7 @@ void select_less(void)
eed= eed->next;
}
- evl= G.edvl.first;
+ evl= em->faces.first;
while(evl) {
/* increase face count for edges */
++evl->e1->f1;
@@ -9342,7 +9400,7 @@ void select_less(void)
evl= evl->next;
}
- eed= G.eded.first;
+ eed= em->edges.first;
while(eed) {
/* if the edge has only one neighboring face, then
* deselect attached verts */
@@ -9355,7 +9413,7 @@ void select_less(void)
}
/* deselect verts */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if (eve->f1) {
eve->f &= ~1;
@@ -9371,6 +9429,7 @@ void select_less(void)
void selectrandom_mesh(void) /* randomly selects a user-set % of vertices */
{
+ EditMesh *em = G.editMesh;
EditVert *eve;
int newsel = 0; /* to decide whether to redraw or not */
short randfac = 50;
@@ -9381,7 +9440,7 @@ void selectrandom_mesh(void) /* randomly selects a user-set % of vertices */
if(button(&randfac,0, 100,"Percentage:")==0) return;
if(G.obedit->lay & G.vd->lay) {
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
BLI_srand( BLI_rand() ); /* random seed */
if ( (BLI_frand() * 100) < randfac) {
@@ -9408,8 +9467,9 @@ void selectrandom_mesh(void) /* randomly selects a user-set % of vertices */
*/
short sharesFace(EditEdge* e1, EditEdge* e2)
{
+ EditMesh *em = G.editMesh;
EditVlak *search=NULL;
- search = G.edvl.first;
+ search = em->faces.first;
if (e1 == e2){
return 0 ;
}
@@ -9428,6 +9488,7 @@ short sharesFace(EditEdge* e1, EditEdge* e2)
and not sharing a face with the previous edge */
void vertex_loop_select()
{
+ EditMesh *em = G.editMesh;
EditVert *v1=NULL,*v2=NULL,*curVert=NULL;
EditEdge *search=NULL,*startEdge=NULL,*valSearch = NULL,*nearest,*compEdge;
EditEdge *EdgeVal[5] = {NULL,NULL,NULL,NULL,NULL};
@@ -9437,7 +9498,7 @@ void vertex_loop_select()
undo_push_mesh("Vertex Loop Select");
SetBlenderCursor(BC_VLOOPCURSOR);
- for(search=G.eded.first;search;search=search->next)
+ for(search=em->edges.first;search;search=search->next)
numEdges++;
/* start with v1 and go in one direction. */
@@ -9452,7 +9513,7 @@ void vertex_loop_select()
scrarea_do_windraw(curarea);
nearest = findnearestedge();
if (nearest) {
- for(search = G.eded.first;search;search=search->next)
+ for(search = em->edges.first;search;search=search->next)
search->f &= ~32;
compEdge = startEdge = nearest;
@@ -9466,7 +9527,7 @@ void vertex_loop_select()
edgeValCount = -1;
EdgeVal[0] = EdgeVal[1] = EdgeVal[2] = NULL;
- for(valSearch = G.eded.first;valSearch;valSearch = valSearch->next){
+ for(valSearch = em->edges.first;valSearch;valSearch = valSearch->next){
if(valSearch->v1 == v1 || valSearch->v2 == v1){
if(valSearch != compEdge){
if((valSearch->v1->h == 0) && (valSearch->v2->h == 0)){
@@ -9514,7 +9575,7 @@ void vertex_loop_select()
edgeValCount = -1;
EdgeVal[0] = EdgeVal[1] = EdgeVal[2] = NULL;
- for(valSearch = G.eded.first;valSearch;valSearch = valSearch->next){
+ for(valSearch = em->edges.first;valSearch;valSearch = valSearch->next){
if(valSearch->v1 == v2 || valSearch->v2 == v2){
if(valSearch != compEdge){
if((valSearch->v1->h == 0) && (valSearch->v2->h == 0)){
@@ -9560,7 +9621,7 @@ void vertex_loop_select()
glPushMatrix();
mymultmatrix(G.obedit->obmat);
glColor3ub(0, 255, 255);
- for(search = G.eded.first;search;search= search->next){
+ for(search = em->edges.first;search;search= search->next){
if(search->f & 32){
glBegin(GL_LINES);
glVertex3f(search->v1->co[0],search->v1->co[1],search->v1->co[2]);
@@ -9605,14 +9666,14 @@ void vertex_loop_select()
if(!cancel){
/* If this is a unmodified select, clear the selection */
if(!(G.qual & LR_SHIFTKEY) && !(G.qual & LR_ALTKEY)){
- for(search = G.eded.first;search;search= search->next){
+ for(search = em->edges.first;search;search= search->next){
search->v1->f &= !1;
search->v2->f &= !1;
}
}
/* Alt was not pressed, so add to the selection */
if(!(G.qual & LR_ALTKEY)){
- for(search = G.eded.first;search;search= search->next){
+ for(search = em->edges.first;search;search= search->next){
if(search->f & 32){
search->v1->f |= 1;
search->v2->f |= 1;
@@ -9623,7 +9684,7 @@ void vertex_loop_select()
/* alt was pressed, so subtract from the selection */
else
{
- for(search = G.eded.first;search;search= search->next){
+ for(search = em->edges.first;search;search= search->next){
if(search->f & 32){
search->v1->f &= !1;
search->v2->f &= !1;
@@ -9640,9 +9701,10 @@ void vertex_loop_select()
}
void editmesh_select_by_material(int index) {
+ EditMesh *em = G.editMesh;
EditVlak *evl;
- for (evl=G.edvl.first; evl; evl= evl->next) {
+ for (evl=em->faces.first; evl; evl= evl->next) {
if (evl->mat_nr==index) {
if(evl->v1->h==0) evl->v1->f |= 1;
if(evl->v2->h==0) evl->v2->f |= 1;
@@ -9653,9 +9715,10 @@ void editmesh_select_by_material(int index) {
}
void editmesh_deselect_by_material(int index) {
+ EditMesh *em = G.editMesh;
EditVlak *evl;
- for (evl=G.edvl.first; evl; evl= evl->next) {
+ for (evl=em->faces.first; evl; evl= evl->next) {
if (evl->mat_nr==index) {
if(evl->v1->h==0) evl->v1->f &= ~1;
if(evl->v2->h==0) evl->v2->f &= ~1;
diff --git a/source/blender/src/editobject.c b/source/blender/src/editobject.c
index 39a451ae74e..d612e7e47e3 100644
--- a/source/blender/src/editobject.c
+++ b/source/blender/src/editobject.c
@@ -533,6 +533,7 @@ void set_slowparent(void)
void make_vertex_parent(void)
{
+ EditMesh *em = G.editMesh;
EditVert *eve;
Base *base;
Nurb *nu;
@@ -544,7 +545,7 @@ void make_vertex_parent(void)
/* we need 1 ot 3 selected vertices */
if(G.obedit->type==OB_MESH) {
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->f & 1) {
if(v1==0) v1= nr;
@@ -1158,6 +1159,7 @@ static int centremode= 0; /* 0 == do centre, 1 == centre new, 2 == centre cursor
void docentre(void)
{
+ EditMesh *em = G.editMesh;
Base *base;
Object *ob;
Mesh *me, *tme;
@@ -1177,7 +1179,7 @@ void docentre(void)
INIT_MINMAX(min, max);
if(G.obedit->type==OB_MESH) {
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
DO_MINMAX(eve->co, min, max);
eve= eve->next;
@@ -1186,7 +1188,7 @@ void docentre(void)
cent[1]= (min[1]+max[1])/2.0;
cent[2]= (min[2]+max[2])/2.0;
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
VecSubf(eve->co, eve->co, cent);
eve= eve->next;
@@ -3404,6 +3406,7 @@ void make_trans_objects()
/* mode: 1 = proportional */
void make_trans_verts(float *min, float *max, int mode)
{
+ EditMesh *em = G.editMesh;
/* extern Lattice *editLatt; already in BKE_lattice.h */
Nurb *nu;
BezTriple *bezt;
@@ -3433,7 +3436,7 @@ void make_trans_verts(float *min, float *max, int mode)
tottrans= 0;
if(G.obedit->type==OB_MESH) {
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->h==0) {
if(mode==1 || (eve->f & 1)) {
@@ -4110,11 +4113,12 @@ void restore_tob(TransOb *tob)
int cylinder_intersect_test(void)
{
+ EditMesh *em = G.editMesh;
extern float editbutsize;
float *oldloc, speed[3], s, t, labda, labdacor, dist, len, len2, axis[3], *base, rc[3], n[3], o[3];
EditVert *v1;
- v1= G.edve.first;
+ v1= em->verts.first;
base= v1->co;
v1= v1->next;
@@ -4175,11 +4179,12 @@ int cylinder_intersect_test(void)
int sphere_intersect_test(void)
{
+ EditMesh *em = G.editMesh;
extern float editbutsize;
float *oldloc, speed[3], labda, labdacor, len, bsq, u, disc, *base, rc[3];
EditVert *v1;
- v1= G.edve.first;
+ v1= em->verts.first;
base= v1->co;
v1= v1->next;
diff --git a/source/blender/src/editview.c b/source/blender/src/editview.c
index dd566aeba69..d681c2d50b0 100644
--- a/source/blender/src/editview.c
+++ b/source/blender/src/editview.c
@@ -669,6 +669,7 @@ void mouse_select(void)
*/
void borderselect(void)
{
+ EditMesh *em = G.editMesh;
rcti rect;
Base *base;
Nurb *nu;
@@ -723,7 +724,7 @@ void borderselect(void)
if(G.obedit->type==OB_MESH) {
calc_meshverts_ext(); /* drawobject.c */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->h==0 && eve->xs>rect.xmin && eve->xs<rect.xmax) {
if(eve->ys>rect.ymin && eve->ys<rect.ymax) {
@@ -924,11 +925,12 @@ void borderselect(void)
void mesh_selectionCB(int selecting, Object *editobj, short *mval, float rad)
{
+ EditMesh *em = G.editMesh;
EditVert *eve;
float x, y, r;
calc_meshverts_ext(); /* drawobject.c */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->h==0) {
x= eve->xs-mval[0];
@@ -1066,6 +1068,7 @@ void obedit_selectionCB(short selecting, Object *editobj, short *mval, float rad
void circle_select(void)
{
+ EditMesh *em = G.editMesh;
Nurb *nu;
BPoint *bp;
BezTriple *bezt;
@@ -1106,7 +1109,7 @@ void circle_select(void)
if(G.obedit->type==OB_MESH) {
calc_meshverts_ext(); /* drawobject.c */
- eve= G.edve.first;
+ eve= em->verts.first;
while(eve) {
if(eve->h==0) {
x= eve->xs-mval[0];