private void Update() { // clean out any unloaded bundles for (int i = mPendingAssetBundleUnloads.Count - 1; i >= 0; i--) { mLoadedAssets.Remove(mPendingAssetBundleUnloads[i]); mPendingAssetBundleUnloads.RemoveAt(i); } // update pending asset bundle loads for (int i = mPendingAssetBundleLoads.Count - 1; i >= 0; i--) { var pending = mPendingAssetBundleLoads[i]; if (pending.request.isDone) { AssetBundleStatus status = new AssetBundleStatus(); status.bundle = pending.request.assetBundle; status.type = pending.type; status.refcount = pending.type == AssetBundleLoadType.Dependency ? 1 : 0; mLoadedAssets.Add(pending.request.assetBundle.name, status); if (pending.type == AssetBundleLoadType.Manifest) { LoadAllFromAsset <AssetBundleManifest>(pending.request.assetBundle.name, delegate(Object[] o) { mManifest = o[0] as AssetBundleManifest; state = AssetBundleManagerState.Ready; }); } mPendingAssetBundleLoads.RemoveAt(i); } } if (Initialized() && mPendingAssetBundleLoads.Count == 0) { state = AssetBundleManagerState.Ready; } // update pending loads _from_ assetbundles for (int i = mPendingAssetBundleRequests.Count - 1; i >= 0; i--) { var pending = mPendingAssetBundleRequests[i]; if (pending.request.isDone) { pending.callback(pending.request.allAssets); mPendingAssetBundleRequests.RemoveAt(i); } } if (state == AssetBundleManagerState.Ready) { for (int i = mDeferredAssetBundleLoads.Count - 1; i >= 0; i--) { LoadAssetBundle(mDeferredAssetBundleLoads[i].bundle, mDeferredAssetBundleLoads[i].type); mDeferredAssetBundleLoads.RemoveAt(i); } } }
public void UpdateAssetBundleStatus(IgnoreCaseString key, AssetBundleStatus status, bool and = false) { GameAssetBundle ab; if (GetAssetBundle(key, out ab)) { if (and) { ab.AssetStatus |= status; } else { ab.AssetStatus = status; } UpdateAssetBundle(key, ref ab); } }
public void AddObjectRef(ref GameAssetBundle gameAssetBundle) { if (ObjectReferences == null) { ObjectReferences = ListPool <string> .Get(); } if (RefHistories == null) { RefHistories = ListPool <UserRefHistory> .Get(); } if (AssetsList == null) { AssetsList = ListPool <AssetInfo> .Get(); } AssetBundlename = gameAssetBundle.AssetBundleInfo.AssetBundleName; AssetBundleSize = gameAssetBundle.AssetBundleInfo.AssetSize; Status = gameAssetBundle.AssetStatus; UserRefCount = gameAssetBundle.UserReference; if (gameAssetBundle.References != null) { foreach (var weakobj in gameAssetBundle.References) { if (weakobj != null && weakobj.IsAlive) { ObjectReferences.Add(GetPath(weakobj.Target as Object)); } } } if (gameAssetBundle.loadedAssets != null) { foreach (var item in gameAssetBundle.loadedAssets) { var asset = item.Value; if (asset != null) { long size = Profiler.GetRuntimeMemorySizeLong(asset); LoadedSize += size; AssetInfo info = new AssetInfo(); info.Size = size; info.Path = GetPath(asset); AssetsList.Add(info); } } } #if UNITY_EDITOR if (gameAssetBundle.history != null) { foreach (var historydata in gameAssetBundle.history) { RefHistories.Add(historydata); } } #endif }
public static bool ContainsEnum(this AssetBundleStatus md, AssetBundleStatus targetmd) { return((md & targetmd) != 0); }
public static bool HasEnum(this AssetBundleStatus md, AssetBundleStatus targetmd) { return((md & targetmd) == targetmd); }
public bool IsStatus(ref AssetBundleContext context, out GameAssetBundle assetBundle, AssetBundleStatus status) { if (context.Cache.GetAssetBundle(AssetBundleName, out assetBundle)) { if (assetBundle.AssetStatus.ContainsEnum(status)) { return(true); } else if (SubTasks != null && SubTasks.Count > 0) { for (int i = 0; i < SubTasks.Count; i++) { if (SubTasks[i].IsStatus(ref context, status)) { return(true); } } } } return(false); }
public bool IsStatus(ref AssetBundleContext context, AssetBundleStatus status) { GameAssetBundle assetBundle; return(IsStatus(ref context, out assetBundle, status)); }
public void UpdateAssetBundleStatus(string key, AssetBundleStatus status, bool and = false) { UpdateAssetBundleStatus(new IgnoreCaseString(key), status, and); }