/// <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();
            }