int InfosNumberComparer(ObjFileInfo a, ObjFileInfo b) { if (a.ParsedNumber == b.ParsedNumber) { return(a.Hash - b.Hash); } else { return(a.ParsedNumber - b.ParsedNumber); } }
public MeshSequenceInfo(string pathToAnyObj, SortModeEnum sortMode) { SortMode = sortMode; State = StateEnum.Empty_path; SequenceName = ""; DirectoryPath = ""; infos = new ObjFileInfo[0]; // Date = System.DateTime.Now.ToString(); if (string.IsNullOrEmpty(pathToAnyObj)) { return; } if (!File.Exists(pathToAnyObj)) { State = StateEnum.File_not_found; return; } DirectoryInfo di = (new FileInfo(pathToAnyObj)).Directory; FileInfo[] fis = di.GetFiles("*.obj"); DirectoryPath = di.FullName; infos = new ObjFileInfo[fis.Length]; for (int i = 0; i < infos.Length; i++) { infos[i] = new ObjFileInfo(); infos[i].fi = fis[i]; infos[i].FileName = Path.GetFileNameWithoutExtension(fis[i].FullName); infos[i].ParsedNumber = GetNumberFromName(infos[i].FileName, ref infos[i].Hash); } if (SortMode == SortModeEnum.ByDate) { System.Array.Sort(infos, InfosDateComparer); } else { System.Array.Sort(infos, InfosNumberComparer); } SequenceName = string.Format("[{0}-{1}]", infos[0].FileName, infos[infos.Length - 1].FileName); State = StateEnum.Ready; }
int InfosDateComparer(ObjFileInfo a, ObjFileInfo b) { int result; if (a.fi.LastWriteTime == b.fi.LastWriteTime) { result = 0; } else if (a.fi.LastWriteTime < b.fi.LastWriteTime) { result = -1; } else { result = 1; } return(result); }