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