/// <summary> /// 遅延サウンドチェック. /// </summary> /// <returns></returns> IEnumerator CheckSoundLatency() { WaitForEndOfFrame wait = new WaitForEndOfFrame(); bool loop = true; while (loop) { CriAtomExLatencyEstimator.EstimatorInfo info = CriAtomExLatencyEstimator.GetCurrentInfo(); switch (info.status) { case CriAtomExLatencyEstimator.Status.Done: loop = false; SoundLatency = (int)info.estimated_latency; PlayerPrefs.SetInt("SoundLatency", SoundLatency); break; case CriAtomExLatencyEstimator.Status.Processing: yield return(wait); break; case CriAtomExLatencyEstimator.Status.Error: Debug.LogError("Sound latency check fail."); loop = false; SoundLatency = 0; break; case CriAtomExLatencyEstimator.Status.Stop: loop = false; SoundLatency = 0; break; } } }
/** * <summary>プラグインの終了(手動終了用)</summary> * <remarks> * <para header='説明'>プラグインを終了します。<br/> * デフォルトでは本関数はOnDestroy関数内で自動的に呼び出されるので、アプリケーションが直接呼び出す必要はありません。</para> * </remarks> */ public void Shutdown() { /* 初期化カウンタの更新 */ initializationCount--; if (initializationCount != 0) { initializationCount = initializationCount < 0 ? 0 : initializationCount; return; } /* CRI Atomライブラリの終了 */ if (initializesAtom) { /* EstimatorがStop状態になるまでFinalize */ while (CriAtomExLatencyEstimator.GetCurrentInfo().status != CriAtomExLatencyEstimator.Status.Stop) { CriAtomExLatencyEstimator.FinalizeModule(); } /* 終了処理の実行 */ CriAtomPlugin.FinalizeLibrary(); } /* CRI File Systemライブラリの終了 */ if (initializesFileSystem) { CriFsPlugin.FinalizeLibrary(); } }
void OnDestroy() { /* 初期化カウンタの更新 */ initializationCount--; if (initializationCount != 0) { return; } /* CRI Manaライブラリの終了 */ if (initializesMana) { CriManaPlugin.FinalizeLibrary(); } /* CRI Atomライブラリの終了 */ if (initializesAtom) { /* EstimatorがStop状態になるまでFinalize */ while (CriAtomExLatencyEstimator.GetCurrentInfo().status != CriAtomExLatencyEstimator.Status.Stop) { CriAtomExLatencyEstimator.FinalizeModule(); } /* 終了処理の実行 */ CriAtomPlugin.FinalizeLibrary(); } /* CRI File Systemライブラリの終了 */ if (initializesFileSystem) { CriFsPlugin.FinalizeLibrary(); } }
public IObservable <Unit> Initialize(string name) { // set cue info cueSheet.name = name; cueSheet.acbFile = name + ".acb"; cueSheet.awbFile = name + ".awb"; if (!CriSoundUtility.AddCueSheet(cueSheet)) { throw new ArgumentException(); } CriAtomExAcb acb = CriAtom.GetAcb(name); CriAtomEx.CueInfo cueInfo; if (!acb.GetCueInfo(name, out cueInfo)) { throw new ArgumentException(); } Length = cueInfo.length; return(Observable .ReturnUnit() .Do(_ => CriAtomExLatencyEstimator.InitializeModule()) .SelectMany(_ => Observable .EveryUpdate() .Select(__ => CriAtomExLatencyEstimator.GetCurrentInfo()) .Where(x => x.status == CriAtomExLatencyEstimator.Status.Processing)) .Do(x => EstimatedLatency = x.estimated_latency) .Do(_ => CriAtomExLatencyEstimator.FinalizeModule()) .AsUnitObservable()); }
/** * <summary>プラグインの初期化(手動初期化用)</summary> * <remarks> * <para header='説明'>プラグインの初期化を行います。<br/> * デフォルトでは本関数はAwake関数内で自動的に呼び出されるので、アプリケーションが直接呼び出す必要はありません。<br/> * <br/> * 初期化パラメタをスクリプトから動的に変更して初期化を行いたい場合、本関数を使用してください。<br/></para> * <para header='注意'>本関数を使用する場合は、 自動初期化を無効にするため、 * ::CriWareInitializer::dontInitializeOnAwake プロパティをインスペクタ上でチェックしてください。<br/> * また、本関数を呼び出すタイミングは全てのプラグインAPIよりも前である必要があります。 * Script Execution Orderが高いスクリプト上で行ってください。</para> * </remarks> * */ public void Initialize() { /* 初期化カウンタの更新 */ initializationCount++; if (initializationCount != 1) { /* CriWareInitializer自身による多重初期化は許可しない */ GameObject.Destroy(this); return; } /* 非実行時にライブラリ機能を使用していた場合は一度終了処理を行う */ if ((CriFsPlugin.IsLibraryInitialized() == true && CriAtomPlugin.IsLibraryInitialized() == true && CriManaPlugin.IsLibraryInitialized() == true) || (CriFsPlugin.IsLibraryInitialized() == true && CriAtomPlugin.IsLibraryInitialized() == true && CriManaPlugin.IsLibraryInitialized() == false) || (CriFsPlugin.IsLibraryInitialized() == true && CriAtomPlugin.IsLibraryInitialized() == false && CriManaPlugin.IsLibraryInitialized() == false)) { #if UNITY_EDITOR || (!UNITY_PS3) /* CRI Manaライブラリの終了 */ if (initializesMana) { CriManaPlugin.FinalizeLibrary(); } #endif /* CRI Atomライブラリの終了 */ if (initializesAtom) { /* EstimatorがStop状態になるまでFinalize */ while (CriAtomExLatencyEstimator.GetCurrentInfo().status != CriAtomExLatencyEstimator.Status.Stop) { CriAtomExLatencyEstimator.FinalizeModule(); } /* 終了処理の実行 */ CriAtomPlugin.FinalizeLibrary(); } /* CRI File Systemライブラリの終了 */ if (initializesFileSystem) { CriFsPlugin.FinalizeLibrary(); } } /* CRI File Systemライブラリの初期化 */ if (initializesFileSystem) { InitializeFileSystem(fileSystemConfig); } /* CRI Atomライブラリの初期化 */ if (initializesAtom) { switch (atomConfig.inGamePreviewMode) { case CriAtomConfig.InGamePreviewSwitchMode.Disable: atomConfig.usesInGamePreview = false; break; case CriAtomConfig.InGamePreviewSwitchMode.Enable: atomConfig.usesInGamePreview = true; break; case CriAtomConfig.InGamePreviewSwitchMode.FollowBuildSetting: atomConfig.usesInGamePreview = UnityEngine.Debug.isDebugBuild; break; default: /* 既に設定されたフラグに従う */ break; } InitializeAtom(atomConfig); } /* シーンチェンジ後もオブジェクトを維持するかどうかの設定 */ if (dontDestroyOnLoad) { DontDestroyOnLoad(transform.gameObject); DontDestroyOnLoad(CriWare.Common.managerObject); } }
/** * <summary>プラグインの初期化(手動初期化用)</summary> * \par 説明: * プラグインの初期化を行います。<br/> * デフォルトでは本関数はAwake関数内で自動的に呼び出されるので、アプリケーションが直接呼び出す必要はありません。<br/> * <br/> * 初期化パラメタをスクリプトから動的に変更して初期化を行いたい場合、本関数を使用してください。<br/> * \par 注意: * 本関数を使用する場合は、 自動初期化を無効にするため、 ::CriWareInitializer::dontInitializeOnAwake プロパティをインスペクタ上でチェックしてください。<br/> * また、本関数を呼び出すタイミングは全てのプラグインAPIよりも前に呼び出す必要があります。Script Execution Orderが高いスクリプト上で行ってください。 * */ public void Initialize() { /* 初期化カウンタの更新 */ initializationCount++; if (initializationCount != 1) { /* CriWareInitializer自身による多重初期化は許可しない */ GameObject.Destroy(this); return; } /* 非実行時にライブラリ機能を使用していた場合は一度終了処理を行う */ if ((CriFsPlugin.IsLibraryInitialized() == true && CriAtomPlugin.IsLibraryInitialized() == true && CriManaPlugin.IsLibraryInitialized() == true) || (CriFsPlugin.IsLibraryInitialized() == true && CriAtomPlugin.IsLibraryInitialized() == true && CriManaPlugin.IsLibraryInitialized() == false) || (CriFsPlugin.IsLibraryInitialized() == true && CriAtomPlugin.IsLibraryInitialized() == false && CriManaPlugin.IsLibraryInitialized() == false)) { /* CRI Manaライブラリの終了 */ if (initializesMana) { CriManaPlugin.FinalizeLibrary(); } /* CRI Atomライブラリの終了 */ if (initializesAtom) { /* EstimatorがStop状態になるまでFinalize */ while (CriAtomExLatencyEstimator.GetCurrentInfo().status != CriAtomExLatencyEstimator.Status.Stop) { CriAtomExLatencyEstimator.FinalizeModule(); } /* 終了処理の実行 */ CriAtomPlugin.FinalizeLibrary(); } /* CRI File Systemライブラリの終了 */ if (initializesFileSystem) { CriFsPlugin.FinalizeLibrary(); } } /* CRI File Systemライブラリの初期化 */ if (initializesFileSystem) { InitializeFileSystem(fileSystemConfig); } /* CRI Atomライブラリの初期化 */ if (initializesAtom) { InitializeAtom(atomConfig); } /* シーンチェンジ後もオブジェクトを維持するかどうかの設定 */ if (dontDestroyOnLoad) { DontDestroyOnLoad(transform.gameObject); DontDestroyOnLoad(CriWare.managerObject); } }