public static void AuditionEvent(FMODAsset asset) { StopEvent(); var desc = GetEventDescription(asset.id); if (desc == null) { Logger.LogError("Failed to retrieve EventDescription for event: " + asset.path); } if (!Logger.ErrorCheck(desc.CreateInstance(out currentInstance))) { return; } Logger.ErrorCheck(currentInstance.Start()); }
/// <summary> /// Starts the event. /// </summary> public void StartEvent() { if (evt == null || !evt.IsValid()) { CacheEventInstance(); } // Attempt to release as oneshot if (evt != null && evt.IsValid()) { Update3DAttributes(); Logger.ErrorCheck(evt.Start()); } else { Logger.LogError("Event retrieval failed: " + path); } hasStarted = true; }
// ---------------------------------------------------------------------------------------------------- #endregion #region Loading Methods // ---------------------------------------------------------------------------------------------------- /// <summary> /// Forces the load of the Low Level Binary. /// </summary> /// <returns></returns> public static bool ForceLoadLowLevelBinary() { Logger.Log("Loading Low Level Binary"); // This is a hack that forces Android to load the .so libraries in the correct order #if UNITY_ANDROID && !UNITY_EDITOR Logger.Log("Loading binaries: " + FMOD.Studio.STUDIO_VERSION.dll + " and " + FMOD.VERSION.dll); AndroidJavaClass jSystem = new AndroidJavaClass("java.lang.System"); jSystem.CallStatic("loadLibrary", FMOD.VERSION.dll); jSystem.CallStatic("loadLibrary", FMOD.Studio.STUDIO_VERSION.dll); #endif // Hack: force the low level binary to be loaded before accessing Studio API #if !UNITY_IPHONE || UNITY_EDITOR int temp1, temp2; if (!Logger.ErrorCheck(FMOD.Memory.GetStats(out temp1, out temp2))) { Logger.LogError("An error occured while loading Low Level Binary!"); return(false); } #endif Logger.Log("Low Level Binary successfully loaded!"); return(true); }
/// <summary> /// Initializes this instance. /// </summary> private void Initialize() { if (isInitialized && this.system != null && this.system.IsValid()) { return; } isInitialized = true; Logger.LogMessage("Initializing FMOD"); // Do these hacks before calling ANY fmod functions! if (!UnityUtil.ForceLoadLowLevelBinary()) { Logger.LogError("Unable to load low level binary!"); } Logger.LogMessage("Creating FMOD System"); Logger.ErrorCheck(FMOD.Studio.System.Create(out system)); if (system == null) { Logger.LogError("Unable to create FMOD System!"); return; } Logger.LogMessage("System.initialize (" + system + ")"); FMOD.Studio.InitFlags flags = FMOD.Studio.InitFlags.Normal; #if FMOD_LIVEUPDATE flags |= FMOD.Studio.INITFLAGS.LIVEUPDATE; #endif FMOD.Result result = FMOD.Result.Ok; system.GetLowLevelSystem(out lowLevelSystem); UpdateDSPBufferSize(); result = system.Initialize(1024, flags, FMOD.InitFlags.Normal, global::System.IntPtr.Zero); if (result == FMOD.Result.ErrorNetSocket) { #if false && FMOD_LIVEUPDATE UnityUtil.LogWarning("LiveUpdate disabled: socket in already in use"); flags &= ~FMOD.Studio.INITFLAGS.LIVEUPDATE; result = system.init(1024, flags, FMOD.INITFLAGS.NORMAL, (System.IntPtr)null); #else Logger.LogError("Unable to initalize with LiveUpdate: socket is already in use"); #endif } else if (result == FMOD.Result.ErrorHeaderMismatch) { Logger.LogError("Version mismatch between C# script and FMOD binary, restart Unity and reimport the integration package to resolve this issue."); } else { Logger.ErrorCheck(result); } LoadPlugins(); LoadAllBanks(); }