예제 #1
0
    public static void FinalizeLibrary()
    {
        /* 初期化カウンタの更新 */
        CriFsPlugin.initializationCount--;
        if (CriFsPlugin.initializationCount < 0)
        {
            CriFsPlugin.initializationCount = 0;
            if (CriFsPlugin.IsLibraryInitialized() == false)
            {
                return;
            }
        }
        if (CriFsPlugin.initializationCount != 0)
        {
            return;
        }

        /* パラメータを初期値に戻す */
        installBufferSize = defaultInstallBufferSize;

        /* 未破棄のDisposableを破棄 */
        CriDisposableObjectManager.CallOnModuleFinalization(CriDisposableObjectManager.ModuleType.Fs);

        /* ライブラリの終了 */
        CriFsPlugin.criFsUnity_Finalize();
    }
예제 #2
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
    }
예제 #3
0
    /**
     * <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();
        }
    }
예제 #4
0
    void OnDestroy()
    {
        /* 初期化カウンタの更新 */
        initializationCount--;
        if (initializationCount != 0)
        {
            return;
        }

        /* CRI Manaライブラリの終了 */
        if (initializesMana)
        {
            CriManaPlugin.FinalizeLibrary();
        }

        /* CRI Atomライブラリの終了 */
        if (initializesAtom)
        {
            /* 終了処理の実行 */
            CriAtomPlugin.FinalizeLibrary();
        }

        /* CRI File Systemライブラリの終了 */
        if (initializesFileSystem)
        {
            CriFsPlugin.FinalizeLibrary();
        }
    }
예제 #5
0
    public static void SetConfigAdditionalParameters_ANDROID(
        int device_read_bps)
    {
#if !UNITY_EDITOR && UNITY_ANDROID
        CriFsPlugin.criFsUnity_SetConfigAdditionalParameters_ANDROID(device_read_bps);
#endif
    }
예제 #6
0
 public static bool InitializeFileSystem(CriFsConfig config)
 {
     /* CRI File Systemライブラリの初期化 */
     if (!CriFsPlugin.IsLibraryInitialized())
     {
         CriFsPlugin.SetConfigParameters(
             config.numberOfLoaders,
             config.numberOfBinders,
             config.numberOfInstallers,
             (config.installBufferSize * 1024),
             config.maxPath,
             config.minimizeFileDescriptorUsage,
             config.enableCrcCheck
             );
         {
             /* Ver.2.03.03 以前は 0 がデフォルト値だったことの互換性維持のための処理 */
             if (config.androidDeviceReadBitrate == 0)
             {
                 config.androidDeviceReadBitrate = CriFsConfig.defaultAndroidDeviceReadBitrate;
             }
         }
         CriFsPlugin.SetConfigAdditionalParameters_ANDROID(config.androidDeviceReadBitrate);
         CriFsPlugin.InitializeLibrary();
         if (config.userAgentString.Length != 0)
         {
             CriFsUtility.SetUserAgentString(config.userAgentString);
         }
         return(true);
     }
     else
     {
         return(false);
     }
 }
예제 #7
0
    public static void InitializeLibrary()
    {
        /* 初期化カウンタの更新 */
        CriFsPlugin.initializationCount++;
        if (CriFsPlugin.initializationCount != 1)
        {
            return;
        }

        /* シーン実行前に初期化済みの場合は終了させる */
        if (CriFsPlugin.IsLibraryInitialized() == true)
        {
            CriFsPlugin.FinalizeLibrary();
            CriFsPlugin.initializationCount = 1;
        }

        /* 初期化パラメータが設定済みかどうかを確認 */
        if (CriFsPlugin.isConfigured == false)
        {
            Debug.Log("[CRIWARE] FileSystem initialization parameters are not configured. "
                      + "Initializes FileSystem by default parameters.");
        }

        /* ライブラリの初期化 */
        CriFsPlugin.criFsUnity_Initialize();
    }
예제 #8
0
    public static void FinalizeLibrary()
    {
        /* 初期化カウンタの更新 */
        CriAtomPlugin.initializationCount--;
        if (CriAtomPlugin.initializationCount < 0)
        {
            Debug.LogError("[CRIWARE] ERROR: Atom library is already finalized.");
            return;
        }
        if (CriAtomPlugin.initializationCount != 0)
        {
            return;
        }

        /* CriAtomListener の共有ネイティブリスナーを破棄 */
        CriAtomListener.DestroySharedNativeListener();

        /* CriAtomServerのインスタンスを破棄 */
        CriAtomServer.DestroyInstance();

        /* ライブラリの終了 */
        CriAtomPlugin.criAtomUnity_Finalize();

        /* 依存ライブラリの終了 */
        CriFsPlugin.FinalizeLibrary();
    }
예제 #9
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();
    }
예제 #10
0
    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();
        }
    }
예제 #11
0
    public static void SetConfigParameters(
        int num_loaders, int num_binders, int num_installers, int argInstallBufferSize, int max_path, bool minimize_file_descriptor_usage, bool dummy_flag)
    {
        CriFsPlugin.criFsUnity_SetConfigParameters(
            num_loaders, num_binders, num_installers, max_path, minimize_file_descriptor_usage, dummy_flag);

        CriFsPlugin.isConfigured = true;
    }
예제 #12
0
 public static void FinalizeModule()
 {
     if (!isInitialized)
     {
         UnityEngine.Debug.LogError("[CRIWARE] CriFsWebInstaller module is not initialized.");
         return;
     }
     CriFsPlugin.FinalizeLibrary();
     isInitialized = false;
 }
예제 #13
0
 public static void InitializeModule(ModuleConfig config)
 {
     if (isInitialized)
     {
         UnityEngine.Debug.LogError("[CRIWARE] CriFsWebInstaller module is already initialized.");
         return;
     }
     CriFsPlugin.InitializeLibrary();
     isInitialized = true;
 }
예제 #14
0
    public static void InitializePluginForEditor()
    {
        if (CriAtomPlugin.IsLibraryInitialized())
        {
            return;
        }

        var criInitCom = FindObjectOfType <CriWareInitializer>();

        if (criInitCom != null)
        {
            if (criInitCom.initializesFileSystem)
            {
                CriFsConfig config = criInitCom.fileSystemConfig;
                CriFsPlugin.SetConfigParameters(
                    config.numberOfLoaders,
                    config.numberOfBinders,
                    config.numberOfInstallers,
                    (config.installBufferSize * 1024),
                    config.maxPath,
                    config.minimizeFileDescriptorUsage,
                    config.enableCrcCheck
                    );
            }
            if (criInitCom.initializesAtom)
            {
                CriAtomConfig config = criInitCom.atomConfig;
                CriAtomPlugin.SetConfigParameters(
                    Mathf.Max(config.maxVirtualVoices, CriAtomPlugin.GetRequiredMaxVirtualVoices(config)),
                    config.maxVoiceLimitGroups,
                    config.maxCategories,
                    config.maxSequenceEventsPerFrame,
                    config.maxBeatSyncCallbacksPerFrame,
                    config.standardVoicePoolConfig.memoryVoices,
                    config.standardVoicePoolConfig.streamingVoices,
                    config.hcaMxVoicePoolConfig.memoryVoices,
                    config.hcaMxVoicePoolConfig.streamingVoices,
                    config.outputSamplingRate,
                    config.asrOutputChannels,
                    config.usesInGamePreview,
                    config.serverFrequency,
                    config.maxParameterBlocks,
                    config.categoriesPerPlayback,
                    config.maxBuses,
                    config.vrMode);

                CriAtomPlugin.SetConfigAdditionalParameters_PC(
                    config.pcBufferingTime
                    );
            }
        }
        CriAtomPlugin.InitializeLibrary();
    }
예제 #15
0
    public static void FinalizeLibrary()
    {
        /* 初期化カウンタの更新 */
        CriFsPlugin.initializationCount--;
        if (CriFsPlugin.initializationCount < 0)
        {
            Debug.LogError("[CRIWARE] ERROR: FileSystem library is already finalized.");
            return;
        }
        if (CriFsPlugin.initializationCount != 0)
        {
            return;
        }

        /* ライブラリの終了 */
        CriFsPlugin.criFsUnity_Finalize();
    }
예제 #16
0
    public static void InitializeLibrary()
    {
        /* 初期化カウンタの更新 */
        CriAtomPlugin.initializationCount++;
        if (CriAtomPlugin.initializationCount != 1)
        {
            return;
        }

        /* シーン実行前に初期化済みの場合は終了させる */
        if (CriAtomPlugin.IsLibraryInitialized() == true)
        {
            CriAtomPlugin.FinalizeLibrary();
            CriAtomPlugin.initializationCount = 1;
        }

        /* 初期化パラメータが設定済みかどうかを確認 */
        if (CriAtomPlugin.isConfigured == false)
        {
            Debug.Log("[CRIWARE] Atom initialization parameters are not configured. "
                      + "Initializes Atom by default parameters.");
        }

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

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


        /* CriAtomServerのインスタンスを生成 */
                #if UNITY_EDITOR
        /* ゲームプレビュー時のみ生成する */
        if (UnityEngine.Application.isPlaying)
        {
            CriAtomServer.CreateInstance();
        }
                #else
        CriAtomServer.CreateInstance();
                #endif

        /* CriAtomListenerが存在しない場合のためのダミーリスナーを生成 */
        CriAtomListener.CreateDummyNativeListener();
    }
예제 #17
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();
    }
예제 #18
0
    public static void FinalizeLibrary()
    {
        /* 初期化カウンタの更新 */
        CriAtomPlugin.initializationCount--;
        if (CriAtomPlugin.initializationCount < 0)
        {
            CriAtomPlugin.initializationCount = 0;
            if (CriAtomPlugin.IsLibraryInitialized() == false)
            {
                return;
            }
        }
        if (CriAtomPlugin.initializationCount != 0)
        {
            return;
        }

        /* CriAtomListenerが存在しない場合のためのダミーリスナーを破棄 */
        CriAtomListener.DestroyDummyNativeListener();

        /* CriAtomServerのインスタンスを破棄 */
        CriAtomServer.DestroyInstance();

        /* 未破棄のDisposableを破棄 */
        CriDisposableObjectManager.CallOnModuleFinalization(CriDisposableObjectManager.ModuleType.Atom);

        /* ユーザエフェクトインタフェースのリストをクリア */
        if (effectInterfaceList != null)
        {
            effectInterfaceList.Clear();
            effectInterfaceList = null;
        }

        /* ライブラリの終了 */
        CriAtomPlugin.criAtomUnity_Finalize();

        /* 依存ライブラリの終了 */
        CriFsPlugin.FinalizeLibrary();
    }
예제 #19
0
    public static void FinalizeLibrary()
    {
        /* 初期化カウンタの更新 */
        CriManaPlugin.initializationCount--;
        if (CriManaPlugin.initializationCount < 0)
        {
            Debug.LogError("[CRIWARE] ERROR: Mana library is already finalized.");
            return;
        }
        if (CriManaPlugin.initializationCount != 0)
        {
            return;
        }

        /* ライブラリの終了 */
        CriManaPlugin.criManaUnity_Finalize();

        /* RendererResourceFactoryのインスタンスを破棄 */
        CriMana.Detail.RendererResourceFactory.DisposeAllFactories();

        /* 依存ライブラリの終了 */
        CriAtomPlugin.FinalizeLibrary();
        CriFsPlugin.FinalizeLibrary();
    }
예제 #20
0
 public static void SetConfigParameters(
     int num_loaders, int num_binders, int num_installers, int argInstallBufferSize, int max_path)
 {
     CriFsPlugin.criFsUnity_SetConfigParameters(
         num_loaders, num_binders, num_installers, max_path);
 }
예제 #21
0
    /**
     * <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);
        }
    }
예제 #22
0
    /**
     * <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;
        }

        /* CRI File Systemライブラリの初期化 */
        if (initializesFileSystem)
        {
            CriFsPlugin.SetConfigParameters(
                fileSystemConfig.numberOfLoaders,
                fileSystemConfig.numberOfBinders,
                fileSystemConfig.numberOfInstallers,
                (fileSystemConfig.installBufferSize * 1024),
                fileSystemConfig.maxPath,
                fileSystemConfig.minimizeFileDescriptorUsage
                );
            {
                /* Ver.2.03.03 以前は 0 がデフォルト値だったことの互換性維持のための処理 */
                if (fileSystemConfig.androidDeviceReadBitrate == 0)
                {
                    fileSystemConfig.androidDeviceReadBitrate = CriFsConfig.defaultAndroidDeviceReadBitrate;
                }
            }
            CriFsPlugin.SetConfigAdditionalParameters_ANDROID(fileSystemConfig.androidDeviceReadBitrate);
            CriFsPlugin.InitializeLibrary();
            if (fileSystemConfig.userAgentString.Length != 0)
            {
                CriFsUtility.SetUserAgentString(fileSystemConfig.userAgentString);
            }
        }

        /* CRI Atomライブラリの初期化 */
        if (initializesAtom)
        {
            /* 初期化処理の実行 */
            CriAtomPlugin.SetConfigParameters(
                (int)Math.Max(atomConfig.maxVirtualVoices, CriAtomPlugin.GetRequiredMaxVirtualVoices(atomConfig)),
                atomConfig.standardVoicePoolConfig.memoryVoices,
                atomConfig.standardVoicePoolConfig.streamingVoices,
                atomConfig.hcaMxVoicePoolConfig.memoryVoices,
                atomConfig.hcaMxVoicePoolConfig.streamingVoices,
                atomConfig.outputSamplingRate,
                atomConfig.usesInGamePreview,
                atomConfig.serverFrequency);

            CriAtomPlugin.SetConfigAdditionalParameters_IOS(
                (uint)Math.Max(atomConfig.iosBufferingTime, 16),
                atomConfig.iosOverrideIPodMusic
                );

            {
                /* Ver.2.03.03 以前は 0 がデフォルト値だったことの互換性維持のための処理 */
                if (atomConfig.androidBufferingTime == 0)
                {
                    atomConfig.androidBufferingTime = (int)(4 * 1000.0 / atomConfig.serverFrequency);
                }
                if (atomConfig.androidStartBufferingTime == 0)
                {
                    atomConfig.androidStartBufferingTime = (int)(3 * 1000.0 / atomConfig.serverFrequency);
                }
            }
            CriAtomPlugin.SetConfigAdditionalParameters_ANDROID(
                atomConfig.androidLowLatencyStandardVoicePoolConfig.memoryVoices,
                atomConfig.androidLowLatencyStandardVoicePoolConfig.streamingVoices,
                atomConfig.androidBufferingTime,
                atomConfig.androidStartBufferingTime);

            CriAtomPlugin.InitializeLibrary();

            if (atomConfig.useRandomSeedWithTime == true)
            {
                /* 時刻を乱数種に設定 */
                CriAtomEx.SetRandomSeed((uint)System.DateTime.Now.Ticks);
            }

            /* ACFファイル指定時は登録 */
            if (atomConfig.acfFileName.Length != 0)
            {
                string acfPath = atomConfig.acfFileName;
                if (CriWare.IsStreamingAssetsPath(acfPath))
                {
                    acfPath = Path.Combine(CriWare.streamingAssetsPath, acfPath);
                }

                CriAtomEx.RegisterAcf(null, acfPath);
            }
        }

        /* CRI Manaライブラリの初期化 */
        if (initializesMana)
        {
            CriManaPlugin.SetConfigParameters(manaConfig.graphicsMultiThreaded, manaConfig.numberOfDecoders, manaConfig.numberOfMaxEntries);
            CriManaPlugin.InitializeLibrary();
        }

        /* シーンチェンジ後もオブジェクトを維持するかどうかの設定 */
        if (dontDestroyOnLoad)
        {
            DontDestroyOnLoad(transform.gameObject);
            DontDestroyOnLoad(CriWare.managerObject);
        }
    }
예제 #23
0
    /**
     * <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;
        }

        /* CRI File Systemライブラリの初期化 */
        if (initializesFileSystem)
        {
            CriFsPlugin.SetConfigParameters(
                fileSystemConfig.numberOfLoaders,
                fileSystemConfig.numberOfBinders,
                fileSystemConfig.numberOfInstallers,
                (fileSystemConfig.installBufferSize * 1024),
                fileSystemConfig.maxPath,
                fileSystemConfig.minimizeFileDescriptorUsage
                );
            {
                /* Ver.2.03.03 以前は 0 がデフォルト値だったことの互換性維持のための処理 */
                if (fileSystemConfig.androidDeviceReadBitrate == 0)
                {
                    fileSystemConfig.androidDeviceReadBitrate = CriFsConfig.defaultAndroidDeviceReadBitrate;
                }
            }
            CriFsPlugin.SetConfigAdditionalParameters_ANDROID(fileSystemConfig.androidDeviceReadBitrate);
            CriFsPlugin.InitializeLibrary();
            if (fileSystemConfig.userAgentString.Length != 0)
            {
                CriFsUtility.SetUserAgentString(fileSystemConfig.userAgentString);
            }
        }

        /* CRI Atomライブラリの初期化 */
        if (initializesAtom)
        {
            /* 初期化処理の実行 */
            CriAtomPlugin.SetConfigParameters(
                (int)Math.Max(atomConfig.maxVirtualVoices, CriAtomPlugin.GetRequiredMaxVirtualVoices(atomConfig)),
                atomConfig.maxVoiceLimitGroups,
                atomConfig.maxCategories,
                atomConfig.standardVoicePoolConfig.memoryVoices,
                atomConfig.standardVoicePoolConfig.streamingVoices,
                atomConfig.hcaMxVoicePoolConfig.memoryVoices,
                atomConfig.hcaMxVoicePoolConfig.streamingVoices,
                atomConfig.outputSamplingRate,
                atomConfig.asrOutputChannels,
                atomConfig.usesInGamePreview,
                atomConfig.serverFrequency,
                atomConfig.maxParameterBlocks,
                atomConfig.categoriesPerPlayback,
                atomConfig.maxBuses,
                false);

            CriAtomPlugin.SetConfigAdditionalParameters_PC(
                atomConfig.pcBufferingTime
                );

            CriAtomPlugin.SetConfigAdditionalParameters_IOS(
                (uint)Math.Max(atomConfig.iosBufferingTime, 16),
                atomConfig.iosOverrideIPodMusic
                );
            /* Android 固有の初期化パラメータを登録 */
            {
                /* Ver.2.03.03 以前は 0 がデフォルト値だったことの互換性維持のための処理 */
                if (atomConfig.androidBufferingTime == 0)
                {
                    atomConfig.androidBufferingTime = (int)(4 * 1000.0 / atomConfig.serverFrequency);
                }
                if (atomConfig.androidStartBufferingTime == 0)
                {
                    atomConfig.androidStartBufferingTime = (int)(3 * 1000.0 / atomConfig.serverFrequency);
                }
                IntPtr android_context = IntPtr.Zero;
#if !UNITY_EDITOR && UNITY_ANDROID
                if (atomConfig.androidUsesAndroidFastMixer)
                {
                    AndroidJavaClass  jc       = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
                    AndroidJavaObject activity = jc.GetStatic <AndroidJavaObject>("currentActivity");
                    android_context = activity.GetRawObject();
                }
#endif
                CriAtomPlugin.SetConfigAdditionalParameters_ANDROID(
                    atomConfig.androidLowLatencyStandardVoicePoolConfig.memoryVoices,
                    atomConfig.androidLowLatencyStandardVoicePoolConfig.streamingVoices,
                    atomConfig.androidBufferingTime,
                    atomConfig.androidStartBufferingTime,
                    android_context);
            }
            CriAtomPlugin.InitializeLibrary();

            if (atomConfig.useRandomSeedWithTime == true)
            {
                /* 時刻を乱数種に設定 */
                CriAtomEx.SetRandomSeed((uint)System.DateTime.Now.Ticks);
            }

            /* ACFファイル指定時は登録 */
            if (atomConfig.acfFileName.Length != 0)
            {
                string acfPath = atomConfig.acfFileName;
                if (CriWare.IsStreamingAssetsPath(acfPath))
                {
                    acfPath = Path.Combine(CriWare.streamingAssetsPath, acfPath);
                }

                CriAtomEx.RegisterAcf(null, acfPath);
            }
        }

        /* CRI Manaライブラリの初期化 */
        if (initializesMana)
        {
            CriManaPlugin.SetConfigParameters(manaConfig.graphicsMultiThreaded, manaConfig.numberOfDecoders, manaConfig.numberOfMaxEntries);
            CriManaPlugin.InitializeLibrary();
        }

        /* シーンチェンジ後もオブジェクトを維持するかどうかの設定 */
        if (dontDestroyOnLoad)
        {
            DontDestroyOnLoad(transform.gameObject);
            DontDestroyOnLoad(CriWare.managerObject);
        }
    }
예제 #24
0
    /**
     * <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);
        }
    }
예제 #25
0
    /**
     * <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;
        }

        /* CRI File Systemライブラリの初期化 */
        if (initializesFileSystem)
        {
            CriFsPlugin.SetConfigParameters(
                fileSystemConfig.numberOfLoaders,
                fileSystemConfig.numberOfBinders,
                fileSystemConfig.numberOfInstallers,
                (fileSystemConfig.installBufferSize * 1024),
                fileSystemConfig.maxPath,
                fileSystemConfig.minimizeFileDescriptorUsage
                );
            {
                /* Ver.2.03.03 以前は 0 がデフォルト値だったことの互換性維持のための処理 */
                if (fileSystemConfig.androidDeviceReadBitrate == 0)
                {
                    fileSystemConfig.androidDeviceReadBitrate = CriFsConfig.defaultAndroidDeviceReadBitrate;
                }
            }
            CriFsPlugin.SetConfigAdditionalParameters_ANDROID(fileSystemConfig.androidDeviceReadBitrate);
            CriFsPlugin.InitializeLibrary();
            if (fileSystemConfig.userAgentString.Length != 0)
            {
                CriFsUtility.SetUserAgentString(fileSystemConfig.userAgentString);
            }
        }

        /* CRI Atomライブラリの初期化 */
        if (initializesAtom)
        {
            /* 初期化処理の実行 */
            CriAtomPlugin.SetConfigParameters(
                (int)Math.Max(atomConfig.maxVirtualVoices, CriAtomPlugin.GetRequiredMaxVirtualVoices(atomConfig)),
                atomConfig.maxVoiceLimitGroups,
                atomConfig.maxCategories,
                atomConfig.standardVoicePoolConfig.memoryVoices,
                atomConfig.standardVoicePoolConfig.streamingVoices,
                atomConfig.hcaMxVoicePoolConfig.memoryVoices,
                atomConfig.hcaMxVoicePoolConfig.streamingVoices,
                atomConfig.outputSamplingRate,
                atomConfig.asrOutputChannels,
                atomConfig.usesInGamePreview,
                atomConfig.serverFrequency,
                atomConfig.maxParameterBlocks,
                atomConfig.categoriesPerPlayback,
                atomConfig.maxBuses,
                atomConfig.vrMode);

            CriAtomPlugin.SetConfigAdditionalParameters_PC(
                atomConfig.pcBufferingTime
                );

            CriAtomPlugin.SetConfigAdditionalParameters_IOS(
                (uint)Math.Max(atomConfig.iosBufferingTime, 16),
                atomConfig.iosOverrideIPodMusic
                );
            /* Android 固有の初期化パラメータを登録 */
            {
                /* Ver.2.03.03 以前は 0 がデフォルト値だったことの互換性維持のための処理 */
                if (atomConfig.androidBufferingTime == 0)
                {
                    atomConfig.androidBufferingTime = (int)(4 * 1000.0 / atomConfig.serverFrequency);
                }
                if (atomConfig.androidStartBufferingTime == 0)
                {
                    atomConfig.androidStartBufferingTime = (int)(3 * 1000.0 / atomConfig.serverFrequency);
                }
                IntPtr android_context = IntPtr.Zero;
#if !UNITY_EDITOR && UNITY_ANDROID
                if (atomConfig.androidUsesAndroidFastMixer)
                {
                    AndroidJavaClass  jc       = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
                    AndroidJavaObject activity = jc.GetStatic <AndroidJavaObject>("currentActivity");
                    android_context = activity.GetRawObject();
                }
#endif
                CriAtomPlugin.SetConfigAdditionalParameters_ANDROID(
                    atomConfig.androidLowLatencyStandardVoicePoolConfig.memoryVoices,
                    atomConfig.androidLowLatencyStandardVoicePoolConfig.streamingVoices,
                    atomConfig.androidBufferingTime,
                    atomConfig.androidStartBufferingTime,
                    android_context);
            }
            CriAtomPlugin.SetConfigAdditionalParameters_VITA(
                atomConfig.vitaAtrac9VoicePoolConfig.memoryVoices,
                atomConfig.vitaAtrac9VoicePoolConfig.streamingVoices,
                (initializesMana) ? manaConfig.numberOfDecoders : 0);
            {
                /* VR Mode が有効なときも useAudio3D を True にする */
                atomConfig.ps4Audio3dConfig.useAudio3D |= atomConfig.vrMode;
                CriAtomPlugin.SetConfigAdditionalParameters_PS4(
                    atomConfig.ps4Atrac9VoicePoolConfig.memoryVoices,
                    atomConfig.ps4Atrac9VoicePoolConfig.streamingVoices,
                    atomConfig.ps4Audio3dConfig.useAudio3D,
                    atomConfig.ps4Audio3dConfig.voicePoolConfig.memoryVoices,
                    atomConfig.ps4Audio3dConfig.voicePoolConfig.streamingVoices);
            }
            CriAtomPlugin.SetConfigAdditionalParameters_WEBGL(
                atomConfig.webglWebAudioVoicePoolConfig.voices);

            CriAtomPlugin.InitializeLibrary();

            if (atomConfig.useRandomSeedWithTime == true)
            {
                /* 時刻を乱数種に設定 */
                CriAtomEx.SetRandomSeed((uint)System.DateTime.Now.Ticks);
            }

            /* ACFファイル指定時は登録 */
            if (atomConfig.acfFileName.Length != 0)
            {
                string acfPath = atomConfig.acfFileName;
                if (CriWare.IsStreamingAssetsPath(acfPath))
                {
                    acfPath = Path.Combine(CriWare.streamingAssetsPath, acfPath);
                }

                CriAtomEx.RegisterAcf(null, acfPath);
            }
        }

#if UNITY_EDITOR || (!UNITY_PS3)
        /* CRI Manaライブラリの初期化 */
        if (initializesMana)
        {
            CriManaPlugin.SetConfigParameters(manaConfig.graphicsMultiThreaded, manaConfig.numberOfDecoders, manaConfig.numberOfMaxEntries);
            CriManaPlugin.SetConfigAdditonalParameters_ANDROID(true);
#if UNITY_PSP2
            CriWareVITA.EnableManaH264Playback(manaConfig.vitaH264PlaybackConfig.useH264Playback);
            CriWareVITA.SetManaH264DecoderMaxSize(manaConfig.vitaH264PlaybackConfig.maxWidth,
                                                  manaConfig.vitaH264PlaybackConfig.maxHeight);
            CriWareVITA.EnableManaH264DecoderGetDisplayMemoryFromUnityTexture(manaConfig.vitaH264PlaybackConfig.getMemoryFromTexture);
#endif
            CriManaPlugin.InitializeLibrary();
        }
#endif

        /*JP< CRI Ware Decrypterの設定 */
        if (useDecrypter)
        {
            ulong  decryptionKey      = (decrypterConfig.key.Length == 0) ? 0 : Convert.ToUInt64(decrypterConfig.key);
            string authenticationPath = decrypterConfig.authenticationFile;
            if (CriWare.IsStreamingAssetsPath(authenticationPath))
            {
                authenticationPath = Path.Combine(CriWare.streamingAssetsPath, authenticationPath);
            }
#if !UNITY_EDITOR && UNITY_WEBGL
            CriWare.criWareUnity_SetDecryptionKey_EMSCRIPTEN(
                decryptionKey
                );
#else
            CriWare.criWareUnity_SetDecryptionKey(
                decryptionKey,
                authenticationPath,
                decrypterConfig.enableAtomDecryption,
                decrypterConfig.enableManaDecryption
                );
#endif
        }
        else
        {
#if !UNITY_EDITOR && UNITY_WEBGL
            CriWare.criWareUnity_SetDecryptionKey_EMSCRIPTEN(0);
#else
            CriWare.criWareUnity_SetDecryptionKey(0, "", false, false);
#endif
        }

        /* シーンチェンジ後もオブジェクトを維持するかどうかの設定 */
        if (dontDestroyOnLoad)
        {
            DontDestroyOnLoad(transform.gameObject);
            DontDestroyOnLoad(CriWare.managerObject);
        }
    }
예제 #26
0
 public static void SetConfigAdditionalParameters_ANDROID(
     int device_read_bps)
 {
     CriFsPlugin.criFsUnity_SetConfigAdditionalParameters_ANDROID(device_read_bps);
 }