private void CheckInitResult(RESULT result, string cause) { if (result != 0) { if (studioSystem.isValid()) { studioSystem.release(); studioSystem.clearHandle(); } throw new SystemNotInitializedException(result, cause); } }
void OnDisable() { if (isInitialized) { ERRCHECK(system.release()); } }
void OnDisable() { if (isInitialized) { FMOD.Studio.UnityUtil.Log("__ SHUT DOWN FMOD SYSTEM __"); ERRCHECK(system.release()); } }
void OnDisable() { if (isInitialized) { FMOD.Studio.UnityUtil.Log("__ SHUT DOWN FMOD SYSTEM __"); ERRCHECK(system.release()); if (this == sInstance) { sInstance = null; } } }
private void Dispose(bool disposing) { if (!_disposed) { if (disposing) { // Dispose our LowLevelSystem class LowLevelSystem.Dispose(); LowLevelSystem = null; } _system.release().Check(); _disposed = true; } }
static void UnloadAllBanks() { if (sFMODSystem != null) { foreach (var bank in loadedBanks) { ERRCHECK(bank.unload()); } loadedBanks.Clear(); events.Clear(); sFMODSystem.release(); sFMODSystem = null; } else if (loadedBanks.Count != 0) { FMOD.Studio.UnityUtil.LogError("Banks not unloaded!"); } }
void Init() { FMOD.Studio.UnityUtil.Log("FMOD_StudioSystem: Initialize"); if (isInitialized) { return; } DontDestroyOnLoad(gameObject); FMOD.Studio.UnityUtil.Log("FMOD_StudioSystem: System_Create"); ERRCHECK(FMOD.Studio.System.create(out system)); FMOD.Studio.INITFLAGS flags = FMOD.Studio.INITFLAGS.NORMAL; #if FMOD_LIVEUPDATE flags |= FMOD.Studio.INITFLAGS.LIVEUPDATE; // Unity 5 liveupdate workaround if (Application.unityVersion.StartsWith("5")) { FMOD.Studio.UnityUtil.LogWarning("FMOD_StudioSystem: detected Unity 5, running on port 9265"); FMOD.System sys; ERRCHECK(system.getLowLevelSystem(out sys)); FMOD.ADVANCEDSETTINGS advancedSettings = new FMOD.ADVANCEDSETTINGS(); advancedSettings.profilePort = 9265; ERRCHECK(sys.setAdvancedSettings(ref advancedSettings)); } #endif int outputRate = 48000; #if true //UNITY_ANDROID && !UNITY_EDITOR // Force the system sample rate to the output rate to allow for the fast mixer if (FMOD.VERSION.number >= 0x00010500) { FMOD.System sys; ERRCHECK(system.getLowLevelSystem(out sys)); { System.Text.StringBuilder str = new System.Text.StringBuilder(); FMOD.GUID guid; FMOD.SPEAKERMODE speakermode; int speakermodechannels; ERRCHECK(sys.getDriverInfo(0, str, str.Capacity, out guid, out outputRate, out speakermode, out speakermodechannels)); } ERRCHECK(sys.setSoftwareFormat(outputRate, FMOD.SPEAKERMODE.DEFAULT, 0)); } #endif FMOD.Studio.UnityUtil.Log("FMOD_StudioSystem: system.init"); FMOD.RESULT result = FMOD.RESULT.OK; result = system.initialize(1024, flags, FMOD.INITFLAGS.NORMAL, global::System.IntPtr.Zero); if (result == FMOD.RESULT.ERR_HEADER_MISMATCH) { FMOD.Studio.UnityUtil.LogError("Version mismatch between C# script and FMOD binary, restart Unity and reimport the integration package to resolve this issue."); } else { ERRCHECK(result); } // Dummy flush and update to get network state ERRCHECK(system.flushCommands()); result = system.update(); // Restart without liveupdate if there was a socket error if (result == FMOD.RESULT.ERR_NET_SOCKET_ERROR) { FMOD.Studio.UnityUtil.LogWarning("LiveUpdate disabled: socket in already in use"); flags &= ~FMOD.Studio.INITFLAGS.LIVEUPDATE; ERRCHECK(system.release()); ERRCHECK(FMOD.Studio.System.create(out system)); FMOD.System sys; ERRCHECK(system.getLowLevelSystem(out sys)); ERRCHECK(sys.setSoftwareFormat(outputRate, FMOD.SPEAKERMODE.DEFAULT, 0)); result = system.initialize(1024, flags, FMOD.INITFLAGS.NORMAL, global::System.IntPtr.Zero); ERRCHECK(result); } isInitialized = true; }
void Init() { FMOD.Studio.UnityUtil.Log("FMOD_StudioSystem: Initialize"); if (isInitialized) { return; } DontDestroyOnLoad(gameObject); FMOD.Studio.UnityUtil.Log("FMOD_StudioSystem: System_Create"); ERRCHECK(FMOD.Studio.System.create(out system)); FMOD.Studio.INITFLAGS flags = FMOD.Studio.INITFLAGS.NORMAL; FMOD.System sys; ERRCHECK(system.getLowLevelSystem(out sys)); FMOD.ADVANCEDSETTINGS advancedSettings = new FMOD.ADVANCEDSETTINGS(); advancedSettings.randomSeed = (uint)DateTime.Now.Ticks; #if FMOD_LIVEUPDATE flags |= FMOD.Studio.INITFLAGS.LIVEUPDATE; // Unity 5 liveupdate workaround if (Application.unityVersion.StartsWith("5")) { FMOD.Studio.UnityUtil.LogWarning("FMOD_StudioSystem: detected Unity 5, running on port 9265"); advancedSettings.profilePort = 9265; } #endif ERRCHECK(sys.setAdvancedSettings(ref advancedSettings)); #if FMOD_DEBUG FMOD.Debug.Initialize(FMOD.DEBUG_FLAGS.LOG, FMOD.DEBUG_MODE.FILE, null, "fmod.log"); #endif FMOD.Studio.UnityUtil.Log("FMOD_StudioSystem: system.init"); FMOD.RESULT result = FMOD.RESULT.OK; result = system.initialize(1024, flags, FMOD.INITFLAGS.NORMAL, global::System.IntPtr.Zero); if (result == FMOD.RESULT.ERR_HEADER_MISMATCH) { FMOD.Studio.UnityUtil.LogError("Version mismatch between C# script and FMOD binary, restart Unity and reimport the integration package to resolve this issue."); } else { ERRCHECK(result); } // Dummy flush and update to get network state ERRCHECK(system.flushCommands()); result = system.update(); // Restart without liveupdate if there was a socket error if (result == FMOD.RESULT.ERR_NET_SOCKET_ERROR) { FMOD.Studio.UnityUtil.LogWarning("LiveUpdate disabled: socket in already in use"); flags &= ~FMOD.Studio.INITFLAGS.LIVEUPDATE; ERRCHECK(system.release()); ERRCHECK(FMOD.Studio.System.create(out system)); ERRCHECK(system.getLowLevelSystem(out sys)); advancedSettings = new FMOD.ADVANCEDSETTINGS(); advancedSettings.randomSeed = (uint)DateTime.Now.Ticks; ERRCHECK(sys.setAdvancedSettings(ref advancedSettings)); result = system.initialize(1024, flags, FMOD.INITFLAGS.NORMAL, global::System.IntPtr.Zero); ERRCHECK(result); } #if UNITY_EDITOR && FMOD_DEBUG var fileStream = new FileStream("fmod.log", FileMode.Open, FileAccess.Read, FileShare.ReadWrite); logReader = new StreamReader(fileStream); #endif isInitialized = true; }
void Init() { FMOD.Studio.UnityUtil.Log("FMOD_StudioSystem: Initialize"); if (isInitialized) { return; } DontDestroyOnLoad(gameObject); FMOD.Studio.UnityUtil.Log("FMOD_StudioSystem: System_Create"); ERRCHECK(FMOD.Studio.System.create(out system)); FMOD.Studio.INITFLAGS flags = FMOD.Studio.INITFLAGS.NORMAL; #if FMOD_LIVEUPDATE flags |= FMOD.Studio.INITFLAGS.LIVEUPDATE; // Unity 5 liveupdate workaround if (Application.unityVersion.StartsWith("5")) { FMOD.Studio.UnityUtil.LogWarning("FMOD_StudioSystem: detected Unity 5, running on port 9265"); FMOD.System sys; ERRCHECK(system.getLowLevelSystem(out sys)); FMOD.ADVANCEDSETTINGS advancedSettings = new FMOD.ADVANCEDSETTINGS(); advancedSettings.profilePort = 9265; ERRCHECK(sys.setAdvancedSettings(ref advancedSettings)); } #endif #if FMOD_DEBUG #if UNITY_XBOXONE // Can't go managed -> native -> managed apparently so log to a file FMOD.Debug.Initialize(FMOD.DEBUG_FLAGS.LOG, FMOD.DEBUG_MODE.FILE, null, "fmod.log"); #else FMOD.Debug.Initialize(FMOD.DEBUG_FLAGS.LOG, FMOD.DEBUG_MODE.CALLBACK, LogCallback, null); #endif #endif FMOD.Studio.UnityUtil.Log("FMOD_StudioSystem: system.init"); FMOD.RESULT result = FMOD.RESULT.OK; result = system.initialize(1024, flags, FMOD.INITFLAGS.NORMAL, global::System.IntPtr.Zero); if (result == FMOD.RESULT.ERR_HEADER_MISMATCH) { FMOD.Studio.UnityUtil.LogError("Version mismatch between C# script and FMOD binary, restart Unity and reimport the integration package to resolve this issue."); } else { ERRCHECK(result); } // Dummy flush and update to get network state ERRCHECK(system.flushCommands()); result = system.update(); // Restart without liveupdate if there was a socket error if (result == FMOD.RESULT.ERR_NET_SOCKET_ERROR) { FMOD.Studio.UnityUtil.LogWarning("LiveUpdate disabled: socket in already in use"); flags &= ~FMOD.Studio.INITFLAGS.LIVEUPDATE; ERRCHECK(system.release()); ERRCHECK(FMOD.Studio.System.create(out system)); FMOD.System sys; ERRCHECK(system.getLowLevelSystem(out sys)); result = system.initialize(1024, flags, FMOD.INITFLAGS.NORMAL, global::System.IntPtr.Zero); ERRCHECK(result); } isInitialized = true; }
public static void Release() { system.release(); }