rendered paste bodyIndex: contrib/vmap_extractor_v2/vmapextract/model.cpp
===================================================================
--- contrib/vmap_extractor_v2/vmapextract/model.cpp (revision 6766)
+++ contrib/vmap_extractor_v2/vmapextract/model.cpp (working copy)
@@ -34,31 +34,25 @@
return false;
}
#endif
- trans = 1.0f;
- origVertices = (ModelVertex*)(f.getBuffer() + header.ofsVertices);
+
+ origBoundingVertices = (BoundingVertex*)(f.getBuffer() + header.ofsBoundingVertices);
+ boundingVertices = new Vec3D[header.nBoundingVertices];
- vertices = new Vec3D[header.nVertices];
- normals = new Vec3D[header.nVertices];
-
- for (size_t i=0; i<header.nVertices; i++)
+ for (size_t i=0; i<header.nBoundingVertices; i++)
{
- origVertices[i].pos = fixCoordSystem(origVertices[i].pos);
- origVertices[i].normal = fixCoordSystem(origVertices[i].normal);
- vertices[i] = origVertices[i].pos;
- normals[i] = origVertices[i].normal.normalize();
- }
+ origBoundingVertices[i].pos = fixCoordSystem(origBoundingVertices[i].pos);
+ boundingVertices[i] = origBoundingVertices[i].pos;
+ }
- ModelView *view = (ModelView*)(f.getBuffer() + header.ofsViews);
+ uint16 *triangles = (uint16*)(f.getBuffer() + header.ofsBoundingTriangles);
- uint16 *indexLookup = (uint16*)(f.getBuffer() + view->ofsIndex);
- uint16 *triangles = (uint16*)(f.getBuffer() + view->ofsTris);
-
- nIndices = view->nTris;
- indices = new uint16[nIndices];
- for (size_t i = 0; i<nIndices; i++)
+ nBoundingIndices = header.nBoundingTriangles;
+ boundingIndices = new uint16[nBoundingIndices];
+ for (size_t i = 0; i<nBoundingIndices; i++)
{
- indices[i] = indexLookup[triangles[i]];
+ boundingIndices[i] = triangles[i];
}
+
f.close();
} else {
//printf("not included %s\n", filename.c_str());
@@ -151,8 +145,8 @@
return false;
}
fwrite("VMAP002",8,1,output);
- int nVertices = header.nVertices;
- fwrite(&nVertices, sizeof(int), 1, output);
+ int nBoundingVertices = header.nBoundingVertices;
+ fwrite(&nBoundingVertices, sizeof(int), 1, output);
uint32 nofgroups = 1;
fwrite(&nofgroups,sizeof(uint32), 1, output);
fwrite(N,4,1,output);
@@ -162,29 +156,29 @@
wsize = sizeof(branches) + sizeof(uint32) * branches;
fwrite(&wsize, sizeof(int), 1, output);
fwrite(&branches,sizeof(branches), 1, output);
- uint32 nIdexes = (uint32) nIndices;
- fwrite(&nIndices,sizeof(uint32), 1, output);
+ uint32 nBoundingIdexes = (uint32) nBoundingIndices;
+ fwrite(&nBoundingIndices,sizeof(uint32), 1, output);
fwrite("INDX",4, 1, output);
- wsize = sizeof(uint32) + sizeof(unsigned short) * nIdexes;
+ wsize = sizeof(uint32) + sizeof(unsigned short) * nBoundingIdexes;
fwrite(&wsize, sizeof(int), 1, output);
- fwrite(&nIdexes, sizeof(uint32), 1, output);
- if(nIdexes >0)
+ fwrite(&nBoundingIdexes, sizeof(uint32), 1, output);
+ if(nBoundingIdexes >0)
{
- fwrite(indices, sizeof(unsigned short), nIdexes, output);
+ fwrite(boundingIndices, sizeof(unsigned short), nBoundingIdexes, output);
}
fwrite("VERT",4, 1, output);
- wsize = sizeof(int) + sizeof(float) * 3 * nVertices;
+ wsize = sizeof(int) + sizeof(float) * 3 * nBoundingVertices;
fwrite(&wsize, sizeof(int), 1, output);
- fwrite(&nVertices, sizeof(int), 1, output);
- if(nVertices >0)
+ fwrite(&nBoundingVertices, sizeof(int), 1, output);
+ if(nBoundingVertices >0)
{
- for(int vpos=0; vpos <nVertices; ++vpos)
+ for(int vpos=0; vpos <nBoundingVertices; ++vpos)
{
- float sy = vertices[vpos].y;
- vertices[vpos].y = vertices[vpos].z;
- vertices[vpos].z = sy;
+ float sy = boundingVertices[vpos].y;
+ boundingVertices[vpos].y = boundingVertices[vpos].z;
+ boundingVertices[vpos].z = sy;
}
- fwrite(vertices, sizeof(float)*3, nVertices, output);
+ fwrite(boundingVertices, sizeof(float)*3, nBoundingVertices, output);
}
delete[] vertices;
@@ -193,7 +187,7 @@
fclose(output);
- return true;
+ return true;
}
Model::~Model()
Index: contrib/vmap_extractor_v2/vmapextract/modelheaders.h
===================================================================
--- contrib/vmap_extractor_v2/vmapextract/modelheaders.h (revision 6766)
+++ contrib/vmap_extractor_v2/vmapextract/modelheaders.h (working copy)
@@ -153,6 +153,13 @@
int unk1, unk2; // always 0,0 so this is probably unused
};
+struct BoundingVertex {
+ Vec3D pos;
+};
+struct BoundingTriangle {
+ Vec3D pos;
+};
+
struct ModelView {
uint32 nIndex, ofsIndex; // Vertices in this model (index into vertices[])
uint32 nTris, ofsTris; // indices
Index: contrib/vmap_extractor_v2/vmapextract/model.h
===================================================================
--- contrib/vmap_extractor_v2/vmapextract/model.h (revision 6766)
+++ contrib/vmap_extractor_v2/vmapextract/model.h (working copy)
@@ -28,9 +28,10 @@
bool isAnimated(MPQFile &f);
ModelVertex *origVertices;
- Vec3D *vertices, *normals;
- uint16 *indices;
- size_t nIndices;
+ BoundingVertex *origBoundingVertices;
+ Vec3D *vertices, *normals, *boundingVertices;
+ uint16 *indices, *boundingIndices;
+ size_t nIndices, nBoundingIndices;
bool open();
bool ConvertToVMAPModel(char * outfilename);