public void LoadWeb(IconDownloadTask task) { string cacheKey = task.CacheKey; CacheImage cacheImageByKey = this.GetCacheImageByKey(cacheKey); if (cacheImageByKey != null) { cacheImageByKey.AddRef(1); task.Result(true, cacheImageByKey.Tex); } else { WebCImageTask webCacheTaskByKey = this.GetWebCacheTaskByKey(cacheKey); if (webCacheTaskByKey != null) { webCacheTaskByKey.JoinHandler(task); } else { WebCImageTask cacheTask = new WebCImageTask(task, cacheKey); this.webTasks.Add(cacheTask); cacheTask.Complete += delegate(CacheImage image) { if (image != null) { this.cached.Add(image); } this.webTasks.Remove(cacheTask); }; cacheTask.Run(this.localRunner); } } }
public void LoadLocal(LocalIconTask task) { string path = task.Path; CacheImage cacheImageByKey = this.GetCacheImageByKey(path); if (cacheImageByKey != null) { cacheImageByKey.AddRef(1); task.Result(true, cacheImageByKey.Tex); } else { LocalCImageTask localCacheTaskByKey = this.GetLocalCacheTaskByKey(path); if (localCacheTaskByKey != null) { localCacheTaskByKey.JoinHandler(task); } else { LocalCImageTask cacheTask = new LocalCImageTask(task, path); this.localTasks.Add(cacheTask); cacheTask.Complete += delegate(CacheImage image) { if (image != null) { this.cached.Add(image); } this.localTasks.Remove(cacheTask); }; cacheTask.Run(this.localRunner); } } }
private void ReportResults() { bool success = base.Tex != null; Texture2D tex = base.Tex; int num = 0; if (!this.initial.IsCanceled) { num++; this.initial.Result(success, tex); } if (this.joined != null) { for (int i = 0; i < this.joined.Count; i++) { if (!this.joined[i].IsCanceled) { num++; this.joined[i].Result(success, tex); } } } CacheImage cacheImage = null; if (base.Tex != null) { cacheImage = new CacheImage(this.initial.Path); cacheImage.Tex = base.Tex; cacheImage.AddRef(num); } base.FireCompleted(cacheImage); }
protected void FireCompleted(CacheImage ci) { if (this.Completed) { return; } this.Completed = true; if (this.Complete != null) { this.Complete(ci); } }
protected int CacheSort(CacheImage x, CacheImage y) { if (x.LastUse > y.LastUse) { return(-1); } if (x.LastUse < y.LastUse) { return(1); } return(0); }
public void Unload(string cacheKey, Texture2D tex) { CacheImage cacheImage = this.cached.Find((CacheImage img) => img.CacheKey == cacheKey); if (cacheImage != null) { cacheImage.RemoveRef(); if (cacheImage.Tex != tex) { FMLogger.vCore("****Wtf RC tex not match"); if (tex != null) { this.localRunner.DestroyTex(tex, false); } } } else if (tex != null) { FMLogger.vCore("***Wtf RC tex not found"); this.localRunner.DestroyTex(tex, false); } }