public override void Parse(GameBitBuffer buffer)
 {
     dwFlags = buffer.ReadInt(32);
     nBoneCount = buffer.ReadInt(32);
     serBoneStructure = new SerializeData();
     serBoneStructure.Parse(buffer);
     //still checking variablearrays
     this.BoneStructure = new List<BoneStructure>( buffer.ReadInt(0) );
     for(int loop12 = 0; loop12 < _BoneStructure.Count; loop12++)
     {
         _BoneStructure[loop12] = new BoneStructure();
         _BoneStructure[loop12].Parse(buffer);
     }
     Field4 = new LookAtData();
     Field4.Parse(buffer);
     Field5 = buffer.ReadInt(32);
     serBonePulses = new SerializeData();
     serBonePulses.Parse(buffer);
     //still checking variablearrays
     this.BonePulses = new List<BonePulseData>( buffer.ReadInt(0) );
     for(int loop12 = 0; loop12 < _BonePulses.Count; loop12++)
     {
         _BonePulses[loop12] = new BonePulseData();
         _BonePulses[loop12].Parse(buffer);
     }
     Field8 = new GeoSet[2];
     for(int i = 0;i < _Field8.Length;i++)
     {
         _Field8[i] = new GeoSet();
         _Field8[i].Parse(buffer);
     }
     Field9 = new Sphere();
     Field9.Parse(buffer);
     nCollisionCapsuleCount = buffer.ReadInt(32);
     serCollisionCapsules = new SerializeData();
     serCollisionCapsules.Parse(buffer);
     //still checking variablearrays
     this.CollisionCapsules = new List<CollisionCapsule>( buffer.ReadInt(0) );
     for(int loop12 = 0; loop12 < _CollisionCapsules.Count; loop12++)
     {
         _CollisionCapsules[loop12] = new CollisionCapsule();
         _CollisionCapsules[loop12].Parse(buffer);
     }
     nHardpointCount = buffer.ReadInt(32);
     serHardpoints = new SerializeData();
     serHardpoints.Parse(buffer);
     //still checking variablearrays
     this.Hardpoints = new List<Hardpoint>( buffer.ReadInt(0) );
     for(int loop12 = 0; loop12 < _Hardpoints.Count; loop12++)
     {
         _Hardpoints[loop12] = new Hardpoint();
         _Hardpoints[loop12].Parse(buffer);
     }
     Field16 = new Vector3D();
     Field16.Parse(buffer);
     tOctreeVisualMesh = new Octree();
     tOctreeVisualMesh.Parse(buffer);
     aabbBounds = new AABB();
     aabbBounds.Parse(buffer);
     Field19 = buffer.ReadCharArray(256);
     Field20 = buffer.ReadCharArray(256);
     Field21 = buffer.ReadCharArray(256);
     Field22 = buffer.ReadCharArray(256);
     Field23 = buffer.ReadInt(32);
     Field24 = buffer.ReadFloat32();
     Field25 = buffer.ReadInt(32);
     nLoopConstraintCount = buffer.ReadInt(32);
     serLoopConstraints = new SerializeData();
     serLoopConstraints.Parse(buffer);
     //still checking variablearrays
     this.LoopConstraints = new List<ConstraintParameters>( buffer.ReadInt(0) );
     for(int loop12 = 0; loop12 < _LoopConstraints.Count; loop12++)
     {
         _LoopConstraints[loop12] = new ConstraintParameters();
         _LoopConstraints[loop12].Parse(buffer);
     }
     uRagdollDegrade = buffer.ReadInt(32);
 }
 public void FileRead(MpqFileStream stream, long offset)
 {
     stream.Position = offset + 0;
     dwFlags = stream.ReadValueS32();
     stream.Position = offset + 4;
     nBoneCount = stream.ReadValueS32();
     stream.Position = offset + 8;
     serBoneStructure = new SerializeData();
     serBoneStructure.FileRead(stream, stream.Position);
     stream.Position = offset + 16;
     //still checking variablearrays
     BoneStructure = new List<BoneStructure>();
     for(int i = 0; i < (int)(serBoneStructure.Field1 / 236); i++)
     {
     stream.Position = serBoneStructure.Field0 + 16 + (236*i) ;
         BoneStructure temp12_BoneStructure;
         temp12_BoneStructure = new BoneStructure();
         temp12_BoneStructure.FileRead(stream, stream.Position);
         _BoneStructure.Add(temp12_BoneStructure);
     }
     stream.Position = offset + 24;
     Field4 = new LookAtData();
     Field4.FileRead(stream, stream.Position);
     stream.Position = offset + 116;
     Field5 = stream.ReadValueS32();
     stream.Position = offset + 128;
     serBonePulses = new SerializeData();
     serBonePulses.FileRead(stream, stream.Position);
     stream.Position = offset + 120;
     //still checking variablearrays
     BonePulses = new List<BonePulseData>();
     for(int i = 0; i < (int)(serBonePulses.Field1 / 76); i++)
     {
     stream.Position = serBonePulses.Field0 + 16 + (76*i) ;
         BonePulseData temp12_BonePulses;
         temp12_BonePulses = new BonePulseData();
         temp12_BonePulses.FileRead(stream, stream.Position);
         _BonePulses.Add(temp12_BonePulses);
     }
     stream.Position = offset + 136;
     Field8 = new GeoSet[2];
     for(int loop12=0; loop12 < 2; loop12++ )
     {
         GeoSet temp12_Field8;
         temp12_Field8 = new GeoSet();
         temp12_Field8.FileRead(stream, stream.Position);
         _Field8[loop12] = temp12_Field8;
     }
     stream.Position = offset + 184;
     Field9 = new Sphere();
     Field9.FileRead(stream, stream.Position);
     stream.Position = offset + 200;
     nCollisionCapsuleCount = stream.ReadValueS32();
     stream.Position = offset + 204;
     serCollisionCapsules = new SerializeData();
     serCollisionCapsules.FileRead(stream, stream.Position);
     stream.Position = offset + 216;
     //still checking variablearrays
     CollisionCapsules = new List<CollisionCapsule>();
     for(int i = 0; i < (int)(serCollisionCapsules.Field1 / 104); i++)
     {
     stream.Position = serCollisionCapsules.Field0 + 16 + (104*i) ;
         CollisionCapsule temp12_CollisionCapsules;
         temp12_CollisionCapsules = new CollisionCapsule();
         temp12_CollisionCapsules.FileRead(stream, stream.Position);
         _CollisionCapsules.Add(temp12_CollisionCapsules);
     }
     stream.Position = offset + 224;
     nHardpointCount = stream.ReadValueS32();
     stream.Position = offset + 228;
     serHardpoints = new SerializeData();
     serHardpoints.FileRead(stream, stream.Position);
     stream.Position = offset + 240;
     //still checking variablearrays
     Hardpoints = new List<Hardpoint>();
     for(int i = 0; i < (int)(serHardpoints.Field1 / 96); i++)
     {
     stream.Position = serHardpoints.Field0 + 16 + (96*i) ;
         Hardpoint temp12_Hardpoints;
         temp12_Hardpoints = new Hardpoint();
         temp12_Hardpoints.FileRead(stream, stream.Position);
         _Hardpoints.Add(temp12_Hardpoints);
     }
     stream.Position = offset + 248;
     Field16 = new Vector3D();
     Field16.FileRead(stream, stream.Position);
     stream.Position = offset + 264;
     tOctreeVisualMesh = new Octree();
     tOctreeVisualMesh.FileRead(stream, stream.Position);
     stream.Position = offset + 336;
     aabbBounds = new AABB();
     aabbBounds.FileRead(stream, stream.Position);
     stream.Position = offset + 400;
     Field19 = stream.ReadString(256);
     stream.Position = offset + 656;
     Field20 = stream.ReadString(256);
     stream.Position = offset + 912;
     Field21 = stream.ReadString(256);
     stream.Position = offset + 1168;
     Field22 = stream.ReadString(256);
     stream.Position = offset + 1424;
     Field23 = stream.ReadValueS32();
     stream.Position = offset + 1428;
     Field24 = stream.ReadValueF32();
     stream.Position = offset + 1432;
     Field25 = stream.ReadValueS32();
     stream.Position = offset + 360;
     nLoopConstraintCount = stream.ReadValueS32();
     stream.Position = offset + 364;
     serLoopConstraints = new SerializeData();
     serLoopConstraints.FileRead(stream, stream.Position);
     stream.Position = offset + 376;
     //still checking variablearrays
     LoopConstraints = new List<ConstraintParameters>();
     for(int i = 0; i < (int)(serLoopConstraints.Field1 / 276); i++)
     {
     stream.Position = serLoopConstraints.Field0 + 16 + (276*i) ;
         ConstraintParameters temp12_LoopConstraints;
         temp12_LoopConstraints = new ConstraintParameters();
         temp12_LoopConstraints.FileRead(stream, stream.Position);
         _LoopConstraints.Add(temp12_LoopConstraints);
     }
     stream.Position = offset + 384;
     uRagdollDegrade = stream.ReadValueS32();
 }