private void AddUseList(AssetFileBase file)
 {
     if (!this.usingFileList.Contains(file))
     {
         this.usingFileList.Add(file);
     }
 }
Exemple #2
0
        //ロード待ちリストを追加
        bool TryAddLoadingFileList(AssetFileBase file)
        {
            if (file.IsLoadEnd)
            {
                return(false);
            }
            if (loadingFileList.Contains(file))
            {
                return(false);
            }

            if (loadingFileList.Count < loadFileMax)
            {
                loadingFileList.Add(file);
                if (isOutPutDebugLog)
                {
                    Debug.Log("Load Start :" + file.FileName);
                }
                StartCoroutine(LoadAsync(file));
                return(true);
            }
            else if (!loadWaitFileList.Contains(file))
            {
                loadWaitFileList.Add(file);
                return(false);
            }
            else
            {
                return(false);
            }
        }
Exemple #3
0
        //ロード待ちのファイルをロードする
        void LoadNextFile()
        {
            AssetFileBase next = null;

            foreach (AssetFileBase file in loadWaitFileList)
            {
                if (next == null)
                {
                    next = file;
                }
                else
                {
                    if (file.Priority < next.Priority)
                    {
                        next = file;
                    }
                }
            }
            if (next != null)
            {
                if (next.IsLoadEnd)
                {
                    //ダミーファイルなどによって既にロード済み
                    loadWaitFileList.Remove(next);
                }
                else if (TryAddLoadingFileList(next))
                {
                    loadWaitFileList.Remove(next);
                }
                else
                {
                    Debug.LogError("Failed To Load file " + next.FileName);
                }
            }
        }
Exemple #4
0
 // 通常のロード
 AssetFile LoadSub(AssetFileBase file, System.Object referenceObj)
 {
     AddUseList(file);
     file.ReadyToLoad(AssetFileLoadPriority.Default, referenceObj);
     AddLoadFile(file);
     return(file);
 }
Exemple #5
0
 //使用中のファイルリストとして設定
 void AddUseList(AssetFileBase file)
 {
     if (!usingFileList.Contains(file))
     {
         usingFileList.Add(file);
     }
 }
Exemple #6
0
        // 管理ファイルを追加
        AssetFileBase AddSub(string path, IAssetFileSettingData settingData)
        {
            //管理テーブルにあるなら、そこから
            string        path2 = GetPathChangedSoundExt(path);
            AssetFileBase file  = FindFromTbl(path, path2, settingData);

            if (file != null)
            {
                return(file);
            }

/*			if (path.Contains(" "))
 *                      {
 *                              Debug.LogWarning("[" + path + "] contains white space");
 *                      }
 */         AssetBundleInfo assetBundleInfo = FindAssetBundleInfo(path, path2);
            AssetFileInfo   fileInfo        = new AssetFileInfo(path, settings, assetBundleInfo);

            //staticなアセットにあるなら、そこから
            file = StaticAssetManager.FindAssetFile(this, fileInfo, settingData);
            if (file == null)
            {
                //カスタムロードなアセットにあるなら、そこから
                file = CustomLoadManager.Find(this, fileInfo, settingData);
                if (file == null)
                {
                    //宴形式の通常ファイルロード
                    file = new AssetFileUtage(this, fileInfo, settingData);
                }
            }
            fileTbl.Add(path, file);
            return(file);
        }
Exemple #7
0
        ///***以下、ファイル追加・ロード処理***///

        //サウンドファイルを指定のキーから探す
        AssetFileBase FindFromSoundKey(string path, string key)
        {
            if (string.IsNullOrEmpty(key))
            {
                return(null);
            }

//			string path2 = GetPathChangedSoundExt(path);
            AssetFileBase file = FindFromTbl(path, "", null);

            if (file != null)
            {
                return(file);
            }

            foreach (var keyValue in fileTbl)
            {
                file = keyValue.Value;
                IAssetFileSoundSettingDataKey setting = file.SettingData as IAssetFileSoundSettingDataKey;
                if (setting != null && setting.Key == key)
                {
                    return(file);
                }
            }
            return(null);
        }
Exemple #8
0
        // ロードエラー時のデフォルトコールバック
        void CallbackFileLoadError(AssetFile file)
        {
            AssetFileBase errorFile = file as AssetFileBase;
            string        errorMsg  = file.LoadErrorMsg + "\n" + file.FileName;

            Debug.LogError(errorMsg);

            if (SystemUi.GetInstance() != null)
            {
                if (isWaitingRetry)
                {
                    StartCoroutine(CoWaitRetry(errorFile));
                }
                else
                {
                    isWaitingRetry = true;
                    //リロードを促すダイアログを表示
                    SystemUi.GetInstance().OpenDialog1Button(
                        errorMsg, LanguageSystemText.LocalizeText(SystemText.Retry),
                        () =>
                    {
                        isWaitingRetry = false;
                        ReloadFileSub(errorFile);
                    }
                        );
                }
            }
            else
            {
                ReloadFileSub(errorFile);
            }
        }
 private AssetFile BackGroundLoadSub(AssetFileBase file, object referenceObj)
 {
     this.AddUseList(file);
     file.ReadyToLoad(AssetFileLoadPriority.BackGround, referenceObj);
     this.AddLoadFile(file);
     return(file);
 }
Exemple #10
0
 //リトライダイアログからの応答を待つ
 IEnumerator CoWaitRetry(AssetFileBase file)
 {
     while (isWaitingRetry)
     {
         yield return(null);
     }
     ReloadFileSub(file);
 }
Exemple #11
0
 // ダウンロード
 void DownloadSub(AssetFileBase file)
 {
     if (file.CheckCacheOrLocal())
     {
         return;
     }
     file.ReadyToLoad(AssetFileLoadPriority.DownloadOnly, null);
     AddLoadFile(file);
 }
 public AssetFileBase Find(AssetFileManager mangager, AssetFileInfo fileInfo, IAssetFileSettingData settingData)
 {
     if (this.OnFindAsset != null)
     {
         AssetFileBase asset = null;
         this.OnFindAsset(mangager, fileInfo, settingData, ref asset);
         if (asset != null)
         {
             return(asset);
         }
     }
     return(null);
 }
        void OnGuiFile(string name, AssetFileBase file)
        {
            Status status = GetFileStatus(file);

            EditorGUILayout.BeginHorizontal();
            {
                style.normal.textColor = GetStatusColor(status);
                style.richText         = true;
                GUILayout.Label(status.ToString(), style, paramWidth0);

//				GUILayout.Label("" + file.Version, paramWidth0);
                GUILayout.Label(name);
            }
            EditorGUILayout.EndHorizontal();
        }
Exemple #14
0
 // コールバックつきのロードコルーチン
 IEnumerator CoLoadWait(AssetFileBase file, System.Action <AssetFile> onComplete)
 {
     if (file.IsLoadEnd)
     {
         onComplete(file);
     }
     else
     {
         LoadSub(file, this);
         while (!file.IsLoadEnd)
         {
             yield return(null);
         }
         onComplete(file);
     }
 }
        Status GetFileStatus(AssetFileBase file)
        {
            if (loadingFileList.Contains(file))
            {
                return(Status.Loading);
            }
            if (loadWaitFileList.Contains(file))
            {
                return(Status.WaitingToLoad);
            }
            if (usingFileList.Contains(file))
            {
                return(file.ReferenceCount > 0 ? Status.Using : Status.Pooling);
            }

            return(Status.NotLoaded);
        }
Exemple #16
0
        IEnumerator LoadAsync(AssetFileBase file)
        {
            // StartCoroutineの仕様変更のためタイミングによって無限呼び出しされるので1frame待つように修正
            yield return(null);

            yield return(file.LoadAsync(
                             //ロード成功
                             () =>
            {
                if (isOutPutDebugLog)
                {
                    Debug.Log("Load End :" + file.FileName);
                }
                loadingFileList.Remove(file);
                LoadNextFile();
            },
                             //ロード失敗
                             () =>
            {
                //ロード失敗
                if (dummyFiles.isEnable)
                {
                    //ダミーファイルをロード
                    if (dummyFiles.outputErrorLog)
                    {
                        Debug.LogError("Load Failed. Dummy file loaded:" + file.FileName + "\n" + file.LoadErrorMsg);
                    }
                    file.LoadDummy(dummyFiles);
                    loadingFileList.Remove(file);
                    LoadNextFile();
                }
                else
                {
                    Debug.LogError("Load Failed :" + file.FileName + "\n" + file.LoadErrorMsg);
                    //ロード失敗処理
                    if (CallbackError != null)
                    {
                        CallbackError(file);
                    }
                }
            }
                             ));
        }
Exemple #17
0
 IEnumerator LoadAsync(AssetFileBase file)
 {
     yield return(file.LoadAsync(
                      //ロード成功
                      () =>
     {
         if (isOutPutDebugLog)
         {
             Debug.Log("Load End :" + file.FileName);
         }
         loadingFileList.Remove(file);
         LoadNextFile();
     },
                      //ロード失敗
                      () =>
     {
         //ロード失敗
         Debug.LogError("Load Failed :" + file.FileName + "\n" + file.LoadErrorMsg);
         if (dummyFiles.isEnable)
         {
             //ダミーファイルをロード
             if (dummyFiles.outputErrorLog)
             {
                 Debug.LogError("Load Failed. Dummy file loaded:" + file.FileName + "\n" + file.LoadErrorMsg);
             }
             file.LoadDummy(dummyFiles);
         }
         else
         {
             //ロード失敗処理
             if (CallbackError != null)
             {
                 CallbackError(file);
             }
         }
     }
                      ));
 }
Exemple #18
0
 //ロード待ちリストに追加
 void AddLoadFile(AssetFileBase file)
 {
     TryAddLoadingFileList(file);
 }
Exemple #19
0
 // コールバックつきのロード
 void LoadSub(AssetFileBase file, System.Action <AssetFile> onComplete)
 {
     StartCoroutine(CoLoadWait(file, onComplete));
 }
Exemple #20
0
 // プリロード
 void PreloadSub(AssetFileBase file, System.Object referenceObj)
 {
     AddUseList(file);
     file.ReadyToLoad(AssetFileLoadPriority.Preload, referenceObj);
     AddLoadFile(file);
 }
Exemple #21
0
 void FindAsset(AssetFileManager mangager, AssetFileInfo fileInfo, IAssetFileSettingData settingData, ref AssetFileBase asset)
 {
     asset = new SampleCustomFile(mangager, fileInfo, settingData);
 }
 private void FindAsset(AssetFileManager mangager, AssetFileInfo fileInfo, IAssetFileSettingData settingData, ref AssetFileBase asset)
 {
     if (this.IsVideoType(fileInfo, settingData))
     {
         asset = new AdvLocalVideoFile(this, mangager, fileInfo, settingData);
     }
 }
Exemple #23
0
 //ファイルのロードを上書き
 void FindAsset(AssetFileManager mangager, AssetFileInfo fileInfo, IAssetFileSettingData settingData, ref AssetFileBase asset)
 {
     if (IsVideoType(fileInfo, settingData))
     {
         //宴形式の通常ファイルロード
         asset = new AdvLocalVideoFile(this, mangager, fileInfo, settingData);
     }
 }
Exemple #24
0
 //ファイルリロード
 void ReloadFileSub(AssetFileBase file)
 {
     StartCoroutine(ReloadFileSubAsync(file));
 }
Exemple #25
0
        //ファイルリロード(無限ループよけに1フレーム遅らせる)
        IEnumerator ReloadFileSubAsync(AssetFileBase file)
        {
            yield return(null);

            yield return(StartCoroutine(LoadAsync(file)));
        }
 private void AddLoadFile(AssetFileBase file)
 {
     this.TryAddLoadingFileList(file);
 }