Exemplo n.º 1
0
    public static void InitializeLibrary()
    {
        /* 初期化カウンタの更新 */
        CriManaPlugin.initializationCount++;
        if (CriManaPlugin.initializationCount != 1)
        {
            return;
        }

        /* CriWareInitializerが実行済みかどうかを確認 */
        bool initializerWorking = CriWareInitializer.IsInitialized();

        if (initializerWorking == false)
        {
            Debug.Log("[CRIWARE] CriWareInitializer is not working. "
                      + "Initializes Mana by default parameters.");
        }

        /* 依存ライブラリの初期化 */
        CriFsPlugin.InitializeLibrary();
        CriAtomPlugin.InitializeLibrary();

        /* ライブラリの初期化 */
        CriManaPlugin.criManaUnity_Initialize();

        /* RendererResource の自動登録を実行 */
        CriMana.Detail.AutoResisterRendererResourceFactories.InvokeAutoRegister();
    }
Exemplo n.º 2
0
        public static void Initialize()
        {
            var initializerCreate = false;

            CriWareInitializer initializer = null;

            if (!CriWareInitializer.IsInitialized())
            {
                initializer = UnityUtility.FindObjectOfType <CriWareInitializer>();

                if (initializer == null)
                {
                    initializer           = UnityUtility.CreateGameObject <CriWareInitializer>(null, "CriWareInitializer");
                    initializer.hideFlags = HideFlags.DontSaveInBuild | HideFlags.DontSaveInEditor;
                    initializerCreate     = true;
                }

                initializer.Initialize();
            }

            if (initializer != null && initializerCreate)
            {
                UnityUtility.SafeDelete(initializer.gameObject);
            }
        }
Exemplo n.º 3
0
    public static void InitializeLibrary()
    {
        /* 初期化カウンタの更新 */
        CriAtomPlugin.initializationCount++;
        if (CriAtomPlugin.initializationCount != 1)
        {
            return;
        }

        /* CriWareInitializerが実行済みかどうかを確認 */
        bool initializerWorking = CriWareInitializer.IsInitialized();

        if (initializerWorking == false)
        {
            Debug.Log("[CRIWARE] CriWareInitializer is not working. "
                      + "Initializes Atom by default parameters.");
        }

        /* 依存ライブラリの初期化 */
        CriFsPlugin.InitializeLibrary();

        /* ライブラリの初期化 */
        CriAtomPlugin.criAtomUnity_Initialize();

        /* CriAtomServerのインスタンスを生成 */
                #if UNITY_EDITOR
        /* ゲームプレビュー時のみ生成する */
        if (UnityEngine.Application.isPlaying)
        {
            CriAtomServer.CreateInstance();
        }
                #else
        CriAtomServer.CreateInstance();
                #endif
    }
Exemplo n.º 4
0
        private bool Reload()
        {
            if (string.IsNullOrEmpty(Prefs.resourceDir))
            {
                return(false);
            }

            resourceDir = Prefs.resourceDir;
            isLoaded    = false;

            if (!string.IsNullOrEmpty(Prefs.selectionAssetGUID))
            {
                var assetPath = AssetDatabase.GUIDToAssetPath(Prefs.selectionAssetGUID);
                selectAcbAsset = AssetDatabase.LoadMainAssetAtPath(assetPath);

                if (selectAcbAsset != null)
                {
                    if (EditorApplication.isPlayingOrWillChangePlaymode)
                    {
                        // CriWareInitializerの初期化を待つ.
                        Observable.EveryUpdate()
                        .SkipWhile(_ => !CriWareInitializer.IsInitialized())
                        .First()
                        .Subscribe(
                            _ =>
                        {
                            LoadCueInfo(selectAcbAsset);
                            Repaint();
                        })
                        .AddTo(Disposable);
                    }
                    else
                    {
                        CriForceInitializer.Initialize();

                        LoadCueInfo(selectAcbAsset);
                    }
                }
            }

            return(true);
        }
Exemplo n.º 5
0
        public override void OnEnable(UnityEngine.Object target)
        {
            if (EditorApplication.isPlayingOrWillChangePlaymode)
            {
                // CriWareInitializerの初期化を待つ.
                Observable.EveryUpdate()
                .SkipWhile(_ => !CriWareInitializer.IsInitialized())
                .First()
                .Subscribe(_ => LoadCueInfo(target))
                .AddTo(lifetimeDisposable.Disposable);
            }
            else
            {
                CriForceInitializer.Initialize();

                LoadCueInfo(target);
            }

            clipboardIcon = EditorGUIUtility.IconContent("Clipboard");
        }
Exemplo n.º 6
0
    public static void InitializeLibrary()
    {
        /* 初期化カウンタの更新 */
        CriFsPlugin.initializationCount++;
        if (CriFsPlugin.initializationCount != 1)
        {
            return;
        }

        /* CriWareInitializerが実行済みかどうかを確認 */
        bool initializerWorking = CriWareInitializer.IsInitialized();

        if (initializerWorking == false)
        {
            Debug.Log("[CRIWARE] CriWareInitializer is not working. "
                      + "Initializes FileSystem by default parameters.");
        }

        /* ライブラリの初期化 */
        CriFsPlugin.criFsUnity_Initialize();
    }
Exemplo n.º 7
0
    static void AppInitialize()
    {
        // 画面サイズ固定
        if (Application.platform == RuntimePlatform.WindowsPlayer ||
            Application.platform == RuntimePlatform.OSXPlayer ||
            Application.platform == RuntimePlatform.LinuxPlayer)
        {
            Screen.SetResolution(screenWidth, screenHeight, false);
        }

        if (!CriWareInitializer.IsInitialized())
        {
            var criWareInitializer = new GameObject("CriWareLibraryInitializer").AddComponent <CriWareInitializer>();
            criWareInitializer.dontInitializeOnAwake = true;
            criWareInitializer.Initialize();
            DontDestroyOnLoad(CriWare.managerObject);
        }

        var acbManager = new GameObject("AcbManager").AddComponent <AcbManager>();

        acbManager.LoadAcf();
        DontDestroyOnLoad(acbManager.gameObject);
    }
Exemplo n.º 8
0
        void IInitializable.Initialize()
        {
            // initialize
            Observable.EveryUpdate()
            .Where(_ => CriWareInitializer.IsInitialized())
            .First()
            .SelectMany(_ => ADX2Utility.AddCueSheet(_settings.BuiltInCueSheet)
                        .First())
            .Subscribe(cueSheet =>
            {
                if (cueSheet != null)
                {
                    // add cue list
                    var cueNameList = ADX2Utility.GetCueNameList(cueSheet.name);
                    foreach (var cueName in cueNameList)
                    {
                        _cueSheetDictionary.Add(cueName, cueSheet.name);
                    }

                    // create sound source
                    var source = new GameObject("BGM").AddComponent <CriAtomSource>();
                    source.use3dPositioning = false;
                    source.loop             = true;
                    source.player.AttachFader();
                    _source.Value = source;
                }

                _initialized.Value = true;
            })
            .AddTo(_disposable);

            Observable.Merge(
                _intent.OnPlayAsObservable().Select(x => x.ToString()),
                _intent.OnPlayForNameAsObservable())
            .Where(_ => _initialized.Value)
            .Subscribe(x =>
            {
                string cueSheet;
                if (!_cueSheetDictionary.TryGetValue(x, out cueSheet))
                {
                    Debug.unityLogger.LogError(GetType().Name, $"{x} is not found.");
                    return;
                }

                _source.Value.cueSheet = cueSheet;
                _source.Value.Pause(false);
                _source.Value.Play(x);
            })
            .AddTo(_disposable);

            _intent.OnPauseAsObservable()
            .Where(_ => _source.Value != null)
            .Subscribe(x => _source.Value.Pause(x))
            .AddTo(_disposable);

            _intent.OnStopAsObservable()
            .Where(_ => _source.Value != null)
            .Subscribe(_ => _source.Value.Stop())
            .AddTo(_disposable);

            // volume
            _volumeIntent.OnMasterVolumeAsObservable()
            .Subscribe(x => _masterVolume.Value = x)
            .AddTo(_disposable);

            _volumeIntent.OnVoiceVolumeAsObservable()
            .Subscribe(x => _volume.Value = x)
            .AddTo(_disposable);

            var initialize = _initialized
                             .Where(x => x)
                             .First()
                             .Publish()
                             .RefCount();


            initialize
            .Where(_ => _source.Value != null)
            .SelectMany(_ => _masterVolume)
            .Subscribe(x => _source.Value.volume = x)
            .AddTo(_disposable);

            initialize
            .SelectMany(_ => _volume)
            .Subscribe(x => CriAtom.SetCategoryVolume(_settings.CategoryVolumeName, x))
            .AddTo(_disposable);
        }
Exemplo n.º 9
0
        //----- method -----

        public void Initialize(string decryptKey)
        {
            #if ENABLE_CRIWARE
            // CRIの管理GameObject名にリネーム.
            gameObject.transform.name = CriWareManageObjectName;

            // CriAtomServer → CriAtomの順で初期化しないとCriAtomにCriAtomServerを生成されてしまう.
            CriAtomServer.CreateInstance();

            if (Initializer == null)
            {
                // Acfを管理する為自動初期化を無効化.
                var source            = initializerPrefab.Source;
                var initializerSource = UnityUtility.GetComponent <CriWareInitializer>(source);
                initializerSource.dontInitializeOnAwake = true;

                // 生成.
                Initializer = initializerPrefab.Instantiate <CriWareInitializer>();
                Initializer.transform.name = "Initializer";

                //========================================================
                // ライブラリ初期化(この処理完了後にCRIが有効化される).
                //========================================================

                // 手動管理する為無効化.
                Initializer.dontDestroyOnLoad = false;

                // 認証キー.
                Initializer.decrypterConfig.key = decryptKey;

                // ファイルハンドルの使用数を節約する為、ファイルアクセスが行われるタイミングでのみハンドルを利用するよう変更.
                // ※ 逐次オープンとなるためファイルアクセスの性能は低下する.
                Initializer.fileSystemConfig.numberOfBinders             = 65535;
                Initializer.fileSystemConfig.minimizeFileDescriptorUsage = true;

                // 同時インストール可能数を設定.
                Initializer.fileSystemConfig.numberOfInstallers = 65535;

                // 初期化実行.
                Initializer.Initialize();
            }

            if (ErrorHandler == null)
            {
                var errorHandlerObject = UnityUtility.CreateEmptyGameObject(gameObject, "ErrorHandler");

                UnityUtility.SetActive(errorHandlerObject, false);

                // Awakeが実行されないように非アクティブでAddComponent.
                ErrorHandler = errorHandlerObject.AddComponent <CriWareErrorHandler>();
                ErrorHandler.dontDestroyOnLoad = false;

                UnityUtility.SetActive(errorHandlerObject, true);
            }

            if (!CriWareInitializer.IsInitialized())
            {
                Initializer.Initialize();
            }

            // CriFsServerはライブラリの初期化後に生成.
            CriFsServer.CreateInstance();

            // CriAtomはライブラリの初期化後に生成.
            var criAtom = gameObject.AddComponent <CriAtom>();

            // CriAtomのSetupが隠蔽されているので手動で初期化する.
            criAtom.acfFile = Initializer.atomConfig.acfFileName;

            if (!string.IsNullOrEmpty(criAtom.acfFile))
            {
                var acfPath = PathUtility.Combine(global::CriWare.streamingAssetsPath, criAtom.acfFile);

                acfPath += CriAssetDefinition.AcfExtension;

                CriAtomEx.RegisterAcf(null, acfPath);
            }
            #endif
        }
Exemplo n.º 10
0
 public static void Setup(bool useEmb = false)
 {
     if (MyCriManager.sInit)
     {
         return;
     }
     if (CriWareInitializer.IsInitialized())
     {
         DebugUtility.LogError("[MyCriManager] CriWareInitializer already initialized. if you added it or CriAtomSource in scene, remove it.");
     }
     else if (Object.op_Inequality(Object.FindObjectOfType(typeof(CriWareInitializer)), (Object)null))
     {
         DebugUtility.LogError("[MyCriManager] CriWareInitializer already exist. if you added it in scene, remove it.");
     }
     else if (Object.op_Inequality(Object.FindObjectOfType(typeof(CriAtom)), (Object)null))
     {
         DebugUtility.LogError("[MyCriManager] CriAtom already exist. if you added it in scene, remove it.");
     }
     else
     {
         GameObject gameObject = (GameObject)Object.Instantiate(Resources.Load("CriWareLibraryInitializer"), Vector3.get_zero(), Quaternion.get_identity());
         if (Object.op_Inequality((Object)gameObject, (Object)null))
         {
             CriWareInitializer component = (CriWareInitializer)gameObject.GetComponent <CriWareInitializer>();
             if (Object.op_Inequality((Object)component, (Object)null))
             {
                 if (useEmb)
                 {
                     MyCriManager.AcfFileName = Path.Combine(CriWare.get_streamingAssetsPath(), MyCriManager.AcfFileNameEmb);
                     ((CriWareDecrypterConfig)component.decrypterConfig).authenticationFile = (__Null)MyCriManager.DatFileNameEmb;
                 }
                 else
                 {
                     MyCriManager.AcfFileName = Path.Combine(CriWare.get_streamingAssetsPath(), MyCriManager.AcfFileNameAB);
                     ((CriWareDecrypterConfig)component.decrypterConfig).authenticationFile = (__Null)MyCriManager.DatFileNameAB;
                 }
                 ((CriAtomConfig)component.atomConfig).acfFileName = (__Null)string.Empty;
                 DebugUtility.LogWarning("[MyCriManager] Init with EMB:" + (object)useEmb + " acf:" + MyCriManager.AcfFileName + " dat:" + (object)((CriWareDecrypterConfig)component.decrypterConfig).authenticationFile);
                 MyCriManager.sCriWareInitializer = gameObject;
                 MyCriManager.UsingEmb            = useEmb;
                 AndroidJavaClass androidJavaClass = new AndroidJavaClass("android.os.Build");
                 string           str = androidJavaClass != null ? (string)((AndroidJavaObject)androidJavaClass).GetStatic <string>("MODEL") : (string)null;
                 if (!string.IsNullOrEmpty(str))
                 {
                     if (str.CompareTo("F-05D") == 0)
                     {
                         ((CriAtomConfig)component.atomConfig).androidBufferingTime      = (__Null)200;
                         ((CriAtomConfig)component.atomConfig).androidStartBufferingTime = (__Null)150;
                     }
                     if (str.CompareTo("T-01D") == 0)
                     {
                         ((CriAtomConfig)component.atomConfig).androidBufferingTime      = (__Null)200;
                         ((CriAtomConfig)component.atomConfig).androidStartBufferingTime = (__Null)150;
                     }
                     if (str.CompareTo("AT200") == 0)
                     {
                         ((CriAtomConfig)component.atomConfig).androidBufferingTime      = (__Null)220;
                         ((CriAtomConfig)component.atomConfig).androidStartBufferingTime = (__Null)220;
                     }
                     if (str.CompareTo("F-04E") == 0)
                     {
                         ((CriAtomConfig)component.atomConfig).androidBufferingTime      = (__Null)220;
                         ((CriAtomConfig)component.atomConfig).androidStartBufferingTime = (__Null)220;
                     }
                     if (str.CompareTo("F-11D") == 0)
                     {
                         ((CriAtomConfig)component.atomConfig).androidBufferingTime      = (__Null)400;
                         ((CriAtomConfig)component.atomConfig).androidStartBufferingTime = (__Null)400;
                     }
                     if (str.CompareTo("IS15SH") == 0)
                     {
                         ((CriAtomConfig)component.atomConfig).androidBufferingTime      = (__Null)400;
                         ((CriAtomConfig)component.atomConfig).androidStartBufferingTime = (__Null)400;
                     }
                     if (str.CompareTo("IS17SH") == 0)
                     {
                         ((CriAtomConfig)component.atomConfig).androidBufferingTime      = (__Null)400;
                         ((CriAtomConfig)component.atomConfig).androidStartBufferingTime = (__Null)400;
                     }
                     if (str.CompareTo("ISW13F") == 0)
                     {
                         ((CriAtomConfig)component.atomConfig).androidBufferingTime      = (__Null)220;
                         ((CriAtomConfig)component.atomConfig).androidStartBufferingTime = (__Null)220;
                     }
                     DebugUtility.Log("MODEL:" + str);
                 }
                 component.Initialize();
             }
         }
         MyCriManager.sInit = true;
     }
 }