public static SpriteFilenameSettings FromFilename(string path)
        {
            var settings = new SpriteFilenameSettings();

            foreach (var segment in Path.GetFileNameWithoutExtension(path)
                     .Split('.')
                     .Skip(1)
                     .Select(segment => segment.Trim().ToLowerInvariant()))
            {
                if (SpriteMakingSettings.TryParseSpriteType(segment, out var type))
                {
                    settings.Type = type;
                }
                else if (SpriteMakingSettings.TryParseSpriteTextureFormat(segment, out var textureFormat))
                {
                    settings.TextureFormat = textureFormat;
                }
                else if (TryParseSpritesheetTileSize(segment, out var spritesheetTileSize))
                {
                    settings.SpritesheetTileSize = spritesheetTileSize;
                }
                else if (int.TryParse(segment, out var frameNumber))
                {
                    settings.FrameNumber = frameNumber;
                }
                else if (TryParseFrameOffset(segment, out var frameOffset))
                {
                    settings.FrameOffset = frameOffset;
                }
            }
            return(settings);
        }
        public string InsertIntoFilename(string path)
        {
            var extension = Path.GetExtension(path);
            var sb        = new StringBuilder();

            if (Type != null && Type != SpriteType.Parallel)
            {
                sb.Append($".{SpriteMakingSettings.GetSpriteTypeShorthand(Type.Value)}");
            }
            if (TextureFormat != null && TextureFormat != SpriteTextureFormat.Additive)
            {
                sb.Append($".{SpriteMakingSettings.GetSpriteTextureFormatShorthand(TextureFormat.Value)}");
            }
            if (SpritesheetTileSize != null)
            {
                sb.Append($".{SpritesheetTileSize.Value.Width}x{SpritesheetTileSize.Value.Height}");
            }
            if (FrameNumber != null)
            {
                sb.Append($".{FrameNumber.Value}");
            }
            if (FrameOffset != null)
            {
                sb.Append($".@{FrameOffset.Value.X},{FrameOffset.Value.Y}");
            }

            return(Path.ChangeExtension(path, sb.ToString() + extension));
        }