예제 #1
0
 public void AddRequester(AssetLoader.ObjectCallback callback, AssetLoader.OnDownloading onDownloading, object callbackData)
 {
     AssetCache.ObjectRequester item = new AssetCache.ObjectRequester
     {
         m_callback     = callback,
         MOnDownloading = onDownloading,
         m_callbackData = callbackData
     };
     this.m_requesters.Add(item);
 }
예제 #2
0
 public override void OnProgressUpdate(string name, float progress)
 {
     foreach (AssetCache.ObjectRequester current in this.m_requesters)
     {
         AssetLoader.OnDownloading mOnDownloading = current.MOnDownloading;
         if (mOnDownloading != null)
         {
             mOnDownloading(name, progress, current.m_callbackData);
         }
     }
 }
예제 #3
0
 public void DownloadBindata(AssetLoader.CompleteCallback2 completeCallback, AssetLoader.OnDownloading onDownloading, object callbackData)
 {
     new Task(this.DownLoadBindata2(completeCallback, onDownloading, callbackData), true);
 }
예제 #4
0
 private IEnumerator DownLoadBindata2(AssetLoader.CompleteCallback2 completeCallback, AssetLoader.OnDownloading onDownloading, object callbackData)
 {
     AssetLoader.< DownLoadBindata2 > c__Iterator10 <DownLoadBindata2> c__Iterator = new AssetLoader.< DownLoadBindata2 > c__Iterator10();
예제 #5
0
    private UnityEngine.Object LoadBundle(string family, string bundlePathName, string assetName, bool persistent, AssetLoader.ObjectCallback callback, AssetLoader.OnDownloading onDownloading, object callbackData)
    {
        if (string.IsNullOrEmpty(assetName))
        {
            return(null);
        }
        long  num   = TimeUtils.BinaryStamp();
        Asset asset = Asset.Create(assetName, family, persistent, false, false);

        AssetCache.CachedAsset        cachedAsset = new AssetCache.CachedAsset();
        AssetCache.ObjectCacheRequest objectCacheRequest;
        if (!AssetCache.HasRequest(asset))
        {
            objectCacheRequest = new AssetCache.ObjectCacheRequest();
            AssetCache.AddRequest(asset, objectCacheRequest);
        }
        else
        {
            objectCacheRequest = AssetCache.GetRequest <AssetCache.ObjectCacheRequest>(asset);
        }
        objectCacheRequest.AddRequester(callback, onDownloading, callbackData);
        AssetCache.StartLoading(asset.Family.ToString());
        if (AssetCache.HasItem(asset))
        {
            cachedAsset = AssetCache.Find(asset);
            cachedAsset.LastRequestTimestamp = num;
            asset = cachedAsset.GetAsset();
        }
        else if (this.m_assetBundleDict.ContainsKey(asset.Family) && this.m_assetBundleDict[asset.Family] != null)
        {
            if (!this.m_assetBundleDict[asset.Family].Contains(asset.Name))
            {
                return(null);
            }
            UnityEngine.Object assetObject = this.m_assetBundleDict[family].Load(assetName, AssetBundleInfo.FamilyInfo[family].TypeOf);
            cachedAsset.SetAsset(asset);
            cachedAsset.SetAssetObject(assetObject);
            cachedAsset.CreatedTimestamp     = num;
            cachedAsset.LastRequestTimestamp = num;
            AssetCache.Add(asset, cachedAsset);
        }
        else if (AssetCache.CanLoadBundle(asset.Family))
        {
            this.LoadBundleFromDisk(asset, objectCacheRequest, cachedAsset);
        }
        if (cachedAsset.GetAssetObject() != null)
        {
            objectCacheRequest.OnProgressUpdate(assetName, 1f);
            objectCacheRequest.OnLoadSucceed();
            objectCacheRequest.OnLoadComplete(assetName, cachedAsset.GetAssetObject());
            AssetCache.RemoveRequest(asset);
            AssetCache.StopLoading(assetName);
        }
        return(cachedAsset.GetAssetObject());
    }