public override void Parse(GameBitBuffer buffer)
 {
     Field0 = buffer.ReadInt(32);
     serNavCells = new SerializeData();
     serNavCells.Parse(buffer);
     //still checking variablearrays
     this.NavCells = new List<NavCell>( buffer.ReadInt(0) );
     for(int loop12 = 0; loop12 < _NavCells.Count; loop12++)
     {
         _NavCells[loop12] = new NavCell();
         _NavCells[loop12].Parse(buffer);
     }
     NeightbourCount = buffer.ReadInt(32);
     serNavCellNeighbors = new SerializeData();
     serNavCellNeighbors.Parse(buffer);
     //still checking variablearrays
     this.NavCellNeighbors = new List<NavCellLookup>( buffer.ReadInt(0) );
     for(int loop12 = 0; loop12 < _NavCellNeighbors.Count; loop12++)
     {
         _NavCellNeighbors[loop12] = new NavCellLookup();
         _NavCellNeighbors[loop12].Parse(buffer);
     }
     Field6 = buffer.ReadFloat32();
     Field7 = buffer.ReadFloat32();
     Field8 = buffer.ReadInt(32);
     Field9 = new IVector2D();
     Field9.Parse(buffer);
     serGridSquares = new SerializeData();
     serGridSquares.Parse(buffer);
     //still checking variablearrays
     this.GridSquares = new List<NavGridSquare>( buffer.ReadInt(0) );
     for(int loop12 = 0; loop12 < _GridSquares.Count; loop12++)
     {
         _GridSquares[loop12] = new NavGridSquare();
         _GridSquares[loop12].Parse(buffer);
     }
     Field12 = buffer.ReadInt(32);
     serCellLookups = new SerializeData();
     serCellLookups.Parse(buffer);
     //still checking variablearrays
     this.CellLookups = new List<NavCellLookup>( buffer.ReadInt(0) );
     for(int loop12 = 0; loop12 < _CellLookups.Count; loop12++)
     {
         _CellLookups[loop12] = new NavCellLookup();
         _CellLookups[loop12].Parse(buffer);
     }
     BorderDataCount = buffer.ReadInt(32);
     serBorderData = new SerializeData();
     serBorderData.Parse(buffer);
     //still checking variablearrays
     this.BorderData = new List<NavCellBorderData>( buffer.ReadInt(0) );
     for(int loop12 = 0; loop12 < _BorderData.Count; loop12++)
     {
         _BorderData[loop12] = new NavCellBorderData();
         _BorderData[loop12].Parse(buffer);
     }
 }
 public void FileRead(MpqFileStream stream, long offset)
 {
     stream.Position = offset + 0;
     Field0 = stream.ReadValueS32();
     stream.Position = offset + 16;
     serNavCells = new SerializeData();
     serNavCells.FileRead(stream, stream.Position);
     stream.Position = offset + 8;
     //still checking variablearrays
     NavCells = new List<NavCell>();
     for(int i = 0; i < (int)(serNavCells.Field1 / 32); i++)
     {
     stream.Position = serNavCells.Field0 + 16 + (32*i) ;
         NavCell temp12_NavCells;
         temp12_NavCells = new NavCell();
         temp12_NavCells.FileRead(stream, stream.Position);
         _NavCells.Add(temp12_NavCells);
     }
     stream.Position = offset + 24;
     NeightbourCount = stream.ReadValueS32();
     stream.Position = offset + 40;
     serNavCellNeighbors = new SerializeData();
     serNavCellNeighbors.FileRead(stream, stream.Position);
     stream.Position = offset + 32;
     //still checking variablearrays
     NavCellNeighbors = new List<NavCellLookup>();
     for(int i = 0; i < (int)(serNavCellNeighbors.Field1 / 4); i++)
     {
     stream.Position = serNavCellNeighbors.Field0 + 16 + (4*i) ;
         NavCellLookup temp12_NavCellNeighbors;
         temp12_NavCellNeighbors = new NavCellLookup();
         temp12_NavCellNeighbors.FileRead(stream, stream.Position);
         _NavCellNeighbors.Add(temp12_NavCellNeighbors);
     }
     stream.Position = offset + 48;
     Field6 = stream.ReadValueF32();
     stream.Position = offset + 52;
     Field7 = stream.ReadValueF32();
     stream.Position = offset + 56;
     Field8 = stream.ReadValueS32();
     stream.Position = offset + 60;
     Field9 = new IVector2D();
     Field9.FileRead(stream, stream.Position);
     stream.Position = offset + 80;
     serGridSquares = new SerializeData();
     serGridSquares.FileRead(stream, stream.Position);
     stream.Position = offset + 72;
     //still checking variablearrays
     GridSquares = new List<NavGridSquare>();
     for(int i = 0; i < (int)(serGridSquares.Field1 / 6); i++)
     {
     stream.Position = serGridSquares.Field0 + 16 + (6*i) ;
         NavGridSquare temp12_GridSquares;
         temp12_GridSquares = new NavGridSquare();
         temp12_GridSquares.FileRead(stream, stream.Position);
         _GridSquares.Add(temp12_GridSquares);
     }
     stream.Position = offset + 88;
     Field12 = stream.ReadValueS32();
     stream.Position = offset + 104;
     serCellLookups = new SerializeData();
     serCellLookups.FileRead(stream, stream.Position);
     stream.Position = offset + 96;
     //still checking variablearrays
     CellLookups = new List<NavCellLookup>();
     for(int i = 0; i < (int)(serCellLookups.Field1 / 4); i++)
     {
     stream.Position = serCellLookups.Field0 + 16 + (4*i) ;
         NavCellLookup temp12_CellLookups;
         temp12_CellLookups = new NavCellLookup();
         temp12_CellLookups.FileRead(stream, stream.Position);
         _CellLookups.Add(temp12_CellLookups);
     }
     stream.Position = offset + 112;
     BorderDataCount = stream.ReadValueS32();
     stream.Position = offset + 128;
     serBorderData = new SerializeData();
     serBorderData.FileRead(stream, stream.Position);
     stream.Position = offset + 120;
     //still checking variablearrays
     BorderData = new List<NavCellBorderData>();
     for(int i = 0; i < (int)(serBorderData.Field1 / 4); i++)
     {
     stream.Position = serBorderData.Field0 + 16 + (4*i) ;
         NavCellBorderData temp12_BorderData;
         temp12_BorderData = new NavCellBorderData();
         temp12_BorderData.FileRead(stream, stream.Position);
         _BorderData.Add(temp12_BorderData);
     }
 }