private static void ExpireCacheEntries()
 {
     while (AssetStorePreviewManager.CacheFull)
     {
         string key = null;
         AssetStorePreviewManager.CachedAssetStoreImage cachedAssetStoreImage = null;
         foreach (KeyValuePair <string, AssetStorePreviewManager.CachedAssetStoreImage> current in AssetStorePreviewManager.CachedAssetStoreImages)
         {
             if (cachedAssetStoreImage == null || cachedAssetStoreImage.lastUsed > current.Value.lastUsed)
             {
                 cachedAssetStoreImage = current.Value;
                 key = current.Key;
             }
         }
         AssetStorePreviewManager.CachedAssetStoreImages.Remove(key);
         AssetStorePreviewManager.Instance.m_CacheRemove++;
         if (cachedAssetStoreImage == null)
         {
             Debug.LogError("Null entry found while removing cache entry");
             break;
         }
         if (cachedAssetStoreImage.client != null)
         {
             cachedAssetStoreImage.client.Abort();
             cachedAssetStoreImage.client = null;
         }
         if (cachedAssetStoreImage.image != null)
         {
             UnityEngine.Object.DestroyImmediate(cachedAssetStoreImage.image);
         }
     }
 }
        public static AssetStorePreviewManager.CachedAssetStoreImage TextureFromUrl(string url, string label, int textureSize, GUIStyle labelStyle, GUIStyle iconStyle, bool onlyCached)
        {
            if (string.IsNullOrEmpty(url))
            {
                return(AssetStorePreviewManager.Instance.m_DummyItem);
            }
            bool flag = true;

            AssetStorePreviewManager.CachedAssetStoreImage cachedAssetStoreImage;
            if (AssetStorePreviewManager.CachedAssetStoreImages.TryGetValue(url, out cachedAssetStoreImage))
            {
                cachedAssetStoreImage.lastUsed = EditorApplication.timeSinceStartup;
                bool flag2 = cachedAssetStoreImage.requestedWidth == textureSize;
                bool flag3 = cachedAssetStoreImage.image != null && cachedAssetStoreImage.image.width == textureSize;
                bool flag4 = cachedAssetStoreImage.requestedWidth == -1;
                if ((flag3 || flag2 || onlyCached) && !flag4)
                {
                    AssetStorePreviewManager.Instance.CacheHit++;
                    bool flag5 = cachedAssetStoreImage.client != null;
                    bool flag6 = cachedAssetStoreImage.label == null;
                    bool flag7 = flag5 || flag6;
                    bool flag8 = AssetStorePreviewManager.Instance.m_ConvertedThisTick > 1;
                    AssetStorePreviewManager.s_NeedsRepaint = (AssetStorePreviewManager.s_NeedsRepaint || flag8);
                    return((!flag7 && !flag8) ? AssetStorePreviewManager.RenderEntry(cachedAssetStoreImage, labelStyle, iconStyle) : cachedAssetStoreImage);
                }
                flag = false;
                if (AssetStorePreviewManager.Downloading >= 15)
                {
                    return((!(cachedAssetStoreImage.image == null)) ? cachedAssetStoreImage : AssetStorePreviewManager.Instance.m_DummyItem);
                }
            }
            else
            {
                if (onlyCached || AssetStorePreviewManager.Downloading >= 15)
                {
                    return(AssetStorePreviewManager.Instance.m_DummyItem);
                }
                cachedAssetStoreImage          = new AssetStorePreviewManager.CachedAssetStoreImage();
                cachedAssetStoreImage.image    = null;
                cachedAssetStoreImage.lastUsed = EditorApplication.timeSinceStartup;
            }
            if (cachedAssetStoreImage.image == null)
            {
                cachedAssetStoreImage.lastFetched = EditorApplication.timeSinceStartup;
            }
            cachedAssetStoreImage.requestedWidth = textureSize;
            cachedAssetStoreImage.label          = label;
            AsyncHTTPClient asyncHTTPClient = AssetStorePreviewManager.SetupTextureDownload(cachedAssetStoreImage, url, "previewSize-" + textureSize);

            AssetStorePreviewManager.ExpireCacheEntries();
            if (flag)
            {
                AssetStorePreviewManager.CachedAssetStoreImages.Add(url, cachedAssetStoreImage);
            }
            asyncHTTPClient.Begin();
            AssetStorePreviewManager.Instance.Requested++;
            return(cachedAssetStoreImage);
        }
            AssetStorePreviewManager.CachedAssetStoreImage GetIconForAssetStoreAsset(AssetStoreAsset assetStoreResource)
            {
                if (!string.IsNullOrEmpty(assetStoreResource.staticPreviewURL))
                {
                    m_Owner.LastScrollTime++;
                    AssetStorePreviewManager.CachedAssetStoreImage item = AssetStorePreviewManager.TextureFromUrl(assetStoreResource.staticPreviewURL, assetStoreResource.name, m_Owner.gridSize, s_Styles.resultsGridLabel, s_Styles.previewBg, false);
                    return(item);
                }

                return(null);
            }
 public static void AbortOlderThan(double timestamp)
 {
     foreach (KeyValuePair <string, AssetStorePreviewManager.CachedAssetStoreImage> current in AssetStorePreviewManager.CachedAssetStoreImages)
     {
         AssetStorePreviewManager.CachedAssetStoreImage value = current.Value;
         if (value.lastUsed < timestamp && value.client != null)
         {
             value.requestedWidth = -1;
             value.client.Abort();
             value.client = null;
         }
     }
     AssetStorePreviewManager.Instance.m_ConvertedThisTick = 0;
 }
Esempio n. 5
0
        private static AsyncHTTPClient SetupTextureDownload(AssetStorePreviewManager.CachedAssetStoreImage cached, string url, string tag)
        {
            AsyncHTTPClient client = new AsyncHTTPClient(url);

            cached.client       = client;
            client.tag          = tag;
            client.doneCallback = delegate(AsyncHTTPClient c)
            {
                cached.client = null;
                if (!client.IsSuccess())
                {
                    if (client.state != AsyncHTTPClient.State.ABORTED)
                    {
                        string text = string.Concat(new string[]
                        {
                            "error ",
                            client.text,
                            " ",
                            client.state.ToString(),
                            " '",
                            url,
                            "'"
                        });
                        if (ObjectListArea.s_Debug)
                        {
                            Debug.LogError(text);
                        }
                        else
                        {
                            Console.Write(text);
                        }
                    }
                    else
                    {
                        AssetStorePreviewManager.Instance.m_Aborted++;
                    }
                }
                else
                {
                    if (cached.image != null)
                    {
                        UnityEngine.Object.DestroyImmediate(cached.image);
                    }
                    cached.image = c.texture;
                    AssetStorePreviewManager.s_NeedsRepaint = true;
                    AssetStorePreviewManager.Instance.m_Success++;
                }
            };
            return(client);
        }
        private static AssetStorePreviewManager.CachedAssetStoreImage RenderEntry(AssetStorePreviewManager.CachedAssetStoreImage cached, GUIStyle labelStyle, GUIStyle iconStyle)
        {
            if (cached.label == null || cached.image == null)
            {
                return(cached);
            }
            Texture2D image = cached.image;

            cached.image = new Texture2D(cached.requestedWidth, cached.requestedWidth, TextureFormat.RGB24, false, true);
            AssetStorePreviewManager.ScaleImage(cached.requestedWidth, cached.requestedWidth, image, cached.image, iconStyle);
            UnityEngine.Object.DestroyImmediate(image);
            cached.label = null;
            AssetStorePreviewManager.Instance.m_ConvertedThisTick++;
            return(cached);
        }
 public static void AbortOlderThan(double timestamp)
 {
     using (Dictionary <string, AssetStorePreviewManager.CachedAssetStoreImage> .Enumerator enumerator = AssetStorePreviewManager.CachedAssetStoreImages.GetEnumerator())
     {
         while (enumerator.MoveNext())
         {
             AssetStorePreviewManager.CachedAssetStoreImage cachedAssetStoreImage = enumerator.Current.Value;
             if (cachedAssetStoreImage.lastUsed < timestamp && cachedAssetStoreImage.client != null)
             {
                 cachedAssetStoreImage.requestedWidth = -1;
                 cachedAssetStoreImage.client.Abort();
                 cachedAssetStoreImage.client = (AsyncHTTPClient)null;
             }
         }
     }
     AssetStorePreviewManager.Instance.m_ConvertedThisTick = 0;
 }
            void DrawIcon(Rect position, AssetStoreAsset assetStoreResource)
            {
                // bool selected = !AssetStoreAssetSelection.Empty && AssetStoreAssetSelection.ContainsAsset (assetStoreResource.id);
                bool selected = false; // labels have selection rendering only

                m_Content.text = null;

                AssetStorePreviewManager.CachedAssetStoreImage icon = GetIconForAssetStoreAsset(assetStoreResource);

                if (icon == null)
                {
                    // Draw static preview bg color as bg for icons that do not fill the entire rect (mini icons and non-square textures)
                    // s_Styles.previewBg.Draw (position, GUIContent.none, false, false, false, false);

                    // Use builtin type icon
                    Texture2D iconImage = InternalEditorUtility.GetIconForFile(assetStoreResource.name);
                    s_Styles.resultsGrid.Draw(position, iconImage, false, false, selected, selected);
                }
                else
                {
                    // Fade in
                    m_Content.image = icon.image;
                    Color c        = icon.color;
                    Color oldColor = GUI.color;
                    if (c.a != 1.0f)
                    {
                        GUI.color = c;
                    }
                    s_Styles.resultsGrid.Draw(position, m_Content, false, false, selected, selected);
                    if (c.a != 1.0f)
                    {
                        GUI.color = oldColor;
                        // The icon is not entirely faded in yet. Schedule a repaint
                        NeedsRepaint = true;
                    }

                    DrawDropShadowOverlay(position, selected, false, false);
                }
            }
 private static AsyncHTTPClient SetupTextureDownload(AssetStorePreviewManager.CachedAssetStoreImage cached, string url, string tag)
 {
     // ISSUE: object of a compiler-generated type is created
     // ISSUE: variable of a compiler-generated type
     AssetStorePreviewManager.\u003CSetupTextureDownload\u003Ec__AnonStorey5A downloadCAnonStorey5A = new AssetStorePreviewManager.\u003CSetupTextureDownload\u003Ec__AnonStorey5A();
     // ISSUE: reference to a compiler-generated field
     downloadCAnonStorey5A.cached = cached;
     // ISSUE: reference to a compiler-generated field
     downloadCAnonStorey5A.url = url;
     // ISSUE: reference to a compiler-generated field
     // ISSUE: reference to a compiler-generated field
     downloadCAnonStorey5A.client = new AsyncHTTPClient(downloadCAnonStorey5A.url);
     // ISSUE: reference to a compiler-generated field
     // ISSUE: reference to a compiler-generated field
     downloadCAnonStorey5A.cached.client = downloadCAnonStorey5A.client;
     // ISSUE: reference to a compiler-generated field
     downloadCAnonStorey5A.client.tag = tag;
     // ISSUE: reference to a compiler-generated field
     // ISSUE: reference to a compiler-generated method
     downloadCAnonStorey5A.client.doneCallback = new AsyncHTTPClient.DoneCallback(downloadCAnonStorey5A.\u003C\u003Em__9B);
     // ISSUE: reference to a compiler-generated field
     return(downloadCAnonStorey5A.client);
 }
 private static void ExpireCacheEntries()
 {
     while (AssetStorePreviewManager.CacheFull)
     {
         string key = (string)null;
         AssetStorePreviewManager.CachedAssetStoreImage cachedAssetStoreImage = (AssetStorePreviewManager.CachedAssetStoreImage)null;
         using (Dictionary <string, AssetStorePreviewManager.CachedAssetStoreImage> .Enumerator enumerator = AssetStorePreviewManager.CachedAssetStoreImages.GetEnumerator())
         {
             while (enumerator.MoveNext())
             {
                 KeyValuePair <string, AssetStorePreviewManager.CachedAssetStoreImage> current = enumerator.Current;
                 if (cachedAssetStoreImage == null || cachedAssetStoreImage.lastUsed > current.Value.lastUsed)
                 {
                     cachedAssetStoreImage = current.Value;
                     key = current.Key;
                 }
             }
         }
         AssetStorePreviewManager.CachedAssetStoreImages.Remove(key);
         ++AssetStorePreviewManager.Instance.m_CacheRemove;
         if (cachedAssetStoreImage == null)
         {
             Debug.LogError((object)"Null entry found while removing cache entry");
             break;
         }
         if (cachedAssetStoreImage.client != null)
         {
             cachedAssetStoreImage.client.Abort();
             cachedAssetStoreImage.client = (AsyncHTTPClient)null;
         }
         if ((Object)cachedAssetStoreImage.image != (Object)null)
         {
             Object.DestroyImmediate((Object)cachedAssetStoreImage.image);
         }
     }
 }
		public static AssetStorePreviewManager.CachedAssetStoreImage TextureFromUrl(string url, string label, int textureSize, GUIStyle labelStyle, GUIStyle iconStyle, bool onlyCached)
		{
			if (string.IsNullOrEmpty(url))
			{
				return AssetStorePreviewManager.Instance.m_DummyItem;
			}
			bool flag = true;
			AssetStorePreviewManager.CachedAssetStoreImage cachedAssetStoreImage;
			if (AssetStorePreviewManager.CachedAssetStoreImages.TryGetValue(url, out cachedAssetStoreImage))
			{
				cachedAssetStoreImage.lastUsed = EditorApplication.timeSinceStartup;
				bool flag2 = cachedAssetStoreImage.requestedWidth == textureSize;
				bool flag3 = cachedAssetStoreImage.image != null && cachedAssetStoreImage.image.width == textureSize;
				bool flag4 = cachedAssetStoreImage.requestedWidth == -1;
				if ((flag3 || flag2 || onlyCached) && !flag4)
				{
					AssetStorePreviewManager.Instance.CacheHit++;
					bool flag5 = cachedAssetStoreImage.client != null;
					bool flag6 = cachedAssetStoreImage.label == null;
					bool flag7 = flag5 || flag6;
					bool flag8 = AssetStorePreviewManager.Instance.m_ConvertedThisTick > 1;
					AssetStorePreviewManager.s_NeedsRepaint = (AssetStorePreviewManager.s_NeedsRepaint || flag8);
					return (!flag7 && !flag8) ? AssetStorePreviewManager.RenderEntry(cachedAssetStoreImage, labelStyle, iconStyle) : cachedAssetStoreImage;
				}
				flag = false;
				if (AssetStorePreviewManager.Downloading >= 15)
				{
					return (!(cachedAssetStoreImage.image == null)) ? cachedAssetStoreImage : AssetStorePreviewManager.Instance.m_DummyItem;
				}
			}
			else
			{
				if (onlyCached || AssetStorePreviewManager.Downloading >= 15)
				{
					return AssetStorePreviewManager.Instance.m_DummyItem;
				}
				cachedAssetStoreImage = new AssetStorePreviewManager.CachedAssetStoreImage();
				cachedAssetStoreImage.image = null;
				cachedAssetStoreImage.lastUsed = EditorApplication.timeSinceStartup;
			}
			if (cachedAssetStoreImage.image == null)
			{
				cachedAssetStoreImage.lastFetched = EditorApplication.timeSinceStartup;
			}
			cachedAssetStoreImage.requestedWidth = textureSize;
			cachedAssetStoreImage.label = label;
			AsyncHTTPClient asyncHTTPClient = AssetStorePreviewManager.SetupTextureDownload(cachedAssetStoreImage, url, "previewSize-" + textureSize);
			AssetStorePreviewManager.ExpireCacheEntries();
			if (flag)
			{
				AssetStorePreviewManager.CachedAssetStoreImages.Add(url, cachedAssetStoreImage);
			}
			asyncHTTPClient.Begin();
			AssetStorePreviewManager.Instance.Requested++;
			return cachedAssetStoreImage;
		}
 public static AssetStorePreviewManager.CachedAssetStoreImage TextureFromUrl(string url, string label, int textureSize, GUIStyle labelStyle, GUIStyle iconStyle, bool onlyCached)
 {
   if (string.IsNullOrEmpty(url))
     return AssetStorePreviewManager.Instance.m_DummyItem;
   bool flag1 = true;
   AssetStorePreviewManager.CachedAssetStoreImage cached;
   if (AssetStorePreviewManager.CachedAssetStoreImages.TryGetValue(url, out cached))
   {
     cached.lastUsed = EditorApplication.timeSinceStartup;
     bool flag2 = cached.requestedWidth == textureSize;
     bool flag3 = (Object) cached.image != (Object) null && cached.image.width == textureSize;
     bool flag4 = cached.requestedWidth == -1;
     if ((flag3 || flag2 || onlyCached) && !flag4)
     {
       ++AssetStorePreviewManager.Instance.CacheHit;
       bool flag5 = cached.client != null || cached.label == null;
       bool flag6 = AssetStorePreviewManager.Instance.m_ConvertedThisTick > 1;
       AssetStorePreviewManager.s_NeedsRepaint = AssetStorePreviewManager.s_NeedsRepaint || flag6;
       if (flag5 || flag6)
         return cached;
       return AssetStorePreviewManager.RenderEntry(cached, labelStyle, iconStyle);
     }
     flag1 = false;
     if (AssetStorePreviewManager.Downloading >= 15)
     {
       if ((Object) cached.image == (Object) null)
         return AssetStorePreviewManager.Instance.m_DummyItem;
       return cached;
     }
   }
   else
   {
     if (onlyCached || AssetStorePreviewManager.Downloading >= 15)
       return AssetStorePreviewManager.Instance.m_DummyItem;
     cached = new AssetStorePreviewManager.CachedAssetStoreImage();
     cached.image = (Texture2D) null;
     cached.lastUsed = EditorApplication.timeSinceStartup;
   }
   if ((Object) cached.image == (Object) null)
     cached.lastFetched = EditorApplication.timeSinceStartup;
   cached.requestedWidth = textureSize;
   cached.label = label;
   AsyncHTTPClient asyncHttpClient = AssetStorePreviewManager.SetupTextureDownload(cached, url, "previewSize-" + (object) textureSize);
   AssetStorePreviewManager.ExpireCacheEntries();
   if (flag1)
     AssetStorePreviewManager.CachedAssetStoreImages.Add(url, cached);
   asyncHttpClient.Begin();
   ++AssetStorePreviewManager.Instance.Requested;
   return cached;
 }