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