private static void ReadWMOGroups(BinaryReader br, ExtractedWMO wmo)
        {
            var groupCount = br.ReadInt32();
            var groupList = new List<ExtractedWMOGroup>(groupCount);
            for (int i = 0; i < groupCount; i++)
            {
                var group = new ExtractedWMOGroup();
                group.Flags = (WMOGroupFlags) br.ReadUInt32();
                group.Bounds = br.ReadBoundingBox();
                group.GroupId = br.ReadUInt32();
                group.ModelRefs = br.ReadInt32List();

                group.HasLiquid = br.ReadBoolean();
                if (group.HasLiquid)
                {
                    ReadWMOGroupLiquidInfo(br, group);
                }
                group.WmoVertices = br.ReadVector3List();

                ReadBSPTree(br, group);

                groupList.Add(group);
            }
            wmo.Groups = groupList;
        }
        private static ExtractedADTChunk ReadADTChunk(BinaryReader br)
        {
            var chunk = new ExtractedADTChunk
            {
                NodeId = br.ReadInt32(),
                IsFlat = br.ReadBoolean(),
                MedianHeight = br.ReadSingle(),
                M2References = br.ReadInt32List(),
                WMOReferences = br.ReadInt32List(),
                TerrainTris = br.ReadIndex3List(),
                HasLiquid = br.ReadBoolean()
                //HasHoles = br.ReadBoolean()
            };

            //if (chunk.HasHoles)
            //{
            //    ReadChunkHolesMap(br, chunk);
            //}

            //if (!chunk.IsFlat)
            //{
            //    ReadChunkHeightMap(br, chunk);
            //}

            if (!chunk.HasLiquid) return chunk;

            chunk.LiquidFlags = (MH2OFlags) br.ReadUInt16();
            chunk.LiquidType = (FluidType) br.ReadUInt16();
            chunk.IsLiquidFlat = br.ReadBoolean();
            chunk.MedianLiquidHeight1 = br.ReadSingle();
            chunk.MedianLiquidHeight2 = br.ReadSingle();

            if (chunk.LiquidFlags.HasFlag(MH2OFlags.Ocean)) return chunk;
            ReadChunkLiquidMap(br, chunk);

            if (chunk.IsLiquidFlat) return chunk;
            ReadChunkLiquidHeights(br, chunk);

            return chunk;
        }