forked from bartvdbraak/blender
More properly coded version for adding edges... now only do_versions()
reads from the old mface->edcode flag to set edge drawing. ALso; added a pointer check in draw_mesh_object(), here the derivedmesh gives NULL on reading regression file lostride.blend. Zr needs to check!
This commit is contained in:
parent
0f6194e5bc
commit
d9fa984f35
@ -79,7 +79,8 @@ void mesh_set_smooth_flag(struct Object *meshOb, int enableSmooth);
|
||||
struct BoundBox *mesh_get_bb(struct Mesh *me);
|
||||
void mesh_get_texspace(struct Mesh *me, float *loc_r, float *rot_r, float *size_r);
|
||||
|
||||
void make_edges(struct Mesh *me);
|
||||
/* if old, it converts mface->edcode to edge drawflags */
|
||||
void make_edges(struct Mesh *me, int old);
|
||||
void mesh_strip_loose_faces(struct Mesh *me);
|
||||
|
||||
/* Calculate vertex and face normals, face normals are returned in *faceNors_r if non-NULL
|
||||
|
@ -2027,12 +2027,7 @@ DerivedMesh *getFluidsimDerivedMesh(Object *srcob, int useRenderParams, float *e
|
||||
return getMeshDerivedMesh(mesh , srcob, NULL);
|
||||
}
|
||||
if((mesh)&&(mesh->totvert>0)) {
|
||||
make_edges(mesh);
|
||||
for(i=0;i<mesh->totedge;i++) {
|
||||
// force all edge draw
|
||||
mesh->medge[i].flag |= ME_EDGEDRAW;
|
||||
//fprintf(stderr,"INI %d a%d f%d\n",fsdm->fsmesh->totedge,i, (fsdm->fsmesh->medge[i].flag & ME_EDGEDRAW) );
|
||||
}
|
||||
make_edges(mesh, 0); // 0 = make all edges draw
|
||||
}
|
||||
|
||||
// WARNING copied from getMeshDerivedMesh
|
||||
|
@ -302,8 +302,7 @@ static void read_stl_mesh_binary(char *str)
|
||||
me->totvert = totvert;
|
||||
|
||||
mesh_add_normals_flags(me);
|
||||
make_edges(me);
|
||||
mesh_strip_loose_faces(me);
|
||||
make_edges(me, 0);
|
||||
}
|
||||
waitcursor(1);
|
||||
}
|
||||
@ -468,8 +467,7 @@ static void read_stl_mesh_ascii(char *str)
|
||||
free(vertdata);
|
||||
|
||||
mesh_add_normals_flags(me);
|
||||
make_edges(me);
|
||||
mesh_strip_loose_faces(me);
|
||||
make_edges(me, 0);
|
||||
|
||||
waitcursor(1);
|
||||
}
|
||||
@ -679,8 +677,7 @@ static void read_videoscape_mesh(char *str)
|
||||
MEM_freeN(vertdata);
|
||||
|
||||
mesh_add_normals_flags(me);
|
||||
make_edges(me);
|
||||
mesh_strip_loose_faces(me);
|
||||
make_edges(me, 0);
|
||||
|
||||
waitcursor(1);
|
||||
}
|
||||
@ -860,8 +857,7 @@ static void read_radiogour(char *str)
|
||||
MEM_freeN(vertdata);
|
||||
|
||||
mesh_add_normals_flags(me);
|
||||
make_edges(me);
|
||||
mesh_strip_loose_faces(me);
|
||||
make_edges(me, 0);
|
||||
|
||||
waitcursor(1);
|
||||
}
|
||||
@ -2230,8 +2226,7 @@ static void displist_to_mesh(DispList *dlfirst)
|
||||
}
|
||||
|
||||
mesh_add_normals_flags(me);
|
||||
make_edges(me);
|
||||
mesh_strip_loose_faces(me);
|
||||
make_edges(me, 0);
|
||||
}
|
||||
|
||||
static void displist_to_objects(ListBase *lbase)
|
||||
@ -4971,7 +4966,6 @@ static void dxf_read(char *filename)
|
||||
}
|
||||
for (; lastMe; lastMe=lastMe->id.next) {
|
||||
mesh_add_normals_flags(lastMe);
|
||||
make_edges(lastMe);
|
||||
mesh_strip_loose_faces(lastMe);
|
||||
make_edges(lastMe, 0);
|
||||
}
|
||||
}
|
||||
|
@ -607,7 +607,7 @@ static int vergedgesort(const void *v1, const void *v2)
|
||||
}
|
||||
|
||||
|
||||
void make_edges(Mesh *me)
|
||||
void make_edges(Mesh *me, int old)
|
||||
{
|
||||
MFace *mface;
|
||||
MEdge *medge;
|
||||
@ -661,7 +661,7 @@ void make_edges(Mesh *me)
|
||||
if(ed->v1 != (ed+1)->v1 || ed->v2 != (ed+1)->v2) {
|
||||
medge->v1= ed->v1;
|
||||
medge->v2= ed->v2;
|
||||
if(ed->is_draw) medge->flag= ME_EDGEDRAW|ME_EDGERENDER;
|
||||
if(old==0 || ed->is_draw) medge->flag= ME_EDGEDRAW|ME_EDGERENDER;
|
||||
if(ed->is_loose) medge->flag|= ME_LOOSEEDGE;
|
||||
medge++;
|
||||
}
|
||||
@ -933,7 +933,7 @@ void nurbs_to_mesh(Object *ob)
|
||||
dl= dl->next;
|
||||
}
|
||||
|
||||
make_edges(me);
|
||||
make_edges(me, 0); // all edges
|
||||
mesh_strip_loose_faces(me);
|
||||
|
||||
if(ob->data) {
|
||||
|
@ -4934,7 +4934,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
|
||||
|
||||
for(me=main->mesh.first; me; me= me->id.next) {
|
||||
if (!me->medge) {
|
||||
make_edges(me);
|
||||
make_edges(me, 1); /* 1 = use mface->edcode */
|
||||
} else {
|
||||
mesh_strip_loose_faces(me);
|
||||
}
|
||||
|
@ -2818,7 +2818,7 @@ static void fill_medge_from_nmesh(Mesh * mesh, BPy_NMesh * nmesh)
|
||||
valid_nmedges=MEM_callocN(nmeshtotedges*sizeof(BPy_NMEdge *), "make BPy_NMEdge");
|
||||
|
||||
/* First compute the list of edges that exists because faces exists */
|
||||
make_edges(mesh);
|
||||
make_edges(mesh, 0); /* 0 = draw all edges */
|
||||
|
||||
faces_edges=mesh->medge;
|
||||
tot_faces_edges=mesh->totedge;
|
||||
|
@ -1029,7 +1029,7 @@ void rad_addmesh(void)
|
||||
}
|
||||
}
|
||||
/* by default, meshes need edge list */
|
||||
make_edges(me);
|
||||
make_edges(me, 0);
|
||||
}
|
||||
|
||||
MEM_freeN(coldata);
|
||||
|
@ -1790,7 +1790,7 @@ static void draw_mesh_object(Base *base, int dt)
|
||||
DerivedMesh *realDM = mesh_get_derived_final(ob, &realDMneedsFree);
|
||||
|
||||
if(dt==OB_SOLID) has_alpha= init_gl_materials(ob);
|
||||
draw_mesh_fancy(ob, baseDM, realDM, dt);
|
||||
if(baseDM && realDM) draw_mesh_fancy(ob, baseDM, realDM, dt);
|
||||
|
||||
if (baseDMneedsFree) baseDM->release(baseDM);
|
||||
if (realDMneedsFree) realDM->release(realDM);
|
||||
|
Loading…
Reference in New Issue
Block a user