ActiveTextureManagement.CacheController.MemorySaved C# (CSharp) Метод

MemorySaved() публичный статический Метод

public static MemorySaved ( int originalWidth, int originalHeight, TextureFormat originalFormat, bool originalMipmaps, GameDatabase Texture ) : int
originalWidth int
originalHeight int
originalFormat TextureFormat
originalMipmaps bool
Texture GameDatabase
Результат int
        public static int MemorySaved(int originalWidth, int originalHeight, TextureFormat originalFormat, bool originalMipmaps, GameDatabase.TextureInfo Texture)
        {
            int width = Texture.texture.width;
            int height = Texture.texture.height;
            TextureFormat format = Texture.texture.format;
            bool mipmaps = Texture.texture.mipmapCount == 1 ? false : true;
            ActiveTextureManagement.DBGLog("Texture: " + Texture.name);
            ActiveTextureManagement.DBGLog("is normalmap: " + Texture.isNormalMap);
            Texture2D tex = Texture.texture;
            ActiveTextureManagement.DBGLog("originalWidth: " + originalWidth);
            ActiveTextureManagement.DBGLog("originalHeight: " + originalHeight);
            ActiveTextureManagement.DBGLog("originalFormat: " + originalFormat);
            ActiveTextureManagement.DBGLog("originalMipmaps: " + originalMipmaps);
            ActiveTextureManagement.DBGLog("width: " + width);
            ActiveTextureManagement.DBGLog("height: " + height);
            ActiveTextureManagement.DBGLog("format: " + format);
            ActiveTextureManagement.DBGLog("mipmaps: " + mipmaps);
            bool readable = true;
            try { tex.GetPixel(0, 0); }
            catch { readable = false; };
            ActiveTextureManagement.DBGLog("readable: " + readable);
            if (readable != Texture.isReadable)
            { ActiveTextureManagement.DBGLog("Readbility does not match!"); }
            int oldSize = 0;
            int newSize = 0;
            switch (originalFormat)
            {
                case TextureFormat.ARGB32:
                case TextureFormat.RGBA32:
                case TextureFormat.BGRA32:
                    oldSize = 4 * (originalWidth * originalHeight);
                    break;
                case TextureFormat.RGB24:
                    oldSize = 3 * (originalWidth * originalHeight);
                    break;
                case TextureFormat.Alpha8:
                    oldSize = originalWidth * originalHeight;
                    break;
                case TextureFormat.DXT1:
                    oldSize = (originalWidth * originalHeight) / 2;
                    break;
                case TextureFormat.DXT5:
                    oldSize = originalWidth * originalHeight;
                    break;
            }
            switch (format)
            {
                case TextureFormat.ARGB32:
                case TextureFormat.RGBA32:
                case TextureFormat.BGRA32:
                    newSize = 4 * (width * height);
                    break;
                case TextureFormat.RGB24:
                    newSize = 3 * (width * height);
                    break;
                case TextureFormat.Alpha8:
                    newSize = width * height;
                    break;
                case TextureFormat.DXT1:
                    newSize = (width * height) / 2;
                    break;
                case TextureFormat.DXT5:
                    newSize = width * height;
                    break;
            }
            if (originalMipmaps)
            {
                oldSize += (int)(oldSize * .33f);
            }
            if (mipmaps)
            {
                newSize += (int)(newSize * .33f);
            }
            return (oldSize - newSize);
        }

Usage Example

        private void updateMemoryCount(int originalWidth, int originalHeight, TextureFormat originalFormat, bool originalMipmaps, GameDatabase.TextureInfo Texture, String folder)
        {
            int saved = CacheController.MemorySaved(originalWidth, originalHeight, originalFormat, originalMipmaps, Texture);

            memorySaved += saved;

            if (!folderBytesSaved.ContainsKey(folder))
            {
                folderBytesSaved.Add(folder, 0);
            }
            long folderSaved = folderBytesSaved[folder] + saved;

            folderBytesSaved[folder] = folderSaved;

            Log("Saved " + saved + "B");
            Log("Accumulated Saved " + memorySaved + "B");
        }