protected abstract object GetValue(TColumn column, TextureInfo textureInfo);
public TextureInfoViewItem(TextureInfo textureInfo) : base(textureInfo.Id) { TextureInfo = textureInfo; }
private IEnumerator LoadTextureInfos(IObserver <TextureInfo[]> observer) { var config = TextureViewerConfig.Instance; var ignoreFolderPaths = config.IgnoreFolderPaths; var ignoreFolderNames = config.IgnoreFolderNames; var infos = new List <TextureInfo>(); var textureGuids = AssetDatabase.FindAssets("t:texture").ToArray(); var index = 0; var total = textureGuids.Length; var chunk = textureGuids.Chunk(100).ToArray(); Action displayProgress = () => { EditorUtility.DisplayProgressBar("Progress", "Loading texture infos in project", (float)index / total); }; foreach (var guids in chunk) { displayProgress.Invoke(); foreach (var guid in guids) { index++; var assetPath = PathUtility.ConvertPathSeparator(AssetDatabase.GUIDToAssetPath(guid)); // Assets以外のファイル除外. if (!assetPath.StartsWith(UnityEditorUtility.AssetsFolderName)) { continue; } // 除外フォルダ以下のファイル除外. if (ignoreFolderPaths.Any(y => assetPath.StartsWith(y))) { continue; } // 除外フォルダ名を含むファイル除外. var assetFolderPath = PathUtility.ConvertPathSeparator(Path.GetDirectoryName(assetPath)); var folders = assetFolderPath.Split(PathUtility.PathSeparator); if (folders.Any(x => ignoreFolderNames.Contains(x))) { continue; } // 生成. var info = new TextureInfo(index, guid, assetPath); // TextureImporterが取得できない場合は除外. if (info.TextureImporter == null) { continue; } // 追加. infos.Add(info); } yield return(null); } displayProgress.Invoke(); observer.OnNext(infos.ToArray()); observer.OnCompleted(); }