示例#1
0
 static public int CreatWWW(IntPtr l)
 {
     try {
         WWWRequest self = (WWWRequest)checkSelf(l);
         self.CreatWWW();
         pushValue(l, true);
         return(1);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
示例#2
0
    void Update()
    {
        if (!ConfigLoaded)
        {
            return;
        }

        // Check if any WWW is finished or errored
        List <string> newFinisheds = new List <string>();
        List <string> newFaileds   = new List <string>();

        foreach (WWWRequest request in processingRequest.Values)
        {
            if (request.www.error != null)
            {
                if (request.triedTimes - 1 < bmConfiger.downloadRetryTime)
                {
                    // Retry download
                    request.CreatWWW();
                }
                else
                {
                    newFaileds.Add(request.url);
                    Debug.LogError("Download " + request.url + " failed for " + request.triedTimes + " times.\nError: " + request.www.error);
                }
            }
            else if (request.www.isDone)
            {
                newFinisheds.Add(request.url);
            }
        }

        // Move complete bundles out of downloading list
        foreach (string finishedUrl in newFinisheds)
        {
            succeedRequest.Add(finishedUrl, processingRequest[finishedUrl]);
            //var bundle = processingRequest[finishedUrl].www.assetBundle;
            processingRequest.Remove(finishedUrl);
        }

        // Move failed bundles out of downloading list
        foreach (string finishedUrl in newFaileds)
        {
            if (!failedRequest.ContainsKey(finishedUrl))
            {
                failedRequest.Add(finishedUrl, processingRequest[finishedUrl]);
            }
            processingRequest.Remove(finishedUrl);
        }

        // Start download new bundles
        int waitingIndex = 0;

        while (processingRequest.Count < bmConfiger.downloadThreadsCount &&
               waitingIndex < waitingRequests.Count)
        {
            WWWRequest curRequest = waitingRequests[waitingIndex++];

            bool canStartDownload = curRequest.bundleData == null || isBundleDependenciesReady(curRequest.bundleData.name);
            if (canStartDownload)
            {
                waitingRequests.Remove(curRequest);
                curRequest.CreatWWW();
                processingRequest.Add(curRequest.url, curRequest);
            }
        }
    }
示例#3
0
    void Update()
    {
        if (!ConfigLoaded)
        {
            return;
        }

        // Check if any WWW is finished or errored
        List <string> newFinisheds = new List <string>();
        List <string> newFaileds   = new List <string>();

        foreach (WWWRequest request in processingRequest.Values)
        {
            if (request.error != null)
            {
                if (request.triedTimes - 1 < bmConfiger.downloadRetryTime)
                {
                    // Retry download
                    request.CreatWWW();
                }
                else
                {
                    request.DisposeWWW();
                    newFaileds.Add(request.bundleName);
                    Debug.LogError("{BM}Download Bundle " + request.bundleName + "URL:" + request.info.url + "failed for " + request.triedTimes + " times.\nError: " + request.error);
                }
            }
            else if (request.isDone)
            {
                request.DisposeWWW();
                newFinisheds.Add(request.bundleName);
            }
        }

        // Move complete bundles out of downloading list
        foreach (string finishedUrl in newFinisheds)
        {
            var req = processingRequest[finishedUrl];
            if (req.info.needDownload)
            {
                req.info.needDownload = false;
            }
            req.assetBundle.name = req.bundleName;
            dbgDownloadBundles.Add(req.assetBundle);
            succeedRequest.Add(finishedUrl, req);
            processingRequest.Remove(finishedUrl);
        }

        // Move failed bundles out of downloading list
        foreach (string finishedUrl in newFaileds)
        {
            if (!failedRequest.ContainsKey(finishedUrl))
            {
                failedRequest.Add(finishedUrl, processingRequest[finishedUrl]);
            }
            processingRequest.Remove(finishedUrl);
        }

        // Start download new bundles
        int waitingIndex = 0;

        while (processingRequest.Count < bmConfiger.downloadThreadsCount &&
               waitingIndex < waitingRequests.Count)
        {
            WWWRequest curRequest = waitingRequests[waitingIndex++];

            bool canStartDownload = curRequest.info == null || isBundleDependenciesReady(curRequest.info.name);
            if (canStartDownload)
            {
                waitingRequests.Remove(curRequest);
                curRequest.CreatWWW();
                processingRequest.Add(curRequest.bundleName, curRequest);
            }
        }

        if (needSaveDownloadInfoCache && processingRequest.Count == 0 && waitingRequests.Count == 0)
        {
            needSaveDownloadInfoCache = false;
            BMUtility.SaveToPersistentData(bundles, DOWNLOAD_INFO_CACHE_NAME);
        }
    }    //update end
示例#4
0
    void Update()
    {
        if (!ConfigLoaded)
        {
            return;
        }

        // Check if any WWW is finished or errored
        List <string> newFinisheds = new List <string>();
        List <string> newFaileds   = new List <string>();

        foreach (WWWRequest request in processingRequest.Values)
        {
            if (request.www.error != null && request.www.error != "")
            {
                if (request.triedTimes - 1 < bmConfiger.downloadRetryTime)
                {
                    // Retry download
                    request.CreatWWW();
                }
                else
                {
                    newFaileds.Add(request.url);
                    Debug.LogError("Download " + request.url + " failed for " + request.triedTimes + " times.\nError: " + request.www.error);
                }
            }
            else if (request.www.isDone)
            {
                newFinisheds.Add(request.url);
            }
        }

        // Move complete bundles out of downloading list
        foreach (string finishedUrl in newFinisheds)
        {
            succeedRequest.Add(finishedUrl, processingRequest[finishedUrl]);
            //var bundle = processingRequest[finishedUrl].www.assetBundle;
            processingRequest.Remove(finishedUrl);
        }

        // Move failed bundles out of downloading list
        foreach (string finishedUrl in newFaileds)
        {
            if (!failedRequest.ContainsKey(finishedUrl))
            {
                failedRequest.Add(finishedUrl, processingRequest[finishedUrl]);
            }
            processingRequest.Remove(finishedUrl);
        }

        // Start download new bundles
        for (int i = waitingRequests.Count - 1; i >= 0; --i)        // Need to remove elements when iterating so have to iterarte list backward.
        {
            if (processingRequest.Count >= bmConfiger.downloadThreadsCount)
            {
                break;
            }

            WWWRequest curRequest = waitingRequests[i];

            bool canStartDownload = curRequest.bundleData == null || isBundleDependenciesReady(curRequest.bundleData.name);
            if (canStartDownload)
            {
                waitingRequests.RemoveAt(i);
                curRequest.CreatWWW();
                processingRequest.Add(curRequest.url, curRequest);
            }
        }
    }
示例#5
0
    void Update()
    {
        if (!ConfigLoaded)
        {
            return;
        }

        // Check if any WWW is finished or errored
        //����Ƿ����������WWW���󣬻��ߴ���
        List <string> newFinisheds = new List <string>();
        List <string> newFaileds   = new List <string>();

        foreach (WWWRequest request in processingRequest.Values)
        {
            //�����������ļ��ص���Ϣ
            if (progressManager != null && progressManager.setCurrentDownloadFileEvent != null)
            {
                progressManager.setCurrentDownloadFileEvent(request.url);
            }
            if (progressManager != null && progressManager.setCurrentDownloadProgressEvent != null)
            {
                float progress = ProgressOfBundle(Path.GetFileName(request.url));
                progressManager.setCurrentDownloadProgressEvent(progress);
            }

            if (request.www.error != null)
            {
                if (request.triedTimes - 1 < bmConfiger.downloadRetryTime)
                {
                    // Retry download
                    request.CreatWWW();
                }
                else
                {
                    newFaileds.Add(request.url);
                    Debug.LogError("Download " + request.url + " failed for " + request.triedTimes + " times.\nError: " + request.www.error);
                }
            }
            else if (request.www.isDone)
            {
                newFinisheds.Add(request.url);
            }
        }

        List <BundleBuildState> saveBundleStates = new List <BundleBuildState>();
        List <BundleData>       saveBundleData   = new List <BundleData>();

        // �����سɹ��İ����б��processingRequest��ɾ�������뵽succeedRequest��
        foreach (string finishedUrl in newFinisheds)
        {
            succeedRequest.Add(finishedUrl, processingRequest[finishedUrl]);
            //var bundle = processingRequest[finishedUrl].www.assetBundle;
            processingRequest.Remove(finishedUrl);

#if UNITY_STANDALONE_WIN
            //�����سɹ������ݱ��浽����
            string bundleName = separateUrl(finishedUrl);
            if (bundleDict.ContainsKey(bundleName))
            {
                saveBundleData.Add(bundleDict[bundleName]);
                saveBundleStates.Add(buildStatesDict[bundleName]);
                string filePath = downloadLoadRootUrl + "/" + bundleDict[bundleName].bundleRelativePath + "/"
                                  + bundleName + "." + bmConfiger.bundleSuffix;
                FileUtils.saveFileFromStream(succeedRequest[finishedUrl].www.bytes, filePath);
            }
#endif
        }
#if UNITY_STANDALONE_WIN
        LoadBundleManager.getInstace().changeBundleData(saveBundleData, LoadBundleManager.BundleOperate.Add);
        LoadBundleManager.getInstace().changeBundleStates(saveBundleStates, LoadBundleManager.BundleOperate.Add);
#endif

        // ������ʧ�ܵİ����б��processingRequest��ɾ�������뵽faileRequest��
        foreach (string finishedUrl in newFaileds)
        {
            if (!failedRequest.ContainsKey(finishedUrl))
            {
                failedRequest.Add(finishedUrl, processingRequest[finishedUrl]);
            }
            processingRequest.Remove(finishedUrl);
        }

        // ��ʼ�����°�
        int waitingIndex = 0;
        while (processingRequest.Count < bmConfiger.downloadThreadsCount &&
               waitingIndex < waitingRequests.Count)
        {
            WWWRequest curRequest = waitingRequests[waitingIndex++];

            bool canStartDownload = curRequest.bundleData == null || isBundleDependenciesReady(curRequest.bundleData.name);
            if (canStartDownload)
            {
                waitingRequests.Remove(curRequest);
                curRequest.CreatWWW();
                processingRequest.Add(curRequest.url, curRequest);
            }
        }
    }