public void Read() { foreach (var subChunk in Data.Chunks) { switch (subChunk.Name) { case "MOHD": MOHD = new MOHD(subChunk); break; case "MOGN": MOGN = new MOGN(subChunk); break; case "MOGI": MOGI = new MOGI(subChunk); break; case "MODD": MODD = new MODD(subChunk); break; case "MODN": MODN = new MODN(subChunk); break; case "MODS": MODS = new MODS(subChunk); break; } } ReadGroups(); }
public MODN[] ReadMODNChunk(BlizzHeader chunk, BinaryReader bin, uint num) { //List of M2 filenames, but are still named after MDXs internally. Have to rename! var m2FilesChunk = bin.ReadBytes((int)chunk.Size); List <String> m2Files = new List <string>(); List <int> m2Offset = new List <int>(); var str = new StringBuilder(); for (var i = 0; i < m2FilesChunk.Length; i++) { if (m2FilesChunk[i] == '\0') { if (str.Length > 1) { str.Replace("..", "."); str.Replace(".mdx", ".m2"); m2Files.Add(str.ToString()); m2Offset.Add(i - str.ToString().Length); } str = new StringBuilder(); } else { str.Append((char)m2FilesChunk[i]); } } if (num != m2Files.Count) { throw new Exception("nModels does not match doodad count"); } var doodadNames = new MODN[num]; for (var i = 0; i < num; i++) { doodadNames[i].filename = m2Files[i]; doodadNames[i].startOffset = (uint)m2Offset[i]; } return(doodadNames); }
private MODN[] ReadMODNChunk(uint size, BinaryReader bin) { //List of M2 filenames, but are still named after MDXs internally. Have to rename! var m2FilesChunk = bin.ReadBytes((int)size); var m2Files = new List <string>(); var m2Offset = new List <int>(); var str = new StringBuilder(); for (var i = 0; i < m2FilesChunk.Length; i++) { if (m2FilesChunk[i] == '\0') { if (str.Length > 1) { str.Replace("..", "."); str.Replace(".mdx", ".m2"); m2Files.Add(str.ToString()); m2Offset.Add(i - str.ToString().Length); } str = new StringBuilder(); } else { str.Append((char)m2FilesChunk[i]); } } var num = m2Files.Count(); var doodadNames = new MODN[num]; for (var i = 0; i < num; i++) { doodadNames[i].filename = m2Files[i]; doodadNames[i].startOffset = (uint)m2Offset[i]; } return(doodadNames); }