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; }
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; }