diff options
author | Daniel Dunbar <daniel@zuster.org> | 2005-07-18 01:48:23 +0400 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2005-07-18 01:48:23 +0400 |
commit | c6a72088a2cbd1a98104a1c764bb522140c580c4 (patch) | |
tree | 56c7d78cf0b9bc030f2f5822387f996678439003 /source/blender/blenkernel/intern/exotic.c | |
parent | dfe15f57e8ade9456eff5797a485344f26ff075b (diff) |
- convert write_object_stl to use mesh_get_derived_final
Diffstat (limited to 'source/blender/blenkernel/intern/exotic.c')
-rw-r--r-- | source/blender/blenkernel/intern/exotic.c | 51 |
1 files changed, 6 insertions, 45 deletions
diff --git a/source/blender/blenkernel/intern/exotic.c b/source/blender/blenkernel/intern/exotic.c index 4c0d1ede445..25e3e833e32 100644 --- a/source/blender/blenkernel/intern/exotic.c +++ b/source/blender/blenkernel/intern/exotic.c @@ -2476,42 +2476,6 @@ char videosc_dir[160]= {0, 0}; fwrite(vert, sizeof(float), 3, fpSTL); \ } -static int write_mesh_stl(FILE *fpSTL, Object *ob, Mesh *me) -{ - MVert *mvert; - MFace *mface; - int i, numfacets = 0; - float zero[3] = {0.0f, 0.0f, 0.0f}; - float vert[3]; - - mvert = me->mvert; - mface = me->mface; - - for (i=0; i<me->totface; i++) { - - if (mface->v4 || mface->v3) { - fwrite(zero, sizeof(float), 3, fpSTL); /* <-- v. normal lazy */ - WRITEVERT(mvert, mface->v1); - WRITEVERT(mvert, mface->v2); - WRITEVERT(mvert, mface->v3); - fprintf(fpSTL, " "); /* <-- spec puts 2 spaces after facet */ - numfacets++; - - if(mface->v4) { /* quad = 2 tri's */ - fwrite(zero, sizeof(float), 3, fpSTL); - WRITEVERT(mvert, mface->v1); - WRITEVERT(mvert, mface->v3); - WRITEVERT(mvert, mface->v4); - fprintf(fpSTL, " "); - numfacets++; - } - } - mface++; - } - - return numfacets; -} - static int write_displistmesh_stl(FILE *fpSTL, Object *ob, DispListMesh *dlm) { @@ -2546,18 +2510,15 @@ static int write_displistmesh_stl(FILE *fpSTL, Object *ob, DispListMesh *dlm) static int write_object_stl(FILE *fpSTL, Object *ob, Mesh *me) { int numfacets = 0; + int dmNeedsFree; + DerivedMesh *dm = mesh_get_derived_final(ob, &dmNeedsFree); + DispListMesh *dlm = dm->convertToDispListMesh(dm); - if(mesh_uses_displist(me)) { - DerivedMesh *dm = mesh_get_derived(ob); - DispListMesh *dlm = dm->convertToDispListMesh(dm); + numfacets += write_displistmesh_stl(fpSTL, ob, dlm); - numfacets += write_displistmesh_stl(fpSTL, ob, dlm); + displistmesh_free(dlm); + if (dmNeedsFree) dm->release(dm); - displistmesh_free(dlm); - } - else { - numfacets += write_mesh_stl(fpSTL, ob, me); - } return numfacets; } |