/// <summary> /// Gets the Texture From The ImageID /// </summary> /// <param name="ImageID"></param> /// <returns></returns> public static Texture2D GetTexture2d(ulong ImageID) { if (GameImages.ContainsKey(ImageID) == false) { return(null); } if (GameImages[ImageID].Optimized == false) { if (ImageUsageCount.ContainsKey(ImageID) == false) { ImageUsageCount.Add(ImageID, 0); } ImageUsageCount[ImageID] = ImageUsageCount[ImageID] + 1; return(GameImages[ImageID].BaseTexture); } else { if (ImageUsageCount.ContainsKey(ImageID) == false) { ImageUsageCount.Add(ImageID, 0); } ImageUsageCount[ImageID] = ImageUsageCount[ImageID] + 1; return(OptimizedImages[OptimizedRefrences[ImageID].SpriteSheetName]); } }
/// <summary> /// Optimize the Textures By Combining them into a single texture. /// </summary> public static void OptimizeImages() { // Ensure All the Usage Counts Exist foreach (ulong key in GameImages.Keys) { if (ImageUsageCount.ContainsKey(key) == false) { ImageUsageCount.Add(key, 0); } } // Compile To One Sprite Sheet Packer packer = new Packer(); foreach (var Tex in ImageUsageCount.OrderBy(x => x.Value)) { ImageInfo _ti = new ImageInfo(); _ti.Height = GameImages[Tex.Key].BaseTexture.Height; _ti.Width = GameImages[Tex.Key].BaseTexture.Width; _ti.Source = GameImages[Tex.Key].OriginalFilePath; packer.SourceTextures.Add(_ti); } packer.Process(2048, 0, false); var _UpdatedImages = packer.SaveAtlasses(); }