public override void Parse(GameBitBuffer buffer)
 {
     nMaxNodes = buffer.ReadInt(32);
     nMaxLeaves = buffer.ReadInt(32);
     nMaxPrimitives = buffer.ReadInt(32);
     nNodeCount = buffer.ReadInt(32);
     nLeafCount = buffer.ReadInt(32);
     nPrimitiveCount = buffer.ReadInt(32);
     serNodes = new SerializeData();
     serNodes.Parse(buffer);
     //still checking variablearrays
     this.Nodes = new List<OctreeNode>( buffer.ReadInt(0) );
     for(int loop12 = 0; loop12 < _Nodes.Count; loop12++)
     {
         _Nodes[loop12] = new OctreeNode();
         _Nodes[loop12].Parse(buffer);
     }
     serLeaves = new SerializeData();
     serLeaves.Parse(buffer);
     //still checking variablearrays
     this.Leaves = new List<OctreeLeaf>( buffer.ReadInt(0) );
     for(int loop12 = 0; loop12 < _Leaves.Count; loop12++)
     {
         _Leaves[loop12] = new OctreeLeaf();
         _Leaves[loop12].Parse(buffer);
     }
     serPrimitives = new SerializeData();
     serPrimitives.Parse(buffer);
     //still checking variablearrays
     this.Primitives = new List<OctreePrimitive>( buffer.ReadInt(0) );
     for(int loop12 = 0; loop12 < _Primitives.Count; loop12++)
     {
         _Primitives[loop12] = new OctreePrimitive();
         _Primitives[loop12].Parse(buffer);
     }
 }
 public void FileRead(MpqFileStream stream, long offset)
 {
     stream.Position = offset + 0;
     nMaxNodes = stream.ReadValueS32();
     stream.Position = offset + 4;
     nMaxLeaves = stream.ReadValueS32();
     stream.Position = offset + 8;
     nMaxPrimitives = stream.ReadValueS32();
     stream.Position = offset + 12;
     nNodeCount = stream.ReadValueS32();
     stream.Position = offset + 16;
     nLeafCount = stream.ReadValueS32();
     stream.Position = offset + 20;
     nPrimitiveCount = stream.ReadValueS32();
     stream.Position = offset + 24;
     serNodes = new SerializeData();
     serNodes.FileRead(stream, stream.Position);
     stream.Position = offset + 32;
     //still checking variablearrays
     Nodes = new List<OctreeNode>();
     for(int i = 0; i < (int)(serNodes.Field1 / 48); i++)
     {
     stream.Position = serNodes.Field0 + 16 + (48*i) ;
         OctreeNode temp12_Nodes;
         temp12_Nodes = new OctreeNode();
         temp12_Nodes.FileRead(stream, stream.Position);
         _Nodes.Add(temp12_Nodes);
     }
     stream.Position = offset + 40;
     serLeaves = new SerializeData();
     serLeaves.FileRead(stream, stream.Position);
     stream.Position = offset + 48;
     //still checking variablearrays
     Leaves = new List<OctreeLeaf>();
     for(int i = 0; i < (int)(serLeaves.Field1 / 24); i++)
     {
     stream.Position = serLeaves.Field0 + 16 + (24*i) ;
         OctreeLeaf temp12_Leaves;
         temp12_Leaves = new OctreeLeaf();
         temp12_Leaves.FileRead(stream, stream.Position);
         _Leaves.Add(temp12_Leaves);
     }
     stream.Position = offset + 56;
     serPrimitives = new SerializeData();
     serPrimitives.FileRead(stream, stream.Position);
     stream.Position = offset + 64;
     //still checking variablearrays
     Primitives = new List<OctreePrimitive>();
     for(int i = 0; i < (int)(serPrimitives.Field1 / 8); i++)
     {
     stream.Position = serPrimitives.Field0 + 16 + (8*i) ;
         OctreePrimitive temp12_Primitives;
         temp12_Primitives = new OctreePrimitive();
         temp12_Primitives.FileRead(stream, stream.Position);
         _Primitives.Add(temp12_Primitives);
     }
 }