public static string ToXMLString(this RMTilesetFile.eFileType type)
        {
            switch (type)
            {
            case RMTilesetFile.eFileType.PNG:
                return(RMPConstants.TilesetFileType.PNG);

            case RMTilesetFile.eFileType.Text:
                return(RMPConstants.TilesetFileType.TEXT);

            default:
                return(string.Empty);
            }
        }
        public static RMTilesetFile.eFileType ParseString(this RMTilesetFile.eFileType type, string str)
        {
            switch (str)
            {
            case RMPConstants.TilesetFileType.TEXT:
                return(RMTilesetFile.eFileType.Text);

            case RMPConstants.TilesetFileType.PNG:
                return(RMTilesetFile.eFileType.PNG);

            default:
                return(RMTilesetFile.eFileType.None);
            }
        }
            public static RMTilesetCollection RetrieveTilesetCollection(string path, string rootPath, string _namespace, bool trimRootPath, out LogDataList log, RMPackage parent)
            {
                log = new LogDataList();
                RMTilesetCollection newCollection = new RMTilesetCollection(parent);

                log.WriteInformationLog(LoggerMessages.RMPackage.Info.RetrievedAutoData(parent.Name, path, RMCollectionType.Tilesets), _namespace);
                string[] files = null;
                try
                {
                    files = Directory.GetFiles(path);
                }catch (Exception ex)
                {
                    log.WriteErrorLog(LoggerMessages.RMPackage.Error.RetrieveAutoError(path, parent.Name, RMCollectionType.Tilesets), _namespace, ex);
                    return(null);
                }

                if (files == null || files.Length == 0)
                {
                    return(null);
                }

                for (int i = 0; i < files.Length; ++i)
                {
                    string originalFileName = Path.GetFileNameWithoutExtension(files[i]);
                    string nonLoweredPath   = files[i];
                    files[i] = files[i].ToLower();
                    string fileExtension = Path.GetExtension(files[i]);
                    if (fileExtension.Length < RMPConstants.TilesetFileType.PNG.Length + 1)
                    {
                        continue;
                    }
                    fileExtension = fileExtension.Substring(1);

                    RMTilesetFile.eFileType typeOfFile = RMTilesetFile.eFileType.None;
                    typeOfFile = typeOfFile.ParseString(fileExtension);


                    if (typeOfFile == RMTilesetFile.eFileType.None || string.IsNullOrWhiteSpace(originalFileName))
                    {
                        continue;
                    }

                    TilesetTypeAndName parsedFileName = new TilesetTypeAndName(originalFileName);


                    RMTilesetGroup tileset = newCollection.Groups.FindByInternalName(parsedFileName.internalName);
                    if (tileset == null)
                    {
                        tileset              = new RMTilesetGroup(newCollection);
                        tileset.Name         = parsedFileName.Name;
                        tileset.internalName = parsedFileName.internalName;
                        newCollection.Groups.Add(tileset);
                    }
                    RMTilesetFile tilefile = new RMTilesetFile(tileset);
                    if (trimRootPath)
                    {
                        tilefile.Path = Helper.GetRelativePath(nonLoweredPath, rootPath);
                    }
                    else
                    {
                        tilefile.Path = nonLoweredPath;
                    }
                    tilefile.FileType  = typeOfFile;
                    tilefile.AtlasType = parsedFileName.atlasType;
                    tileset.Files.Add(tilefile);
                    log.WriteInformationLog(LoggerMessages.RMPackage.Info.RetrievedFile(parent.Name, nonLoweredPath, RMCollectionType.Tilesets), _namespace);
                }
                if (newCollection.Groups.Count == 0)
                {
                    return(null);
                }

                return(newCollection);
            }