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)); }
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)); }
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); }
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); }
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)); }
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); }
internal static Texture2D GetAssetPreviewFromPath(string path, FetchPreviewOptions previewOptions) { return(GetAssetPreviewFromPath(path, new Vector2(128, 128), previewOptions)); }
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;
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); }
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); }
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)); }
public static Texture2D GetSceneObjectPreview(GameObject obj, Vector2 size, FetchPreviewOptions options, Texture2D thumbnail) { return(Utils.GetSceneObjectPreview(obj, size, options, thumbnail)); }
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)); }
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)); }