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);
     }
 }