From 63236295250afe6cbe5ac3b623a3407cb08bccb0 Mon Sep 17 00:00:00 2001
From: Amorilia <amorilia@users.sourceforge.net>
Date: Sun, 28 May 2006 19:02:09 +0000
Subject: [PATCH] Added dirty hack: numVertices always declared.

---
 obj/APSysData.cpp |  63 +------------------
 xml_extract.h     | 151 +++++++++++++++++++---------------------------
 2 files changed, 65 insertions(+), 149 deletions(-)

diff --git a/obj/APSysData.cpp b/obj/APSysData.cpp
index e33b4e37..b26c395e 100644
--- a/obj/APSysData.cpp
+++ b/obj/APSysData.cpp
@@ -11,70 +11,13 @@ APSysData::APSysData() A_P_SYS_DATA_CONSTRUCT {}
 APSysData::~APSysData() {}
 
 void APSysData::Read( istream& in, list<uint> link_stack, unsigned int version ) {
-	//A_P_SYS_DATA_READ
-TriBasedGeomData::Read( in, link_stack, version ); \
-ushort numVertices = ushort(vertices.size());
-NifStream( hasUnknownFloats1, in, version ); \
-if ( hasUnknownFloats1 != 0 ) { \
-  unknownFloats1.resize(numVertices); \
-  for (uint i1 = 0; i1 < numVertices; i1++) { \
-    NifStream( unknownFloats1[i1], in, version ); \
-  }; \
-}; \
-NifStream( unknownShort3, in, version ); \
-NifStream( hasUnknownFloats2, in, version ); \
-if ( hasUnknownFloats2 != 0 ) { \
-  unknownFloats2.resize(numVertices); \
-  for (uint i1 = 0; i1 < numVertices; i1++) { \
-    NifStream( unknownFloats2[i1], in, version ); \
-  }; \
-}; \
-NifStream( unknownByte1, in, version ); \
-}
-
-void APSysData::Write( ostream& out, map<NiObjectRef,uint> link_map, unsigned int version ) const {
-	//A_P_SYS_DATA_WRITE
-TriBasedGeomData::Write( out, link_map, version ); \
-ushort numVertices = ushort(vertices.size());
-NifStream( hasUnknownFloats1, out, version ); \
-if ( hasUnknownFloats1 != 0 ) { \
-  for (uint i1 = 0; i1 < numVertices; i1++) { \
-    NifStream( unknownFloats1[i1], out, version ); \
-  }; \
-}; \
-NifStream( unknownShort3, out, version ); \
-NifStream( hasUnknownFloats2, out, version ); \
-if ( hasUnknownFloats2 != 0 ) { \
-  for (uint i1 = 0; i1 < numVertices; i1++) { \
-    NifStream( unknownFloats2[i1], out, version ); \
-  }; \
-}; \
-NifStream( unknownByte1, out, version ); \
+	A_P_SYS_DATA_READ
 }
 
 string APSysData::asString( bool verbose ) const {
-	//A_P_SYS_DATA_STRING
-ushort numVertices = ushort(vertices.size());
-stringstream out; \
-out << TriBasedGeomData::asString(); \
-out << "Has Unknown Floats 1:  " << hasUnknownFloats1 << endl; \
-if ( hasUnknownFloats1 != 0 ) { \
-  for (uint i1 = 0; i1 < numVertices; i1++) { \
-    out << "    Unknown Floats 1[" << i1 << "]:  " << unknownFloats1[i1] << endl; \
-  }; \
-}; \
-out << "Unknown Short 3:  " << unknownShort3 << endl; \
-out << "Has Unknown Floats 2:  " << hasUnknownFloats2 << endl; \
-if ( hasUnknownFloats2 != 0 ) { \
-  for (uint i1 = 0; i1 < numVertices; i1++) { \
-    out << "    Unknown Floats 2[" << i1 << "]:  " << unknownFloats2[i1] << endl; \
-  }; \
-}; \
-out << "Unknown Byte 1:  " << unknownByte1 << endl; \
-return out.str(); \
+	A_P_SYS_DATA_STRING
 }
 
 void APSysData::FixLinks( const vector<NiObjectRef> & objects, list<uint> link_stack, unsigned int version ) {
-	//A_P_SYS_DATA_FIXLINKS // no links
+	A_P_SYS_DATA_FIXLINKS
 }
-
diff --git a/xml_extract.h b/xml_extract.h
index 7246f555..e79e700e 100644
--- a/xml_extract.h
+++ b/xml_extract.h
@@ -324,6 +324,10 @@ struct LODRange {
  * Group of vertex indices of vertices that match.
  */
 struct MatchGroup {
+  /*!
+   * Number of vertices in this group.
+   */
+  ushort numVertices;
   /*!
    * The vertex indices.
    */
@@ -938,6 +942,10 @@ struct TexSource {
  * NiSkinPartition.
  */
 struct SkinPartition {
+  /*!
+   * Number of vertices in this submesh.
+   */
+  ushort numVertices;
   /*!
    * Number of strips in this submesh (zero if not stripped).
    */
@@ -1133,6 +1141,10 @@ struct SkinData {
    * 4 floats may be misleading.
    */
   vector<float > unknown4Floats;
+  /*!
+   * Number of weighted vertices.
+   */
+  ushort numVertices;
   /*!
    * The vertex weights.
    */
@@ -2473,6 +2485,7 @@ if ( version >= 0x0A000100 ) { \
 
 #define TRI_BASED_GEOM_DATA_MEMBERS \
 string name; \
+ushort numVertices; \
 ushort unknownShort1; \
 bool hasVertices; \
 vector<Vector3 > vertices; \
@@ -2499,7 +2512,6 @@ Ref<NiObject > unknownLink; \
 #define TRI_BASED_GEOM_DATA_READ \
 uint block_num; \
 NiObject::Read( in, link_stack, version ); \
-ushort numVertices; \
 Vector3 center; \
 float radius; \
 ushort numUvSets; \
@@ -2583,8 +2595,6 @@ if ( version >= 0x14000004 ) { \
 
 #define TRI_BASED_GEOM_DATA_WRITE \
 NiObject::Write( out, link_map, version ); \
-ushort numVertices; \
-numVertices = ushort(vertices.size()); \
 Vector3 center; \
 center = Center(); \
 float radius; \
@@ -2660,8 +2670,6 @@ if ( version >= 0x14000004 ) { \
 #define TRI_BASED_GEOM_DATA_STRING \
 stringstream out; \
 out << NiObject::asString(); \
-ushort numVertices; \
-numVertices = ushort(vertices.size()); \
 Vector3 center; \
 center = Center(); \
 float radius; \
@@ -2719,8 +2727,6 @@ return out.str(); \
 
 #define TRI_BASED_GEOM_DATA_FIXLINKS \
 NiObject::FixLinks( objects, link_stack, version ); \
-ushort numVertices; \
-numVertices = ushort(vertices.size()); \
 Vector3 center; \
 center = Center(); \
 float radius; \
@@ -4394,6 +4400,7 @@ NiExtraData::FixLinks( objects, link_stack, version ); \
 
 #define HK_PACKED_NI_TRI_STRIPS_DATA_MEMBERS \
 vector<hkTriangle > triangles; \
+uint numVertices; \
 vector<Vector3 > vertices; \
 
 #define HK_PACKED_NI_TRI_STRIPS_DATA_INCLUDE "AbhkShapeCollection.h" \
@@ -4405,7 +4412,6 @@ vector<Vector3 > vertices; \
 #define HK_PACKED_NI_TRI_STRIPS_DATA_READ \
 AbhkShapeCollection::Read( in, link_stack, version ); \
 uint numTriangles; \
-uint numVertices; \
 NifStream( numTriangles, in, version ); \
 triangles.resize(numTriangles); \
 for (uint i0 = 0; i0 < numTriangles; i0++) { \
@@ -4423,8 +4429,6 @@ for (uint i0 = 0; i0 < numVertices; i0++) { \
 AbhkShapeCollection::Write( out, link_map, version ); \
 uint numTriangles; \
 numTriangles = uint(triangles.size()); \
-uint numVertices; \
-numVertices = uint(vertices.size()); \
 NifStream( numTriangles, out, version ); \
 for (uint i0 = 0; i0 < numTriangles; i0++) { \
   NifStream( triangles[i0].triangle, out, version ); \
@@ -4441,8 +4445,6 @@ stringstream out; \
 out << AbhkShapeCollection::asString(); \
 uint numTriangles; \
 numTriangles = uint(triangles.size()); \
-uint numVertices; \
-numVertices = uint(vertices.size()); \
 out << "Num Triangles:  " << numTriangles << endl; \
 for (uint i0 = 0; i0 < numTriangles; i0++) { \
   out << "  Triangle:  " << triangles[i0].triangle << endl; \
@@ -4459,8 +4461,6 @@ return out.str(); \
 AbhkShapeCollection::FixLinks( objects, link_stack, version ); \
 uint numTriangles; \
 numTriangles = uint(triangles.size()); \
-uint numVertices; \
-numVertices = uint(vertices.size()); \
 for (uint i0 = 0; i0 < numTriangles; i0++) { \
 }; \
 for (uint i0 = 0; i0 < numVertices; i0++) { \
@@ -10698,7 +10698,6 @@ if ( version >= 0x04020100 ) { \
 }; \
 boneList.resize(numBones); \
 for (uint i0 = 0; i0 < numBones; i0++) { \
-  ushort boneList_numVertices; \
   NifStream( boneList[i0].rotation, in, version ); \
   NifStream( boneList[i0].translation, in, version ); \
   NifStream( boneList[i0].scale, in, version ); \
@@ -10706,9 +10705,9 @@ for (uint i0 = 0; i0 < numBones; i0++) { \
   for (uint i1 = 0; i1 < 4; i1++) { \
     NifStream( boneList[i0].unknown4Floats[i1], in, version ); \
   }; \
-  NifStream( boneList_numVertices, in, version ); \
-  boneList[i0].vertexWeights.resize(boneList_numVertices); \
-  for (uint i1 = 0; i1 < boneList_numVertices; i1++) { \
+  NifStream( boneList[i0].numVertices, in, version ); \
+  boneList[i0].vertexWeights.resize(boneList[i0].numVertices); \
+  for (uint i1 = 0; i1 < boneList[i0].numVertices; i1++) { \
     NifStream( boneList[i0].vertexWeights[i1].index, in, version ); \
     NifStream( boneList[i0].vertexWeights[i1].weight, in, version ); \
   }; \
@@ -10729,16 +10728,14 @@ if ( version >= 0x04020100 ) { \
   NifStream( unknownByte, out, version ); \
 }; \
 for (uint i0 = 0; i0 < numBones; i0++) { \
-  ushort boneList_numVertices; \
-  boneList_numVertices = ushort(boneList[i0].vertexWeights.size()); \
   NifStream( boneList[i0].rotation, out, version ); \
   NifStream( boneList[i0].translation, out, version ); \
   NifStream( boneList[i0].scale, out, version ); \
   for (uint i1 = 0; i1 < 4; i1++) { \
     NifStream( boneList[i0].unknown4Floats[i1], out, version ); \
   }; \
-  NifStream( boneList_numVertices, out, version ); \
-  for (uint i1 = 0; i1 < boneList_numVertices; i1++) { \
+  NifStream( boneList[i0].numVertices, out, version ); \
+  for (uint i1 = 0; i1 < boneList[i0].numVertices; i1++) { \
     NifStream( boneList[i0].vertexWeights[i1].index, out, version ); \
     NifStream( boneList[i0].vertexWeights[i1].weight, out, version ); \
   }; \
@@ -10756,16 +10753,14 @@ out << "Num Bones:  " << numBones << endl; \
 out << "Skin Partition:  " << skinPartition << endl; \
 out << "Unknown Byte:  " << unknownByte << endl; \
 for (uint i0 = 0; i0 < numBones; i0++) { \
-  ushort boneList_numVertices; \
-  boneList_numVertices = ushort(boneList[i0].vertexWeights.size()); \
   out << "  Rotation:  " << boneList[i0].rotation << endl; \
   out << "  Translation:  " << boneList[i0].translation << endl; \
   out << "  Scale:  " << boneList[i0].scale << endl; \
   for (uint i1 = 0; i1 < 4; i1++) { \
     out << "    Unknown 4 Floats[" << i1 << "]:  " << boneList[i0].unknown4Floats[i1] << endl; \
   }; \
-  out << "  Num Vertices:  " << boneList_numVertices << endl; \
-  for (uint i1 = 0; i1 < boneList_numVertices; i1++) { \
+  out << "  Num Vertices:  " << boneList[i0].numVertices << endl; \
+  for (uint i1 = 0; i1 < boneList[i0].numVertices; i1++) { \
     out << "    Index:  " << boneList[i0].vertexWeights[i1].index << endl; \
     out << "    Weight:  " << boneList[i0].vertexWeights[i1].weight << endl; \
   }; \
@@ -10783,11 +10778,9 @@ if ( version <= 0x0A010000 ) { \
 if ( version >= 0x04020100 ) { \
 }; \
 for (uint i0 = 0; i0 < numBones; i0++) { \
-  ushort boneList_numVertices; \
-  boneList_numVertices = ushort(boneList[i0].vertexWeights.size()); \
   for (uint i1 = 0; i1 < 4; i1++) { \
   }; \
-  for (uint i1 = 0; i1 < boneList_numVertices; i1++) { \
+  for (uint i1 = 0; i1 < boneList[i0].numVertices; i1++) { \
   }; \
 }; \
 
@@ -10888,12 +10881,11 @@ uint numSkinPartitionBlocks; \
 NifStream( numSkinPartitionBlocks, in, version ); \
 skinPartitionBlocks.resize(numSkinPartitionBlocks); \
 for (uint i0 = 0; i0 < numSkinPartitionBlocks; i0++) { \
-  ushort skinPartitionBlocks_numVertices; \
   ushort skinPartitionBlocks_numTriangles; \
   ushort skinPartitionBlocks_numBones; \
   ushort skinPartitionBlocks_numWeightsPerVertex; \
   vector<ushort > skinPartitionBlocks_stripLengths; \
-  NifStream( skinPartitionBlocks_numVertices, in, version ); \
+  NifStream( skinPartitionBlocks[i0].numVertices, in, version ); \
   NifStream( skinPartitionBlocks_numTriangles, in, version ); \
   NifStream( skinPartitionBlocks_numBones, in, version ); \
   NifStream( skinPartitionBlocks[i0].numStrips, in, version ); \
@@ -10906,25 +10898,25 @@ for (uint i0 = 0; i0 < numSkinPartitionBlocks; i0++) { \
     NifStream( skinPartitionBlocks[i0].hasVertexMap, in, version ); \
   }; \
   if ( version <= 0x0A000102 ) { \
-    skinPartitionBlocks[i0].vertexMap.resize(skinPartitionBlocks_numVertices); \
-    for (uint i2 = 0; i2 < skinPartitionBlocks_numVertices; i2++) { \
+    skinPartitionBlocks[i0].vertexMap.resize(skinPartitionBlocks[i0].numVertices); \
+    for (uint i2 = 0; i2 < skinPartitionBlocks[i0].numVertices; i2++) { \
       NifStream( skinPartitionBlocks[i0].vertexMap[i2], in, version ); \
     }; \
   }; \
   if ( version >= 0x0A010000 ) { \
     if ( skinPartitionBlocks[i0].hasVertexMap != 0 ) { \
-      skinPartitionBlocks[i0].vertexMap.resize(skinPartitionBlocks_numVertices); \
-      for (uint i3 = 0; i3 < skinPartitionBlocks_numVertices; i3++) { \
+      skinPartitionBlocks[i0].vertexMap.resize(skinPartitionBlocks[i0].numVertices); \
+      for (uint i3 = 0; i3 < skinPartitionBlocks[i0].numVertices; i3++) { \
         NifStream( skinPartitionBlocks[i0].vertexMap[i3], in, version ); \
       }; \
     }; \
     NifStream( skinPartitionBlocks[i0].hasVertexWeights, in, version ); \
   }; \
   if ( version <= 0x0A000102 ) { \
-    skinPartitionBlocks[i0].vertexWeights.resize(skinPartitionBlocks_numVertices); \
-    for (uint i2 = 0; i2 < skinPartitionBlocks_numVertices; i2++) \
+    skinPartitionBlocks[i0].vertexWeights.resize(skinPartitionBlocks[i0].numVertices); \
+    for (uint i2 = 0; i2 < skinPartitionBlocks[i0].numVertices; i2++) \
       skinPartitionBlocks[i0].vertexWeights[i2].resize(skinPartitionBlocks_numWeightsPerVertex); \
-    for (uint i2 = 0; i2 < skinPartitionBlocks_numVertices; i2++) { \
+    for (uint i2 = 0; i2 < skinPartitionBlocks[i0].numVertices; i2++) { \
       for (uint i3 = 0; i3 < skinPartitionBlocks_numWeightsPerVertex; i3++) { \
         NifStream( skinPartitionBlocks[i0].vertexWeights[i2][i3], in, version ); \
       }; \
@@ -10932,10 +10924,10 @@ for (uint i0 = 0; i0 < numSkinPartitionBlocks; i0++) { \
   }; \
   if ( version >= 0x0A010000 ) { \
     if ( skinPartitionBlocks[i0].hasVertexWeights != 0 ) { \
-      skinPartitionBlocks[i0].vertexWeights.resize(skinPartitionBlocks_numVertices); \
-      for (uint i3 = 0; i3 < skinPartitionBlocks_numVertices; i3++) \
+      skinPartitionBlocks[i0].vertexWeights.resize(skinPartitionBlocks[i0].numVertices); \
+      for (uint i3 = 0; i3 < skinPartitionBlocks[i0].numVertices; i3++) \
         skinPartitionBlocks[i0].vertexWeights[i3].resize(skinPartitionBlocks_numWeightsPerVertex); \
-      for (uint i3 = 0; i3 < skinPartitionBlocks_numVertices; i3++) { \
+      for (uint i3 = 0; i3 < skinPartitionBlocks[i0].numVertices; i3++) { \
         for (uint i4 = 0; i4 < skinPartitionBlocks_numWeightsPerVertex; i4++) { \
           NifStream( skinPartitionBlocks[i0].vertexWeights[i3][i4], in, version ); \
         }; \
@@ -10979,10 +10971,10 @@ for (uint i0 = 0; i0 < numSkinPartitionBlocks; i0++) { \
   }; \
   NifStream( skinPartitionBlocks[i0].hasBoneIndices, in, version ); \
   if ( skinPartitionBlocks[i0].hasBoneIndices != 0 ) { \
-    skinPartitionBlocks[i0].boneIndices.resize(skinPartitionBlocks_numVertices); \
-    for (uint i2 = 0; i2 < skinPartitionBlocks_numVertices; i2++) \
+    skinPartitionBlocks[i0].boneIndices.resize(skinPartitionBlocks[i0].numVertices); \
+    for (uint i2 = 0; i2 < skinPartitionBlocks[i0].numVertices; i2++) \
       skinPartitionBlocks[i0].boneIndices[i2].resize(skinPartitionBlocks_numWeightsPerVertex); \
-    for (uint i2 = 0; i2 < skinPartitionBlocks_numVertices; i2++) { \
+    for (uint i2 = 0; i2 < skinPartitionBlocks[i0].numVertices; i2++) { \
       for (uint i3 = 0; i3 < skinPartitionBlocks_numWeightsPerVertex; i3++) { \
         NifStream( skinPartitionBlocks[i0].boneIndices[i2][i3], in, version ); \
       }; \
@@ -10996,8 +10988,6 @@ uint numSkinPartitionBlocks; \
 numSkinPartitionBlocks = uint(skinPartitionBlocks.size()); \
 NifStream( numSkinPartitionBlocks, out, version ); \
 for (uint i0 = 0; i0 < numSkinPartitionBlocks; i0++) { \
-  ushort skinPartitionBlocks_numVertices; \
-  skinPartitionBlocks_numVertices = ushort(skinPartitionBlocks[i0].vertexMap.size()); \
   ushort skinPartitionBlocks_numTriangles; \
   skinPartitionBlocks_numTriangles = ushort(skinPartitionBlocks[i0].triangles.size()); \
   ushort skinPartitionBlocks_numBones; \
@@ -11008,7 +10998,7 @@ for (uint i0 = 0; i0 < numSkinPartitionBlocks; i0++) { \
   skinPartitionBlocks_stripLengths.resize(skinPartitionBlocks[i0].strips.size()); \
   for (uint i1 = 0; i < skinPartitionBlocks[i0].strips.size(); i++) \
     skinPartitionBlocks_stripLengths[i1] = ushort(skinPartitionBlocks[i0].strips[i1].size()); \
-  NifStream( skinPartitionBlocks_numVertices, out, version ); \
+  NifStream( skinPartitionBlocks[i0].numVertices, out, version ); \
   NifStream( skinPartitionBlocks_numTriangles, out, version ); \
   NifStream( skinPartitionBlocks_numBones, out, version ); \
   NifStream( skinPartitionBlocks[i0].numStrips, out, version ); \
@@ -11020,20 +11010,20 @@ for (uint i0 = 0; i0 < numSkinPartitionBlocks; i0++) { \
     NifStream( skinPartitionBlocks[i0].hasVertexMap, out, version ); \
   }; \
   if ( version <= 0x0A000102 ) { \
-    for (uint i2 = 0; i2 < skinPartitionBlocks_numVertices; i2++) { \
+    for (uint i2 = 0; i2 < skinPartitionBlocks[i0].numVertices; i2++) { \
       NifStream( skinPartitionBlocks[i0].vertexMap[i2], out, version ); \
     }; \
   }; \
   if ( version >= 0x0A010000 ) { \
     if ( skinPartitionBlocks[i0].hasVertexMap != 0 ) { \
-      for (uint i3 = 0; i3 < skinPartitionBlocks_numVertices; i3++) { \
+      for (uint i3 = 0; i3 < skinPartitionBlocks[i0].numVertices; i3++) { \
         NifStream( skinPartitionBlocks[i0].vertexMap[i3], out, version ); \
       }; \
     }; \
     NifStream( skinPartitionBlocks[i0].hasVertexWeights, out, version ); \
   }; \
   if ( version <= 0x0A000102 ) { \
-    for (uint i2 = 0; i2 < skinPartitionBlocks_numVertices; i2++) { \
+    for (uint i2 = 0; i2 < skinPartitionBlocks[i0].numVertices; i2++) { \
       for (uint i3 = 0; i3 < skinPartitionBlocks_numWeightsPerVertex; i3++) { \
         NifStream( skinPartitionBlocks[i0].vertexWeights[i2][i3], out, version ); \
       }; \
@@ -11041,7 +11031,7 @@ for (uint i0 = 0; i0 < numSkinPartitionBlocks; i0++) { \
   }; \
   if ( version >= 0x0A010000 ) { \
     if ( skinPartitionBlocks[i0].hasVertexWeights != 0 ) { \
-      for (uint i3 = 0; i3 < skinPartitionBlocks_numVertices; i3++) { \
+      for (uint i3 = 0; i3 < skinPartitionBlocks[i0].numVertices; i3++) { \
         for (uint i4 = 0; i4 < skinPartitionBlocks_numWeightsPerVertex; i4++) { \
           NifStream( skinPartitionBlocks[i0].vertexWeights[i3][i4], out, version ); \
         }; \
@@ -11077,7 +11067,7 @@ for (uint i0 = 0; i0 < numSkinPartitionBlocks; i0++) { \
   }; \
   NifStream( skinPartitionBlocks[i0].hasBoneIndices, out, version ); \
   if ( skinPartitionBlocks[i0].hasBoneIndices != 0 ) { \
-    for (uint i2 = 0; i2 < skinPartitionBlocks_numVertices; i2++) { \
+    for (uint i2 = 0; i2 < skinPartitionBlocks[i0].numVertices; i2++) { \
       for (uint i3 = 0; i3 < skinPartitionBlocks_numWeightsPerVertex; i3++) { \
         NifStream( skinPartitionBlocks[i0].boneIndices[i2][i3], out, version ); \
       }; \
@@ -11092,8 +11082,6 @@ uint numSkinPartitionBlocks; \
 numSkinPartitionBlocks = uint(skinPartitionBlocks.size()); \
 out << "Num Skin Partition Blocks:  " << numSkinPartitionBlocks << endl; \
 for (uint i0 = 0; i0 < numSkinPartitionBlocks; i0++) { \
-  ushort skinPartitionBlocks_numVertices; \
-  skinPartitionBlocks_numVertices = ushort(skinPartitionBlocks[i0].vertexMap.size()); \
   ushort skinPartitionBlocks_numTriangles; \
   skinPartitionBlocks_numTriangles = ushort(skinPartitionBlocks[i0].triangles.size()); \
   ushort skinPartitionBlocks_numBones; \
@@ -11104,7 +11092,7 @@ for (uint i0 = 0; i0 < numSkinPartitionBlocks; i0++) { \
   skinPartitionBlocks_stripLengths.resize(skinPartitionBlocks[i0].strips.size()); \
   for (uint i1 = 0; i < skinPartitionBlocks[i0].strips.size(); i++) \
     skinPartitionBlocks_stripLengths[i1] = ushort(skinPartitionBlocks[i0].strips[i1].size()); \
-  out << "  Num Vertices:  " << skinPartitionBlocks_numVertices << endl; \
+  out << "  Num Vertices:  " << skinPartitionBlocks[i0].numVertices << endl; \
   out << "  Num Triangles:  " << skinPartitionBlocks_numTriangles << endl; \
   out << "  Num Bones:  " << skinPartitionBlocks_numBones << endl; \
   out << "  Num Strips:  " << skinPartitionBlocks[i0].numStrips << endl; \
@@ -11113,22 +11101,22 @@ for (uint i0 = 0; i0 < numSkinPartitionBlocks; i0++) { \
     out << "    Bones[" << i1 << "]:  " << skinPartitionBlocks[i0].bones[i1] << endl; \
   }; \
   out << "  Has Vertex Map:  " << skinPartitionBlocks[i0].hasVertexMap << endl; \
-  for (uint i1 = 0; i1 < skinPartitionBlocks_numVertices; i1++) { \
+  for (uint i1 = 0; i1 < skinPartitionBlocks[i0].numVertices; i1++) { \
     out << "    Vertex Map[" << i1 << "]:  " << skinPartitionBlocks[i0].vertexMap[i1] << endl; \
   }; \
   if ( skinPartitionBlocks[i0].hasVertexMap != 0 ) { \
-    for (uint i2 = 0; i2 < skinPartitionBlocks_numVertices; i2++) { \
+    for (uint i2 = 0; i2 < skinPartitionBlocks[i0].numVertices; i2++) { \
       out << "      Vertex Map[" << i2 << "]:  " << skinPartitionBlocks[i0].vertexMap[i2] << endl; \
     }; \
   }; \
   out << "  Has Vertex Weights:  " << skinPartitionBlocks[i0].hasVertexWeights << endl; \
-  for (uint i1 = 0; i1 < skinPartitionBlocks_numVertices; i1++) { \
+  for (uint i1 = 0; i1 < skinPartitionBlocks[i0].numVertices; i1++) { \
     for (uint i2 = 0; i2 < skinPartitionBlocks_numWeightsPerVertex; i2++) { \
       out << "      Vertex Weights[" << i1 << "][" << i2 << "]:  " << skinPartitionBlocks[i0].vertexWeights[i1][i2] << endl; \
     }; \
   }; \
   if ( skinPartitionBlocks[i0].hasVertexWeights != 0 ) { \
-    for (uint i2 = 0; i2 < skinPartitionBlocks_numVertices; i2++) { \
+    for (uint i2 = 0; i2 < skinPartitionBlocks[i0].numVertices; i2++) { \
       for (uint i3 = 0; i3 < skinPartitionBlocks_numWeightsPerVertex; i3++) { \
         out << "        Vertex Weights[" << i2 << "][" << i3 << "]:  " << skinPartitionBlocks[i0].vertexWeights[i2][i3] << endl; \
       }; \
@@ -11157,7 +11145,7 @@ for (uint i0 = 0; i0 < numSkinPartitionBlocks; i0++) { \
   }; \
   out << "  Has Bone Indices:  " << skinPartitionBlocks[i0].hasBoneIndices << endl; \
   if ( skinPartitionBlocks[i0].hasBoneIndices != 0 ) { \
-    for (uint i2 = 0; i2 < skinPartitionBlocks_numVertices; i2++) { \
+    for (uint i2 = 0; i2 < skinPartitionBlocks[i0].numVertices; i2++) { \
       for (uint i3 = 0; i3 < skinPartitionBlocks_numWeightsPerVertex; i3++) { \
         out << "        Bone Indices[" << i2 << "][" << i3 << "]:  " << skinPartitionBlocks[i0].boneIndices[i2][i3] << endl; \
       }; \
@@ -11171,8 +11159,6 @@ NiObject::FixLinks( objects, link_stack, version ); \
 uint numSkinPartitionBlocks; \
 numSkinPartitionBlocks = uint(skinPartitionBlocks.size()); \
 for (uint i0 = 0; i0 < numSkinPartitionBlocks; i0++) { \
-  ushort skinPartitionBlocks_numVertices; \
-  skinPartitionBlocks_numVertices = ushort(skinPartitionBlocks[i0].vertexMap.size()); \
   ushort skinPartitionBlocks_numTriangles; \
   skinPartitionBlocks_numTriangles = ushort(skinPartitionBlocks[i0].triangles.size()); \
   ushort skinPartitionBlocks_numBones; \
@@ -11188,24 +11174,24 @@ for (uint i0 = 0; i0 < numSkinPartitionBlocks; i0++) { \
   if ( version >= 0x0A010000 ) { \
   }; \
   if ( version <= 0x0A000102 ) { \
-    for (uint i2 = 0; i2 < skinPartitionBlocks_numVertices; i2++) { \
+    for (uint i2 = 0; i2 < skinPartitionBlocks[i0].numVertices; i2++) { \
     }; \
   }; \
   if ( version >= 0x0A010000 ) { \
     if ( skinPartitionBlocks[i0].hasVertexMap != 0 ) { \
-      for (uint i3 = 0; i3 < skinPartitionBlocks_numVertices; i3++) { \
+      for (uint i3 = 0; i3 < skinPartitionBlocks[i0].numVertices; i3++) { \
       }; \
     }; \
   }; \
   if ( version <= 0x0A000102 ) { \
-    for (uint i2 = 0; i2 < skinPartitionBlocks_numVertices; i2++) { \
+    for (uint i2 = 0; i2 < skinPartitionBlocks[i0].numVertices; i2++) { \
       for (uint i3 = 0; i3 < skinPartitionBlocks_numWeightsPerVertex; i3++) { \
       }; \
     }; \
   }; \
   if ( version >= 0x0A010000 ) { \
     if ( skinPartitionBlocks[i0].hasVertexWeights != 0 ) { \
-      for (uint i3 = 0; i3 < skinPartitionBlocks_numVertices; i3++) { \
+      for (uint i3 = 0; i3 < skinPartitionBlocks[i0].numVertices; i3++) { \
         for (uint i4 = 0; i4 < skinPartitionBlocks_numWeightsPerVertex; i4++) { \
         }; \
       }; \
@@ -11234,7 +11220,7 @@ for (uint i0 = 0; i0 < numSkinPartitionBlocks; i0++) { \
     }; \
   }; \
   if ( skinPartitionBlocks[i0].hasBoneIndices != 0 ) { \
-    for (uint i2 = 0; i2 < skinPartitionBlocks_numVertices; i2++) { \
+    for (uint i2 = 0; i2 < skinPartitionBlocks[i0].numVertices; i2++) { \
       for (uint i3 = 0; i3 < skinPartitionBlocks_numWeightsPerVertex; i3++) { \
       }; \
     }; \
@@ -12837,10 +12823,9 @@ if ( version >= 0x0A010000 ) { \
 NifStream( numMatchGroups, in, version ); \
 matchGroups.resize(numMatchGroups); \
 for (uint i0 = 0; i0 < numMatchGroups; i0++) { \
-  ushort matchGroups_numVertices; \
-  NifStream( matchGroups_numVertices, in, version ); \
-  matchGroups[i0].vertexIndices.resize(matchGroups_numVertices); \
-  for (uint i1 = 0; i1 < matchGroups_numVertices; i1++) { \
+  NifStream( matchGroups[i0].numVertices, in, version ); \
+  matchGroups[i0].vertexIndices.resize(matchGroups[i0].numVertices); \
+  for (uint i1 = 0; i1 < matchGroups[i0].numVertices; i1++) { \
     NifStream( matchGroups[i0].vertexIndices[i1], in, version ); \
   }; \
 }; \
@@ -12870,10 +12855,8 @@ if ( version >= 0x0A010000 ) { \
 }; \
 NifStream( numMatchGroups, out, version ); \
 for (uint i0 = 0; i0 < numMatchGroups; i0++) { \
-  ushort matchGroups_numVertices; \
-  matchGroups_numVertices = ushort(matchGroups[i0].vertexIndices.size()); \
-  NifStream( matchGroups_numVertices, out, version ); \
-  for (uint i1 = 0; i1 < matchGroups_numVertices; i1++) { \
+  NifStream( matchGroups[i0].numVertices, out, version ); \
+  for (uint i1 = 0; i1 < matchGroups[i0].numVertices; i1++) { \
     NifStream( matchGroups[i0].vertexIndices[i1], out, version ); \
   }; \
 }; \
@@ -12898,10 +12881,8 @@ if ( hasTriangles != 0 ) { \
 }; \
 out << "Num Match Groups:  " << numMatchGroups << endl; \
 for (uint i0 = 0; i0 < numMatchGroups; i0++) { \
-  ushort matchGroups_numVertices; \
-  matchGroups_numVertices = ushort(matchGroups[i0].vertexIndices.size()); \
-  out << "  Num Vertices:  " << matchGroups_numVertices << endl; \
-  for (uint i1 = 0; i1 < matchGroups_numVertices; i1++) { \
+  out << "  Num Vertices:  " << matchGroups[i0].numVertices << endl; \
+  for (uint i1 = 0; i1 < matchGroups[i0].numVertices; i1++) { \
     out << "    Vertex Indices[" << i1 << "]:  " << matchGroups[i0].vertexIndices[i1] << endl; \
   }; \
 }; \
@@ -12926,9 +12907,7 @@ if ( version >= 0x0A010000 ) { \
   }; \
 }; \
 for (uint i0 = 0; i0 < numMatchGroups; i0++) { \
-  ushort matchGroups_numVertices; \
-  matchGroups_numVertices = ushort(matchGroups[i0].vertexIndices.size()); \
-  for (uint i1 = 0; i1 < matchGroups_numVertices; i1++) { \
+  for (uint i1 = 0; i1 < matchGroups[i0].numVertices; i1++) { \
   }; \
 }; \
 
@@ -13248,6 +13227,7 @@ NiProperty::FixLinks( objects, link_stack, version ); \
 
 #define NI_VERT_WEIGHTS_EXTRA_DATA_MEMBERS \
 uint numBytes; \
+ushort numVertices; \
 vector<float > weight; \
 
 #define NI_VERT_WEIGHTS_EXTRA_DATA_INCLUDE "NiExtraData.h" \
@@ -13258,7 +13238,6 @@ vector<float > weight; \
 
 #define NI_VERT_WEIGHTS_EXTRA_DATA_READ \
 NiExtraData::Read( in, link_stack, version ); \
-ushort numVertices; \
 NifStream( numBytes, in, version ); \
 NifStream( numVertices, in, version ); \
 weight.resize(numVertices); \
@@ -13268,8 +13247,6 @@ for (uint i0 = 0; i0 < numVertices; i0++) { \
 
 #define NI_VERT_WEIGHTS_EXTRA_DATA_WRITE \
 NiExtraData::Write( out, link_map, version ); \
-ushort numVertices; \
-numVertices = ushort(weight.size()); \
 NifStream( numBytes, out, version ); \
 NifStream( numVertices, out, version ); \
 for (uint i0 = 0; i0 < numVertices; i0++) { \
@@ -13279,8 +13256,6 @@ for (uint i0 = 0; i0 < numVertices; i0++) { \
 #define NI_VERT_WEIGHTS_EXTRA_DATA_STRING \
 stringstream out; \
 out << NiExtraData::asString(); \
-ushort numVertices; \
-numVertices = ushort(weight.size()); \
 out << "Num Bytes:  " << numBytes << endl; \
 out << "Num Vertices:  " << numVertices << endl; \
 for (uint i0 = 0; i0 < numVertices; i0++) { \
@@ -13290,8 +13265,6 @@ return out.str(); \
 
 #define NI_VERT_WEIGHTS_EXTRA_DATA_FIXLINKS \
 NiExtraData::FixLinks( objects, link_stack, version ); \
-ushort numVertices; \
-numVertices = ushort(weight.size()); \
 for (uint i0 = 0; i0 < numVertices; i0++) { \
 }; \
 
-- 
GitLab