Esempio n. 1
0
        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;
        }
Esempio n. 2
0
 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);
     }
 }