private void itemComplete(EventX e) { AssetResource resource = e.target as AssetResource; resource.removeEventListener(EventX.COMPLETE, itemComplete); resource.removeEventListener(EventX.FAILED, itemComplete); //resource.removeEventListener(AssetEvent.PROGRESS, itemProgress); int index = runningList.IndexOf(resource); if (index != -1) { runningList.RemoveAt(index); } if (isStart == false) { return; } running--; loaded = total - queue.Count; this.dispatchEvent(new EventX(EventX.PROGRESS, (float)loaded / total)); Action <EventX> action = null; if (resultActions.TryGetValue(resource.id, out action)) { action(e); } CallLater.Add(loadNext); }
private void itemComplete(EventX e) { AssetResource resource = e.target as AssetResource; AssetsManager.bindEventHandle(resource, itemComplete, false); resource.removeEventListener(EventX.PROGRESS, itemProgress); resource.removeEventListener(EventX.DISPOSE, itemComplete); runningList.Remove(resource); running--; Log("QuEnd: {0} {1},{2},{3}", running, e.type, resource.url, queue.Count); if (running < 0) { DebugX.LogError("queueLoader error runnig=" + running); } if (e.type != EventX.COMPLETE) { faildCount++; if (maxFailCount > 0 && faildCount > maxFailCount) { this.simpleDispatch(EventX.FAILED, e); } DebugX.LogWarning("QuItemFailed:" + resource.url + ":" + e.type + " faildCount:" + faildCount + "/" + maxFailCount); } preProgress = 0.0f; loaded = total - (queue.Count + running); //DebugX.Log("kk:" + (loaded) / (float)total); this.simpleDispatch(EventX.PROGRESS, loaded / (float)total); Action <EventX> action = null; string key = resource.url.ToLower(); if (resultActions.TryGetValue(key, out action)) { action(e); } _doNext(); }
private void resourceDisposeHandle(EventX e) { AssetResource res = e.target as AssetResource; res.removeEventListener(EventX.DISPOSE, resourceDisposeHandle); string uri = res.id; if (_resourceMap.ContainsKey(uri)) { _resourceMap.Remove(uri); } }
private void manifesHandle(EventX e) { AssetResource resource = e.target as AssetResource; resource.removeEventListener(EventX.PROGRESS, progressHandle); AssetsManager.bindEventHandle(resource, manifesHandle, false); if (e.type != EventX.COMPLETE) { _data = null; resourceComplete(e.type); return; } QueueLoader queueLoader = new QueueLoader(); queueLoader.retryCount = 3; queueLoader.addEventListener(EventX.COMPLETE, dependsHandle); if (isProgress) { queueLoader.addEventListener(EventX.PROGRESS, progressHandle); } assetBundleManifest = resource.data as AssetBundleManifest; string[] dependencies = assetBundleManifest.GetAllDependencies(dependKey); //Hash128 hash = assetBundleManifest.GetAssetBundleHash(dependKey); string hashValue = null; string hashKey = null; AssetResource tempResource; foreach (string dependency in dependencies) { string url = manifesPrefix + dependency; string uri = manifesKey + "/" + dependency; //Debug.Log(dependency); hashValue = assetBundleManifest.GetAssetBundleHash(dependency).ToString(); hashKey = manifesKey + "_" + hashValue; if (resourceHash128Maping.TryGetValue(hashKey, out tempResource) == false) { tempResource = AssetsManager.getResource(url, uri, LoaderXDataType.ASSETBUNDLE); resourceHash128Maping.Add(hashKey, tempResource); } /*else if (url != tempResource.url) * { * Debug.Log("redirect:" + url + " to:" + tempResource.url); * }*/ tempResource.retain(); queueLoader.add(tempResource); } queueLoader.start(); }
private void resourceDisposeHandle(EventX e) { AssetResource res = e.target as AssetResource; res.removeEventListener(EventX.DISPOSE, resourceDisposeHandle); string uri = res.url.ToLower(); //DebugX.Log("assetDisposeAsset:" + uri); if (_resourceMap.ContainsKey(uri)) { _resourceMap.Remove(uri); } }
public void _dispose(string url) { AssetResource res = null; //DebugX.Log("disposeAsset:"+url); url = url.ToLower(); if (_resourceMap.TryGetValue(url, out res)) { _resourceMap.Remove(url); res.removeEventListener(EventX.DISPOSE, resourceDisposeHandle); res.__dispose(); } }
private void dependsHandle(EventX e) { currentProgress = 0.8f; float progress = (_totalDependCount - _needLoadedDependCount) / (float)_totalDependCount; simpleDispatch(EventX.PROGRESS, 0.7f * progress + 0.1f); AssetResource tempResource = e.target as AssetResource; AssetsManager.bindEventHandle(tempResource, dependsHandle, false); tempResource.removeEventListener(EventX.DEPEND_READY, dependsHandle); _needLoadedDependCount--; checkAllComplete(); }
public void _dispose(string uri) { AssetResource res = null; if (_resourceMap.TryGetValue(uri, out res)) { _resourceMap.Remove(uri); res.removeEventListener(EventX.DISPOSE, resourceDisposeHandle); res.__dispose(); //trace("dispose",uri); } else { //RFTraceWarn(uri+" 不在AssetsManager里!"); } }