Пример #1
0
        public static Texture2D GetAssetPreviewFromPath(string path, FetchPreviewOptions previewOptions)
        {
            var tex = AssetDatabase.LoadAssetAtPath <Texture2D>(path);

            if (tex)
            {
                return(tex);
            }

            if (!previewOptions.HasFlag(FetchPreviewOptions.Large))
            {
                var assetType = AssetDatabase.GetMainAssetTypeAtPath(path);
                if (assetType == typeof(AudioClip))
                {
                    return(GetAssetThumbnailFromPath(path));
                }
            }

            var obj = AssetDatabase.LoadMainAssetAtPath(path);

            if (obj == null)
            {
                return(null);
            }
            return(GetAssetPreview(obj, previewOptions));
        }
Пример #2
0
        public static Texture2D GetSceneObjectPreview(GameObject obj, FetchPreviewOptions options, Texture2D defaultThumbnail)
        {
            var sr = obj.GetComponent <SpriteRenderer>();

            if (sr && sr.sprite && sr.sprite.texture)
            {
                return(sr.sprite.texture);
            }

            #if PACKAGE_UGUI
            var uii = obj.GetComponent <UnityEngine.UI.Image>();
            if (uii && uii.mainTexture is Texture2D uiit)
            {
                return(uiit);
            }
            #endif

            var preview = AssetPreview.GetAssetPreview(obj);
            if (preview)
            {
                return(preview);
            }

            var assetPath = SearchUtils.GetHierarchyAssetPath(obj, true);
            if (String.IsNullOrEmpty(assetPath))
            {
                return(defaultThumbnail);
            }
            return(Utils.GetAssetPreviewFromPath(assetPath, options));
        }
Пример #3
0
        internal static Texture2D GetAssetPreview(UnityEngine.Object obj, FetchPreviewOptions previewOptions)
        {
            var preview = AssetPreview.GetAssetPreview(obj);

            if (preview == null || previewOptions.HasAny(FetchPreviewOptions.Large))
            {
                var largePreview = AssetPreview.GetMiniThumbnail(obj);
                if (preview == null || (largePreview != null && largePreview.width > preview.width))
                {
                    preview = largePreview;
                }
            }
            return(preview);
        }
    static Texture2D GetAssetPreviewFromPath(string path, Vector2 previewSize, FetchPreviewOptions previewOptions)
    {
        var obj = AssetDatabase.LoadAssetAtPath <UnityEngine.Object>(path);

        if (obj == null)
        {
            return(null);
        }
        var preview = AssetPreview.GetAssetPreview(obj);

        if (preview == null || previewOptions.HasFlag(FetchPreviewOptions.Large))
        {
            var largePreview = AssetPreview.GetMiniThumbnail(obj);
            if (preview == null || (largePreview != null && largePreview.width > preview.width))
            {
                preview = largePreview;
            }
        }
        return(preview);
    }
Пример #5
0
        private static Texture2D FetchPreview(SearchItem item, FetchPreviewOptions options)
        {
            if (!GlobalObjectId.TryParse(item.id, out var gid))
            {
                return(null);
            }

            if (options.HasFlag(FetchPreviewOptions.Large))
            {
                var go = GlobalObjectId.GlobalObjectIdentifierToObjectSlow(gid) as GameObject;
                if (go)
                {
                    return(AssetPreview.GetAssetPreview(go));
                }
            }

            var sourceAssetPath = AssetDatabase.GUIDToAssetPath(gid.assetGUID.ToString());

            return(AssetDatabase.GetCachedIcon(sourceAssetPath) as Texture2D);
        }
Пример #6
0
        private static Texture2D FetchPreview(SearchItem item, Vector2 size, FetchPreviewOptions options)
        {
            var info = GetInfo(item);

            if (info.gid.assetGUID == default)
            {
                return(null);
            }

            if (item.preview && item.preview.width >= size.x && item.preview.height >= size.y)
            {
                return(item.preview);
            }

            if (info.gid.identifierType == (int)IdentifierType.kSceneObject)
            {
                return(AssetDatabase.GetCachedIcon(info.source) as Texture2D);
            }

            if (info.gid.identifierType == (int)IdentifierType.kBuiltInAsset)
            {
                return(AssetPreview.GetAssetPreview(info.obj) ?? AssetPreview.GetMiniThumbnail(info.obj));
            }

            var obj = GlobalObjectId.GlobalObjectIdentifierToObjectSlow(info.gid);

            if (obj is GameObject go)
            {
                return(item.preview = Utils.GetSceneObjectPreview(go, size, options, item.thumbnail));
            }
            else if (obj)
            {
                var p = AssetPreview.GetAssetPreview(obj);
                if (p)
                {
                    return(p);
                }
            }

            return(item.preview = Utils.GetAssetPreviewFromPath(info.source, size, options));
        }
Пример #7
0
        internal static Texture2D GetAssetPreviewFromPath(string path, Vector2 previewSize, FetchPreviewOptions previewOptions)
        {
            var assetType = AssetDatabase.GetMainAssetTypeAtPath(path);

            if (assetType == typeof(SceneAsset))
            {
                return(AssetDatabase.GetCachedIcon(path) as Texture2D);
            }

            if (previewOptions.HasAny(FetchPreviewOptions.Normal))
            {
                if (assetType == typeof(AudioClip))
                {
                    return(GetAssetThumbnailFromPath(path));
                }

                try
                {
                    var fi = new FileInfo(path);
                    if (!fi.Exists)
                    {
                        return(null);
                    }
                    if (fi.Length > 16 * 1024 * 1024)
                    {
                        return(GetAssetThumbnailFromPath(path));
                    }
                }
                catch
                {
                    return(null);
                }
            }

            if (!typeof(Texture).IsAssignableFrom(assetType))
            {
                var tex = AssetDatabase.LoadAssetAtPath <Texture2D>(path);
                if (tex)
                {
                    return(tex);
                }
            }

            var obj = AssetDatabase.LoadMainAssetAtPath(path);

            if (obj == null)
            {
                return(null);
            }

            if (previewOptions.HasAny(FetchPreviewOptions.Large))
            {
                var tex = AssetPreviewUpdater.CreatePreview(obj, null, path, (int)previewSize.x, (int)previewSize.y);
                if (tex)
                {
                    return(tex);
                }
            }

            return(GetAssetPreview(obj, previewOptions) ?? AssetDatabase.GetCachedIcon(path) as Texture2D);
        }
Пример #8
0
 internal static Texture2D GetAssetPreviewFromPath(string path, FetchPreviewOptions previewOptions)
 {
     return(GetAssetPreviewFromPath(path, new Vector2(128, 128), previewOptions));
 }
Пример #9
0
        static Texture2D FetchPreview(SearchItem item, SearchContext context, Vector2 size, FetchPreviewOptions options)
        {
            if (item.preview)
            {
                return(item.preview);
            }

            var obj        = GetItemObject(item);
            var descriptor = k_Descriptors.FirstOrDefault(desc => desc.Match(obj));

            return(descriptor == null ? Icons.quicksearch : descriptor.GetPreview(obj, (int)size.x, (int)size.y));
        }
 public static bool HasAll(this FetchPreviewOptions flags, FetchPreviewOptions all) => (flags & all) == all;
 public static bool HasAny(this FetchPreviewOptions flags, FetchPreviewOptions f) => (flags & f) != 0;
Пример #12
0
        private static Texture2D FetchPreview(SearchItem item, SearchContext context, Vector2 size, FetchPreviewOptions options)
        {
            if (!options.HasFlag(FetchPreviewOptions.Large))
            {
                return(null);
            }

            var doc = (AssetDocument)item.data;

            if (s_PackagesKey != null)
            {
                if (doc.productDetail == null)
                {
                    var productId = Convert.ToInt32(doc.id);
                    RequestProductDetailsInfo(new[] { productId }, (detail, error) =>
                    {
                        if (error != null || detail.results.Length == 0)
                        {
                            return;
                        }
                        doc.productDetail = detail.results[0];
                        doc.images        = new[] { doc.productDetail.mainImage.big }.Concat(
                            doc.productDetail.images.Where(img => img.type == "screenshot").Select(imgDesc => imgDesc.imageUrl)).ToArray();
                    });
                }
            }

            if (doc.productDetail?.images.Length > 0)
            {
                return(doc.lastPreview = FetchImage(doc.images, true, s_Previews) ?? doc.lastPreview);
            }

            if (doc.key_images.Length > 0)
            {
                return(doc.lastPreview = FetchImage(doc.key_images, true, s_Previews) ?? doc.lastPreview);
            }

            return(doc.lastPreview = FetchImage(doc.icon, true, s_Previews) ?? doc.lastPreview);
        }
Пример #13
0
        static Texture2D FetchTemplatePreview(SearchItem item, SearchContext context, Vector2 size, FetchPreviewOptions options)
        {
            var sceneTemplateInfo = item.data as SceneTemplateInfo;

            if (sceneTemplateInfo == null)
            {
                return(null);
            }

            return(sceneTemplateInfo.sceneTemplate?.preview);
        }
Пример #14
0
    static Texture2D FetchPreview(SearchItem item, SearchContext context, Vector2 size, FetchPreviewOptions options)
    {
        var obj = ObjectFromItem(item);

        if (obj == null)
        {
            return(item.thumbnail);
        }

        var assetPath = GetHierarchyAssetPath(obj, true);

        if (String.IsNullOrEmpty(assetPath))
        {
            return(item.thumbnail);
        }
        return(AssetPreview.GetAssetPreview(obj) ?? GetAssetPreviewFromPath(assetPath, size, options));
    }
Пример #15
0
 public static Texture2D GetSceneObjectPreview(GameObject obj, Vector2 size, FetchPreviewOptions options, Texture2D thumbnail)
 {
     return(Utils.GetSceneObjectPreview(obj, size, options, thumbnail));
 }
Пример #16
0
        internal static Texture2D GetSceneObjectPreview(GameObject obj, Vector2 previewSize, FetchPreviewOptions options, Texture2D defaultThumbnail)
        {
            var sr = obj.GetComponent <SpriteRenderer>();

            if (sr && sr.sprite && sr.sprite.texture)
            {
                return(sr.sprite.texture);
            }


            if (!options.HasAny(FetchPreviewOptions.Large))
            {
                var preview = AssetPreview.GetAssetPreview(obj);
                if (preview)
                {
                    return(preview);
                }
            }

            var assetPath = SearchUtils.GetHierarchyAssetPath(obj, true);

            if (string.IsNullOrEmpty(assetPath))
            {
                return(AssetPreview.GetAssetPreview(obj) ?? defaultThumbnail);
            }
            return(GetAssetPreviewFromPath(assetPath, previewSize, options));
        }
Пример #17
0
        static Texture2D FetchScenePreview(SearchItem item, SearchContext context, Vector2 size, FetchPreviewOptions options)
        {
            if (!TryGetScenePath(item, out var scenePath))
            {
                return(null);
            }
            var dirPath          = System.IO.Path.GetDirectoryName(scenePath);
            var filename         = System.IO.Path.GetFileNameWithoutExtension(scenePath);
            var previewScenePath = $"{dirPath}/{filename}.preview.png";

            if (!System.IO.File.Exists(previewScenePath))
            {
                return(null);
            }
            return(AssetDatabase.LoadAssetAtPath <Texture2D>(previewScenePath));
        }