All pastes #1226564 Raw Edit

Jolan

public text v1 · immutable
#1226564 ·published 2008-10-14 05:32 UTC
rendered paste body
Index: 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);