diff options
author | Chris Want <cwant@ualberta.ca> | 2004-03-15 00:21:09 +0300 |
---|---|---|
committer | Chris Want <cwant@ualberta.ca> | 2004-03-15 00:21:09 +0300 |
commit | 6c650c586d22a0dc17f4ae9695b0b956713092d9 (patch) | |
tree | 40e817cb37b5c92252f2333ba11727de27e17a93 /source | |
parent | 807db2ea4077cb198c696c65b77a6bab23cacd02 (diff) |
Fixed issues surrounding the increased vertex limit:
* Created a MESH_MAX_VERTS macro in DNA_mesh_types.h
* fixed vert limit for converting displistmesh ==> mesh
* fixed vert limit when doing boolean operations
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/intern/displist.c | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/exotic.c | 23 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_mesh_types.h | 3 | ||||
-rw-r--r-- | source/blender/src/booleanops.c | 2 | ||||
-rw-r--r-- | source/blender/src/editmesh.c | 2 | ||||
-rw-r--r-- | source/blender/src/editobject.c | 2 |
6 files changed, 19 insertions, 15 deletions
diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c index beb0ee06671..45fda288ac3 100644 --- a/source/blender/blenkernel/intern/displist.c +++ b/source/blender/blenkernel/intern/displist.c @@ -262,7 +262,7 @@ void displistmesh_to_mesh(DispListMesh *dlm, Mesh *me) { MFace *mfaces; int i; - if (dlm->totvert>65000) { + if (dlm->totvert>MESH_MAX_VERTS) { error("Too many vertices"); } else { me->totface= dlm->totface; diff --git a/source/blender/blenkernel/intern/exotic.c b/source/blender/blenkernel/intern/exotic.c index 422be9c78c7..e1858198608 100644 --- a/source/blender/blenkernel/intern/exotic.c +++ b/source/blender/blenkernel/intern/exotic.c @@ -158,7 +158,7 @@ static void read_videoscape_mesh(char *str) return; } - if(verts>2000000000L) { + if(verts>MESH_MAX_VERTS) { error("too many vertices"); fclose(fp); return; @@ -202,7 +202,7 @@ static void read_videoscape_mesh(char *str) } } - if(totedge+tottria+totquad>2000000000L) { + if(totedge+tottria+totquad>MESH_MAX_VERTS) { printf(" var1: %d, var2: %d, var3: %d \n", totedge, tottria, totquad); error("too many faces"); MEM_freeN(vertdata); @@ -375,7 +375,7 @@ static void read_radiogour(char *str) return; } - if(verts>2000000000L) { + if(verts>MESH_MAX_VERTS) { error("too many vertices"); fclose(fp); return; @@ -410,7 +410,7 @@ static void read_radiogour(char *str) } - if(totedge+tottria+totquad>2000000000L) { + if(totedge+tottria+totquad>MESH_MAX_VERTS) { printf(" var1: %d, var2: %d, var3: %d \n", totedge, tottria, totquad); error("too many faces"); MEM_freeN(vertdata); @@ -1673,8 +1673,8 @@ static void displist_to_mesh(DispList *dlfirst) if(totvert==0) { return; } - if(totvert>=2000000000L || tottria>=2000000000L) { - if (totvert>=2000000000L) { + if(totvert>MESH_MAX_VERTS || tottria>=MESH_MAX_VERTS) { + if (totvert>=MESH_MAX_VERTS) { error("Too many vertices (%d)", totvert); } else { error("Too many faces (%d)", tottria); @@ -3285,7 +3285,8 @@ static void dxf_read_line(int noob) { /* Check to see if we need to make a new object */ if(!lwasline || strcmp(layname, oldllay)!=0) dxf_close_line(); - if(linemhold != NULL && linemhold->totvert>2000000000L) dxf_close_line(); + if(linemhold != NULL && linemhold->totvert>MESH_MAX_VERTS) + dxf_close_line(); if (linemhold==NULL) { if (noob) { @@ -3433,7 +3434,8 @@ static void dxf_read_polyline(int noob) { if (flag&1) { if(!lwasp2d || strcmp(layname, oldplay)!=0) dxf_close_2dpoly(); - if(p2dmhold != NULL && p2dmhold->totvert>2000000000L) dxf_close_2dpoly(); + if(p2dmhold != NULL && p2dmhold->totvert>MESH_MAX_VERTS) + dxf_close_2dpoly(); if (p2dmhold==NULL) { if (noob) { @@ -3593,7 +3595,7 @@ static void dxf_read_polyline(int noob) { me->totvert++; /* If we are nearing the limit scan to the next entry */ - if(me->totvert > 2000000000L) + if(me->totvert > MESH_MAX_VERTS) while(group_isnt(0, "SEQEND")) read_group(id, val); vtmp= MEM_callocN(me->totvert*sizeof(MVert), "mverts"); @@ -3773,7 +3775,8 @@ static void dxf_read_3dface(int noob) /* Check to see if we need to make a new object */ if(!lwasf3d || strcmp(layname, oldflay)!=0) dxf_close_3dface(); - if(f3dmhold != NULL && f3dmhold->totvert>2000000000L) dxf_close_3dface(); + if(f3dmhold != NULL && f3dmhold->totvert>MESH_MAX_VERTS) + dxf_close_3dface(); if(nverts<3) { error("(3DF) Error parsing dxf, not enough vertices near line %d", dxf_line); diff --git a/source/blender/makesdna/DNA_mesh_types.h b/source/blender/makesdna/DNA_mesh_types.h index ac52a3a6bbc..74f5d388723 100644 --- a/source/blender/makesdna/DNA_mesh_types.h +++ b/source/blender/makesdna/DNA_mesh_types.h @@ -211,5 +211,6 @@ typedef struct Mesh { #define ME_SPHERETEMP 4 #define ME_HIDE 16 -#endif +#define MESH_MAX_VERTS 2000000000L +#endif diff --git a/source/blender/src/booleanops.c b/source/blender/src/booleanops.c index f2ab1825c4d..0c9febd31e9 100644 --- a/source/blender/src/booleanops.c +++ b/source/blender/src/booleanops.c @@ -637,7 +637,7 @@ ConvertCSGDescriptorsToMeshObject( if (face_it == NULL || vertex_it == NULL || props == NULL || me == NULL) { return 0; } - if (vertex_it->num_elements > 65000) return 0; + if (vertex_it->num_elements > MESH_MAX_VERTS) return 0; // initialize the face structure for readback diff --git a/source/blender/src/editmesh.c b/source/blender/src/editmesh.c index 3406eedadf2..bb0f2a79507 100644 --- a/source/blender/src/editmesh.c +++ b/source/blender/src/editmesh.c @@ -7059,7 +7059,7 @@ void join_mesh(void) /* that way the active object is always selected */ if(ok==0) return; - if(totvert==0 || totvert>2000000000L) return; + if(totvert==0 || totvert>MESH_MAX_VERTS) return; if(okee("Join selected Meshes")==0) return; diff --git a/source/blender/src/editobject.c b/source/blender/src/editobject.c index e60efb6aa1e..f850589fadd 100644 --- a/source/blender/src/editobject.c +++ b/source/blender/src/editobject.c @@ -1070,7 +1070,7 @@ void exit_editmode(int freedata) /* freedata==0 at render */ /* temporal */ countall(); - if(G.totvert>2000000000L) { + if(G.totvert>MESH_MAX_VERTS) { error("too many vertices"); return; } |