public static bool InitializeAtom(CriAtomConfig config) { /* CRI Atomライブラリの初期化 */ if (CriAtomPlugin.IsLibraryInitialized() == false) { /* 初期化処理の実行 */ CriAtomPlugin.SetConfigParameters( (int)Math.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.SetConfigMonitorParametes( config.inGamePreviewConfig.maxPreviewObjects, config.inGamePreviewConfig.communicationBufferSize, config.inGamePreviewConfig.playbackPositionUpdateInterval ); CriAtomPlugin.SetConfigAdditionalParameters_PC( config.pcBufferingTime ); CriAtomPlugin.SetConfigAdditionalParameters_IOS( (uint)Math.Max(config.iosBufferingTime, 16), config.iosOverrideIPodMusic ); /* Android 固有の初期化パラメータを登録 */ { /* Ver.2.03.03 以前は 0 がデフォルト値だったことの互換性維持のための処理 */ if (config.androidBufferingTime == 0) { config.androidBufferingTime = (int)(4 * 1000.0 / config.serverFrequency); } if (config.androidStartBufferingTime == 0) { config.androidStartBufferingTime = (int)(3 * 1000.0 / config.serverFrequency); } #if !UNITY_EDITOR && UNITY_ANDROID CriAtomEx.androidDefaultSoundRendererType = config.androidForceToUseAsrForDefaultPlayback ? CriAtomEx.SoundRendererType.Asr : CriAtomEx.SoundRendererType.Default; #endif CriAtomPlugin.SetConfigAdditionalParameters_ANDROID( config.androidLowLatencyStandardVoicePoolConfig.memoryVoices, config.androidLowLatencyStandardVoicePoolConfig.streamingVoices, config.androidBufferingTime, config.androidStartBufferingTime, config.androidUsesAndroidFastMixer, config.androidUsesAAudio); } CriAtomPlugin.InitializeLibrary(); if (config.useRandomSeedWithTime == true) { /* 時刻を乱数種に設定 */ CriAtomEx.SetRandomSeed((uint)System.DateTime.Now.Ticks); } /* ACFファイル指定時は登録 */ if (config.acfFileName.Length != 0) { #if UNITY_WEBGL Debug.LogError("In WebGL, ACF File path should be set to CriAtom Component."); #else string acfPath = config.acfFileName; if (CriWare.Common.IsStreamingAssetsPath(acfPath)) { acfPath = Path.Combine(CriWare.Common.streamingAssetsPath, acfPath); } CriAtomEx.RegisterAcf(null, acfPath); #endif } CriAtomServer.KeepPlayingSoundOnPause = config.keepPlayingSoundOnPause; return(true); } else { return(false); } }