private void RetrieveMTEX() { // skip MAMP chunk int start_mtex = tex.IsChunk(0xC, ChunkedWowFile.MagicToInt("MAMP")) ? tex.ReadInt(0x10) + 0x14 : 0xC; // real size = size + 0x8 (header size) int size = tex.ReadInt(start_mtex + 4) + 0x8; // start MTEX adt.AddEmptyBytes(currentPos, size); tex.BlockCopy(start_mtex, adt, currentPos, size); // remove unecessary data tex.RemoveBytes(0x0, start_mtex + size); adt.WriteInt(0x1C, currentPos - 0x14); for (int i = currentPos + 0x8; i < currentPos + size; ++i) { if (adt.Data[i] == 0) { textureCount++; } } currentPos += size; }
private void CheckMH2O() { if (adt.IsChunk(currentPos, "MH2O")) { if (water) { FixMH2O(currentPos + 0x8); int size = adt.ReadInt(currentPos + 4) + 0x8; adt.WriteInt(0x3C, currentPos - 0x14); currentPos += size; } else { adt.RemoveBytes(currentPos, adt.ReadInt(currentPos + 4) + 0x8); adt.WriteInt(0x3C, 0); } } else // no MH2O { adt.WriteInt(0x3C, 0); } }