Ejemplo n.º 1
0
        public void Initialize(string sourceDir, uint numInstallers, bool simulateMode = false)
        {
            if (isInitialized)
            {
                return;
            }

            this.sourceDir     = sourceDir;
            this.simulateMode  = Application.isEditor && simulateMode;
            this.numInstallers = numInstallers;

            #if ENABLE_CRIWARE_FILESYSTEM
            installQueueing = new Dictionary <string, CriAssetInstall>();

            //------ CriInstaller初期化 ------

            var moduleConfig = CriFsWebInstaller.defaultModuleConfig;

            // 同時インストール数.
            moduleConfig.numInstallers = numInstallers;
            // タイムアウト時間.
            moduleConfig.inactiveTimeoutSec = (uint)TimeoutLimit.TotalSeconds;

            CriFsWebInstaller.InitializeModule(moduleConfig);

            Observable.EveryUpdate()
            .Subscribe(_ => CriFsWebInstaller.ExecuteMain())
            .AddTo(Disposable);
            #endif

            isInitialized = true;
        }
Ejemplo n.º 2
0
        public void Dispose()
        {
            m_loadCtrl.Dispose();

            // Finalize CriFsWebInstaller module
            CriFsWebInstaller.FinalizeModule();
        }
Ejemplo n.º 3
0
        //--------------------------------------------
        // 初期化
        //--------------------------------------------
        #region ===== INIT =====

        /// <summary>
        /// 初期化処理
        /// 継承先で何らかの初期化処理が必要な場合はこちらへ
        /// ※Awake 以外からの呼び出し禁止
        /// </summary>
        protected override void Init()
        {
            // Initialize CriFsWebInstaller module
            CriFsWebInstaller.InitializeModule(CriFsWebInstaller.defaultModuleConfig);

            m_loadCtrl = new CriPackageLoadController(this, DOWNLOAD_CONCURRENCY);

            StartCoroutine(m_loadCtrl.LoadManifest("manifest.cpk", "testVer"));
        }
Ejemplo n.º 4
0
        //--------------------------------------------
        // 初期化
        //--------------------------------------------
        #region ===== INITIALIZE =====

        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="_concurrency">同時インストール可能数</param>
        public CriPackageDownloadController(int _concurrency)
        {
            int concurrency = Mathf.Max(_concurrency, 1);               //NonZero

            m_webInstallers = new CriFsWebInstaller[concurrency];
            for (int i = 0; i < concurrency; i++)
            {
                m_webInstallers[i] = new CriFsWebInstaller();
            }
        }
Ejemplo n.º 5
0
        protected override void OnRelease()
        {
            if (isInitialized)
            {
                foreach (var item in installQueueing.Values)
                {
                    item.Installer.Stop();
                    item.Installer.Dispose();
                }

                installQueueing.Clear();

                CriFsWebInstaller.FinalizeModule();
            }
        }
Ejemplo n.º 6
0
        protected override void OnRelease()
        {
            if (isInitialized)
            {
                #if ENABLE_CRIWARE_FILESYSTEM
                foreach (var item in installQueueing.Values)
                {
                    item.Installer.Stop();
                    item.Installer.Dispose();
                }

                installQueueing.Clear();

                CriFsWebInstaller.FinalizeModule();
                #endif
            }
        }
Ejemplo n.º 7
0
            private IEnumerator Install(string downloadUrl, string installPath, IProgress <float> progress = null)
            {
                var numInstallers = Instance.numInstallers;

                // 同時インストール数待ち.
                while (numInstallers <= installCount)
                {
                    yield return(null);
                }

                installCount++;

                using (Installer = new CriFsWebInstaller())
                {
                    Installer.Copy(downloadUrl, installPath);

                    CriFsWebInstaller.StatusInfo statusInfo;

                    while (true)
                    {
                        statusInfo = Installer.GetStatusInfo();

                        if (progress != null)
                        {
                            progress.Report((float)statusInfo.receivedSize / statusInfo.contentsSize);
                        }

                        if (statusInfo.status != CriFsWebInstaller.Status.Busy)
                        {
                            break;
                        }

                        yield return(null);
                    }

                    if (statusInfo.error != CriFsWebInstaller.Error.None)
                    {
                        throw new Exception(string.Format("[Download Error] {0}\n{1}", AssetInfo.ResourcePath, statusInfo.error));
                    }
                }

                installCount--;
            }
Ejemplo n.º 8
0
    void Update()
    {
                #pragma warning disable 162
        if (CriWare.supportsCriFsInstaller == true)
        {
            CriFsInstaller.ExecuteMain();
            if (CriFsWebInstaller.isInitialized)
            {
                CriFsWebInstaller.ExecuteMain();
            }
        }
                #pragma warning restore 162

        for (int i = 0; i < this.requestList.Count; i++)
        {
            CriFsRequest request = this.requestList[i];
            request.Update();
        }
        this.requestList.RemoveAll((CriFsRequest request) => { return(request.isDone || request.isDisposed); });
    }
Ejemplo n.º 9
0
        //--------------------------------------------
        // Update
        //--------------------------------------------
        #region ===== UPDATE =====

        void Update()
        {
            // DL中はこれを常に実行させる
            CriFsWebInstaller.ExecuteMain();
        }
Ejemplo n.º 10
0
        //--------------------------------------------
        // Public API
        //--------------------------------------------
        #region ===== PUBLIC_API =====


        /// <summary>
        /// Download 実行
        /// </summary>
        /// <param name="_cpkName">CPK名</param>
        /// <param name="_versionHashName">CPKのHash値文字列</param>
        /// <param name="_onComplete">ダウンロード完了コールバック</param>
        /// <returns></returns>
        public IEnumerator DonwloadCPK(string _cpkName, string _versionHashName, OnCompleteDownload _onComplete)
        {
            string url = CriPackageUtility.GetPackegeURL(_cpkName);

            // 無効なURL
            if (string.IsNullOrEmpty(url))
            {
                if (_onComplete != null)
                {
                    _onComplete.Invoke(false);
                }
                yield break;
            }
            // Cache上に存在している
            if (CriPackageCacheController.IsCached(_cpkName, _versionHashName))
            {
                if (_onComplete != null)
                {
                    _onComplete.Invoke(true);
                }
                yield break;
            }

            CriFsWebInstaller installer = GetEmptyInstaller();

            // 空くまで待機
            while (installer == null)
            {
                installer = GetEmptyInstaller();
                yield return(null);
            }
            string outputPath = CriPackageCacheController.GetOutputPath(_cpkName, _versionHashName);

            // Directory 生成
            CriPackageCacheController.CreateAssetCacheDir(_cpkName);
            // 古いバージョンのキャッシュがあれば削除
            CriPackageCacheController.DeleteTargetOtherVersionPackage(_cpkName, _versionHashName);

            // Download 開始
            installer.Copy(url, outputPath);
            // 終了まで待機
            CriFsWebInstaller.StatusInfo info = installer.GetStatusInfo();
            while (info.status == CriFsWebInstaller.Status.Busy)
            {
                info = installer.GetStatusInfo();
                yield return(null);
            }

            info = installer.GetStatusInfo();
            switch (info.status)
            {
            case CriFsWebInstaller.Status.Error:
            {
                //エラーによる失敗
                if (_onComplete != null)
                {
                    _onComplete.Invoke(false);
                }
            } break;

            case CriFsWebInstaller.Status.Stop:
            {
                // 誰かに止められた
                if (_onComplete != null)
                {
                    _onComplete.Invoke(false);
                }
            } break;

            case CriFsWebInstaller.Status.Complete:
            {
                // 成功
                if (_onComplete != null)
                {
                    _onComplete.Invoke(true);
                }
            } break;
            }
        }