Пример #1
0
 protected abstract object GetValue(TColumn column, TextureInfo textureInfo);
Пример #2
0
 public TextureInfoViewItem(TextureInfo textureInfo) : base(textureInfo.Id)
 {
     TextureInfo = textureInfo;
 }
Пример #3
0
        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();
        }