/// <summary> /// Digs through an ADT and parses out all the information in it. /// </summary> public override ADT.ADT Parse() { var adt = new ADT.ADT(); var mver = new MVERChunkParser(Reader, 0).Parse(); adt.Version = mver; var mhdr = new MHDRChunkParser(Reader, Reader.BaseStream.Position).Parse(); var mcins = new MCINChunkParser(Reader, mhdr.OffsInfo + mhdr.Base).Parse(); var mcnk = new MCNKChunkParser(Reader, mcins[0].Offset, mcins).Parse(); adt.MCNKArray = mcnk; var mwmos = new StringArrayChunkParser("MWMO", Reader, mhdr.OffsMapObejcts + mhdr.Base).Parse(); adt.MODFList = new MODFChunkParser(Reader, mhdr.OffsObjectsDef + mhdr.Base, mwmos).Parse(); var mmdxs = new StringArrayChunkParser("MMDX", Reader, mhdr.OffsModels + mhdr.Base).Parse(); adt.MDDFList = new MDDFChunkParser(Reader, mhdr.OffsDoodsDef + mhdr.Base, mmdxs).Parse(); var mh2os = mhdr.OffsMH2O != 0 ? new MH2OChunkParser(Reader, mhdr.OffsMH2O + mhdr.Base).Parse() : null; adt.MH2OArray = mh2os; return(adt); }
/// <summary> Loads WMO from file </summary> /// <param name="fileName">Full name of file of the WMO</param> /// <returns>Loaded WMO</returns> private static Model LoadWMO(string fileName) { var path = fileName; MOHD mohd; var fileInfo = FileInfoFactory.Create(); if (fileInfo.Exists(path) == false) { throw new Exception(String.Format("File does not exist: {0}", path)); } using (var br = new BinaryReader(fileInfo.OpenRead(path))) { int version = new MVERChunkParser(br, br.BaseStream.Position).Parse(); mohd = new MOHDChunkParser(br, br.BaseStream.Position).Parse(); } var list = new TriangleListCollection(); for (int wmoGroup = 0; wmoGroup < mohd.GroupsCount; wmoGroup++) { list.Add(LoadWMOSub(String.Format("{0}_{1:D3}.wmo", fileName.Substring(0, fileName.Length - 4), wmoGroup))); } return(new Model(list)); }
/// <summary> Loads WMO from file </summary> /// <param name="fileName">Full name of file of the WMO</param> /// <returns>Loaded WMO</returns> private static Model LoadWMO(string fileName) { var path = fileName; MOHD mohd; var fileInfo = FileInfoFactory.Create(); if (fileInfo.Exists(path) == false) throw new Exception(String.Format("File does not exist: {0}", path)); using (var br = new BinaryReader(fileInfo.OpenRead(path))) { int version = new MVERChunkParser(br, br.BaseStream.Position).Parse(); mohd = new MOHDChunkParser(br, br.BaseStream.Position).Parse(); } var list = new TriangleListCollection(); for (int wmoGroup = 0; wmoGroup < mohd.GroupsCount; wmoGroup++) { list.Add(LoadWMOSub(String.Format("{0}_{1:D3}.wmo", fileName.Substring(0, fileName.Length - 4), wmoGroup))); } return new Model(list); }