private void CollectFiles(DirectoryInfo dir) { FileCollection fileCollection = FileCollection.Load(dir); foreach (FileItem fileItem in fileCollection) { fileItem.Dir = dir; // _files.Add(fileItem); } _files.AddRange(fileCollection); _processFiles += fileCollection.Count; Notify(new ProgressEventArgs(_processFiles, _totalFiles)); }
private void UpdateIndex(DirectoryInfo dir) { try { Notify(new StatusEventArgs("重建目录索引 {0} ...", new object[] { dir.FullName })); FileInfo[] files = GetFiles(dir); FileCollection fileCollection = FileCollection.Load(dir); foreach (FileInfo fi in files) { FileItem fileItem1 = fileCollection.GetItem(fi.Name); if (fileItem1 == null) { Notify(new StatusEventArgs("读取文件: {0}", fi.FullName)); FileItem fileItem2 = FileItem.Load(fi); if (fileItem2 != null) { fileCollection.AddItem(fileItem2); } } else if (fileItem1.IsChanged(fi)) { Notify(new StatusEventArgs("读取文件: {0}", fi.FullName)); FileItem updateItem = FileItem.Load(fi); if (updateItem != null) { fileCollection.UpdateItem(updateItem); } } } foreach (FileItem fileItem in fileCollection.Where(it => FileNotExist(files, it)).ToArray()) { fileCollection.RemoveItem(fileItem); } if (fileCollection.IsChanged) { fileCollection.Save(dir); } Interlocked.Add(ref _processFiles, files.Length); Notify(new ProgressEventArgs(_processFiles, _totalFiles)); } catch (Exception exp) { Console.WriteLine(exp.Message); } }
public static void Main(string[] args) { HashSet <uint> paths = new HashSet <uint>(); Dictionary <uint, string> bones = new Dictionary <uint, string>(); foreach (var dir in args) { foreach (var fn in Directory.GetFiles(dir, "*.unity3d", SearchOption.TopDirectoryOnly)) { var coll = new FileCollection(); coll.Load(fn); foreach (var asset in coll.FetchAssets()) { var clip = asset as AnimationClip; var avatar = asset as Avatar; if (clip != null) { foreach (var binding in clip.ClipBindingConstant.GenericBindings) { paths.Add(binding.Path); } } if (avatar != null) { foreach (var kv in avatar.m_TOS) { bones[kv.Key] = kv.Value; } } } } } foreach (var pathid in paths) { if (bones.TryGetValue(pathid, out string path)) { print($"{pathid} {path}"); } else { print($"Unresolved {pathid}"); } } }