Example #1
0
    private void ProcessNew(int poolIdx)
    {
        WWWRequestHandle curHandle = mRequestHandleQueue.Fetch();

        if (curHandle != null)
        {
            string url  = curHandle.Url;
            string hash = GetHash(curHandle.Type, curHandle.Url);
            if (mRequestHandleMap.ContainsKey(hash))
            {
                //log
                return;
            }

            if (HasResource(curHandle.Type, curHandle.Url))
            {
                curHandle.TrySuccessCallback();
            }

            UnityWebRequest mWorkingWww = UnityWebRequest.Get(url);
            mWorkingWww.SendWebRequest();

            mWWWObjMap.Add(hash, mWorkingWww);

            mRequestHandleMap.Add(hash, curHandle);
            mPool[poolIdx] = curHandle;
        }
    }
Example #2
0
    public WWWRequestHandle Abort(WWWRequestHandle handle)
    {
        //string hash = GetHash(handle.Type, handle.Url);
        //if (mRequestHandleMap.ContainsKey(hash))
        //{
        //    mRequestHandleMap.Remove(hash);
        //}

        return(handle);
    }
Example #3
0
    public IWWWRequestHandle BuildRequest(WWWType type, string url)
    {
        WWWRequestHandle requestHandle;

        requestHandle = new WWWRequestHandle(this);
        requestHandle.SetType(type);
        requestHandle.SetUrl(url);

        return(requestHandle);
    }
Example #4
0
    public WWWRequestHandle SendRequest(WWWRequestHandle handle)
    {
        string hash = GetHash(handle.Type, handle.Url);

        if (mRequestHandleMap.ContainsKey(hash))
        {
            mRequestHandleMap[hash] = handle;
        }
        mRequestHandleQueue.Push(handle);
        return(handle);
    }
Example #5
0
    public WWWRequestHandle RequestWWW(string url, Command cmd, MessageFunction completeCallback, MessageFunction errorCallback, int Id)
    {
        if (url == null)
        {
            DebugUtil.Error("ResourceManager::RequestWWW() url is null");
            return(null);
        }
        WWWRequestHandle ret = new WWWRequestHandle();

        ret.url = url;
        ret.cmd = cmd;
        ret.Id  = Id;
        ret.completeCallback = completeCallback;
        ret.errorCallback    = errorCallback;
        fetchingQueue.Add(ret);
        ret.m_LoadResTimeCost.Start();
        return(ret);
    }
Example #6
0
    public WWWRequestHandle RequestWWW(string url, Command cmd, MessageFunction completeCallback, MessageFunction errorCallback)
    {
        if (url == null)
        {
            DebugUtil.Error("ResourceManager::RequestWWW() url is null");
            return(null);
        }
        //DebugOutPut.Log("ResourceManager WWW at url: " + url, DebugLogLevel.LogLevel1);
        WWWRequestHandle ret = new WWWRequestHandle();

        ret.url = url;
        ret.cmd = cmd;
        ret.completeCallback = completeCallback;
        ret.errorCallback    = errorCallback;
        fetchingQueue.Add(ret);
        ret.m_LoadResTimeCost.Start();
        return(ret);
    }
Example #7
0
 public void Abort(WWWRequestHandle handle)
 {
     if (handle == null)
     {
         return;
     }
     if (workingRequest == handle)
     {
         workingWWW.Dispose();
         workingWWW     = null;
         workingRequest = null;
         fetchingQueue.RemoveAt(0);
     }
     else
     {
         fetchingQueue.Remove(handle);
     }
 }
Example #8
0
 public float QueryProgress(WWWRequestHandle handle)
 {
     if (handle == null)
     {
         return(0);
     }
     if (workingRequest == handle)
     {
         return(workingWWW.progress);
     }
     else if (fetchingQueue.Contains(handle))
     {
         return(0);
     }
     else
     {
         return(1);
     }
 }
Example #9
0
        private void _Create(Command cmd)
        {
            BaseUI ui = null;

            _dicUI.TryGetValue(cmd.UIType, out ui);
            if (ui != null)
            {
                //已加载
                if (cmd.Listener != null)
                {
                    cmd.Listener(ui);
                }

                if (cmd.lua_fun != null)
                {
                    cmd.lua_fun.Call(ui.gameObject);
                }

                return;
            }
            else
            {
                if (AppConst.PrefabBundleMode && cmd.UIType != E_UIType.Fight &&
                    cmd.UIType != E_UIType.UILoadingPanel &&
                    cmd.UIType != E_UIType.PanelMessageBox &&
                    cmd.UIType != E_UIType.UILoginPanel)
                {
                    string PrefabUrl = BundleResMgr.GetResourceURL(cmd.UIType.ToString(), "unity3d");
                    if (PrefabUrl == null)
                    {
                        DebugUtil.Error("Atlas [" + cmd.UIType.ToString() + "] is null!!!");
                    }
                    WWWRequestHandle handle = BundleResMgr.Instance.RequestWWW(PrefabUrl, cmd, OnLoadUIFinished, null);
                }
                else
                {
                    AppFacade.Instance.GetManager <ResourceMgr>(ManagerName.Resource).LoadAssetAndInstance(cmd.UIType.ToString(), (asset) => { OnLoadUIFinished(asset, cmd); });
                }
            }
        }
Example #10
0
    //用来遍历
    //private int CurPoolOffset;
    //protected WWWRequestHandle mWorkingRequest;
    //protected UnityWebRequest mWorkingWww;


    public void Update(float dTime)
    {
        for (int i = 0; i < PoolSize; i++)
        {
            WWWRequestHandle mRequestHanlde = mPool[i];
            UnityWebRequest  mUnityWebReq   = null;
            if (mRequestHanlde != null)
            {
                if (mWWWObjMap.TryGetValue(GetHash(mRequestHanlde.Type, mRequestHanlde.Url), out mUnityWebReq))
                {
                    if (mUnityWebReq.isNetworkError || mUnityWebReq.isHttpError)
                    {
                        mRequestHanlde.TryFailCallback();
                        mPool[i] = null;
                        mWWWObjMap.Remove(GetHash(mRequestHanlde.Type, mRequestHanlde.Url));
                    }
                    else if (mUnityWebReq.isDone)
                    {
                        mRequestHanlde.TrySuccessCallback();
                        Debug.Log(mUnityWebReq.downloadHandler.text);
                        GetHash(mRequestHanlde.Type, mRequestHanlde.Url);
                        //缓存
                        mPool[i] = null;
                    }
                }
                else
                {
                    Debug.Log("no unity web obj found");
                    mRequestHanlde.TryFailCallback();
                    mPool[i] = null;
                }
            }
            else
            {
                ProcessNew(i);
            }
        }
    }
Example #11
0
 public void Update()
 {
     if (workingRequest == null) //not in downloading process
     {
         if (fetchingQueue.Count > 0)
         {
             //use tmp handle to clean status in resourcemanager first
             WWWRequestHandle tmp = fetchingQueue[0];
             if (HasResource(tmp.url))
             {
                 fetchingQueue.RemoveAt(0);
                 tmp.IsDone = true;
                 if (tmp.completeCallback != null)
                 {
                     tmp.completeCallback(tmp, tmp.cmd);
                 }
                 tmp.m_LoadResTimeCost.Stop();
                 System.TimeSpan cost           = tmp.m_LoadResTimeCost.Elapsed;
                 string          timecostdetial = string.Format("{0} Loaded,time cost: {1}", tmp.url, cost.TotalSeconds);
                 DebugUtil.Info(timecostdetial);
                 return;
             }
             workingRequest = tmp;
             workingWWW     = new WWW(workingRequest.url);
             //DebugOutPut.Log("ResourceManager new WWW at url: " + workingRequest.url, DebugLogLevel.LogLevel1);
         }
     }
     else //currently downloading
     {
         if (workingWWW.error != null)
         {
             if (workingWWW.error.Contains("WWW request was cancelled")) //not an error
             {
                 DebugUtil.Error("ResourceCanceled: " + workingWWW.url);
                 workingWWW     = null;
                 workingRequest = null;
                 fetchingQueue.RemoveAt(0);
             }
             else
             {
                 DebugUtil.Error("WWW download has error: " + workingWWW.error + " url: " + workingWWW.url);
                 //use tmp handle to clean status in resourcemanager first
                 WWWRequestHandle tmp = workingRequest;
                 workingWWW     = null;
                 workingRequest = null;
                 fetchingQueue.RemoveAt(0);
                 if (tmp.errorCallback != null)
                 {
                     tmp.errorCallback(tmp, tmp.cmd);
                 }
                 //throw new System.Exception(workingWWW.error + " : " + workingWWW.url);
                 tmp.m_LoadResTimeCost.Stop();
                 System.TimeSpan cost           = tmp.m_LoadResTimeCost.Elapsed;
                 string          timecostdetial = string.Format("{0} Loaded,time cost: {1}", tmp.url, cost.TotalSeconds);
                 DebugUtil.Info(timecostdetial);
             }
         }
         else
         {
             if (workingWWW.isDone)
             {
                 //DebugOutPut.Log("WWW download complete: " + workingWWW.url, DebugLogLevel.LogLevel1);
                 workingRequest.IsDone             = true;
                 fetchedWWWMap[workingRequest.url] = workingWWW;
                 workingWWW = null;
                 //use tmp handle to clean status in resourcemanager first
                 WWWRequestHandle tmp = workingRequest;
                 workingRequest = null;
                 fetchingQueue.RemoveAt(0);
                 if (tmp.completeCallback != null)
                 {
                     tmp.completeCallback(tmp, tmp.cmd);
                 }
                 tmp.m_LoadResTimeCost.Stop();
                 System.TimeSpan cost           = tmp.m_LoadResTimeCost.Elapsed;
                 string          timecostdetial = string.Format("{0} Loaded,time cost: {1}", tmp.url, cost.TotalSeconds);
                 DebugUtil.Info(timecostdetial);
             }
         }
     }
 }
Example #12
0
        private void OnLoadUIFinished(object asset, Command cmd)
        {
            if (asset != null && cmd != null)
            {
                GameObject go = null;
                if (AppConst.PrefabBundleMode && cmd.UIType != E_UIType.Fight &&
                    cmd.UIType != E_UIType.UILoadingPanel &&
                    cmd.UIType != E_UIType.PanelMessageBox &&
                    cmd.UIType != E_UIType.UILoginPanel)
                {
                    WWWRequestHandle handle    = asset as WWWRequestHandle;
                    AssetBundle      bundle    = handle.RetainAsAssetBundle();
                    GameObject       LoadedRes = bundle.LoadAsset(cmd.UIType.ToString()) as GameObject;
                    if (LoadedRes != null)
                    {
                        go = GameObject.Instantiate(LoadedRes) as GameObject;
                    }
                }
                else
                {
                    go = asset as GameObject;
                }
                go.SetActive(false);
                BaseUI ui = go.AddComponent(cmd.MonoType) as BaseUI;
                if (cmd.bLuaBehaviour)
                {
                    go.AddComponent <LuaBehaviour>().OnInit(null);
                }
                ui.mUIType = cmd.UIType;
                go.name    = ui.GetUIType().ToString();
                _curUI     = ui;
                if (ui.mUIStyle == E_UIStyle.BackClose)
                {
                    _backSequence.Push(ui);
                }
                AddUI(ui);

                if (ui.mUIType == E_UIType.UILoadingPanel)
                {
                    GameObject.DontDestroyOnLoad(go);
                }

                if (cmd.CommandType == Command.CmdType.CreateAndShow)
                {
                    if (cmd.lua_fun != null)
                    {
                        ShowUI_LUA(cmd.UIType, cmd.lua_fun, cmd.IsCloseOtherUIs, cmd.CreateCanCall, cmd.Params);
                    }
                    else
                    {
                        ShowUI(cmd.UIType, cmd.MonoType, cmd.Listener, cmd.IsCloseOtherUIs, cmd.CreateCanCall, cmd.Params);
                    }
                }
                else if (cmd.CreateCanCall && cmd.Listener != null)
                {
                    cmd.Listener(ui);
                }
                else if (cmd.CreateCanCall && cmd.lua_fun != null)
                {
                    cmd.lua_fun.Call(ui.gameObject);
                }
                //ui.CachedTransform.SetParent(UIContainer,false);

                ui.UIInit();

                AddColliderBgForWindow(ui);

                LayerMgr.Instance.SetLayer(ui);
            }
        }
Example #13
0
 public void Push(WWWRequestHandle handle)
 {
     queue.Enqueue(handle);
 }