예제 #1
0
        internal static Texture2D GetAssetThumbnailFromPath(string path)
        {
            var thumbnail = GetAssetPreviewFromGUID(AssetDatabase.AssetPathToGUID(path));

            if (thumbnail)
            {
                return(thumbnail);
            }
            thumbnail = AssetDatabase.GetCachedIcon(path) as Texture2D;
            return(thumbnail ?? InternalEditorUtility.FindIconForFile(path));
        }
예제 #2
0
            internal static SearchProvider CreateProvider()
            {
                return(new SearchProvider(type, displayName)
                {
                    filterId = "store:",
                    fetchItems = (context, items, provider) =>
                    {
                        if (s_CurrentSearchRequestOp != null)
                        {
                            s_CurrentSearchRequestOp.completed -= SearchCompleted;
                        }

                        s_SearchId = context.searchId;
                        s_Provider = provider;
                        s_AddAsyncItems = context.sendAsyncItems;
                        s_CurrentSearchRequest = UnityWebRequest.Get(url + context.searchQuery);
                        s_CurrentSearchRequest.SetRequestHeader("X-Unity-Session", InternalEditorUtility.GetAuthToken());
                        s_CurrentSearchRequestOp = s_CurrentSearchRequest.SendWebRequest();
                        s_CurrentSearchRequestOp.completed += SearchCompleted;
                    },

                    fetchThumbnail = (item, context) =>
                    {
                        if (item.thumbnail)
                        {
                            return item.thumbnail;
                        }

                        if (s_CurrentSearchAssetData.ContainsKey(item.id))
                        {
                            var searchPreview = s_CurrentSearchAssetData[item.id];
                            if (searchPreview.preview)
                            {
                                item.thumbnail = s_CurrentSearchAssetData[item.id].preview;
                            }

                            if (item.thumbnail)
                            {
                                return item.thumbnail;
                            }

                            if (searchPreview.request == null)
                            {
                                searchPreview.request = UnityWebRequestTexture.GetTexture(searchPreview.staticPreviewUrl);
                                searchPreview.requestOp = searchPreview.request.SendWebRequest();
                                searchPreview.requestOp.completed += TextureFetched;
                            }
                        }

                        item.thumbnail = InternalEditorUtility.FindIconForFile(item.label);
                        return item.thumbnail ?? Icons.store;
                    },

                    onDisable = () =>
                    {
                        foreach (var sp in s_CurrentSearchAssetData.Values)
                        {
                            if (sp.preview)
                            {
                                UnityEngine.Object.DestroyImmediate(sp.preview);
                            }
                            sp.request = null;
                            sp.requestOp = null;
                        }
                        s_CurrentSearchAssetData.Clear();
                    }
                });
            }