private static IEnumerator LoadAssetAsyncCallbackRoutine<T>(string assetBundleName, AssetBundleLoadAssetOperation request, Func<T, bool> onAssetLoaded) where T : UnityEngine.Object { yield return AssetBundleManager.m_Instance.StartCoroutine(request); if (AssetBundleManager.m_LoadedAssetBundles.ContainsKey(assetBundleName)) { T asset = request.GetAsset<T>(); if (onAssetLoaded == null || !onAssetLoaded(asset)) { AssetBundleManager.UnloadAssetBundle(assetBundleName); } } else { onAssetLoaded((T)((object)null)); } if (AssetBundleManager.m_PendingRoutines.ContainsKey(onAssetLoaded)) { AssetBundleManager.m_PendingRoutines.Remove(onAssetLoaded); } yield break; }