public void OnDestroy() { if (m_handle != null) { m_handle.Dispose(); m_handle = null; } }
// Use this for initialization void Start() { FmodEventSystemHandle handle = new FmodEventSystemHandle(); ReverbSettings.FmodReverbPreset globalReverbSetting = FmodReverb.GLOBAL_REVERB; m_globalReverb = FmodReverb.CreateInstance(typeof(FmodReverb)) as FmodReverb; GameObject obj = GameObject.Instantiate(Resources.Load("FmodReverbZone")) as GameObject; m_globalReverbZone = obj.GetComponent <FmodReverbZone>(); if (m_globalReverbZone == null) { Debug.LogError("Prefab for FmodReverbZone should have component FmodReverbZone !"); } m_globalReverbZone.SetGlobal(true); m_globalReverbZone.name = "Global Reverb"; m_globalReverb.Initialize(globalReverbSetting.Name, globalReverbSetting.Properties); m_globalReverbZone.SetReverb(m_globalReverb); m_globalReverbZone.Priority = 0; m_globalReverbZone.fadeTime = 0; m_currentZone = m_globalReverbZone; StackReverb(m_currentZone); handle.getEventSystem().setReverbImmediate(globalReverbSetting.Properties); handle.Dispose(); m_startProperties = globalReverbSetting.Properties; m_curProperties = globalReverbSetting.Properties; m_endProperties = globalReverbSetting.Properties; }
// Use this for initialization void Start() { FmodEventSystemHandle handle = new FmodEventSystemHandle(); ReverbSettings.FmodReverbPreset globalReverbSetting = FmodReverb.GLOBAL_REVERB; m_globalReverb = FmodReverb.CreateInstance(typeof(FmodReverb)) as FmodReverb; GameObject obj = GameObject.Instantiate(Resources.Load("FmodReverbZone")) as GameObject; m_globalReverbZone = obj.GetComponent<FmodReverbZone>(); if (m_globalReverbZone == null) { Debug.LogError("Prefab for FmodReverbZone should have component FmodReverbZone !"); } m_globalReverbZone.SetGlobal(true); m_globalReverbZone.name = "Global Reverb"; m_globalReverb.Initialize(globalReverbSetting.Name, globalReverbSetting.Properties); m_globalReverbZone.SetReverb(m_globalReverb); m_globalReverbZone.Priority = 0; m_globalReverbZone.fadeTime = 0; m_currentZone = m_globalReverbZone; StackReverb (m_currentZone); handle.getEventSystem().setReverbImmediate(globalReverbSetting.Properties); handle.Dispose(); m_startProperties = globalReverbSetting.Properties; m_curProperties = globalReverbSetting.Properties; m_endProperties = globalReverbSetting.Properties; }
public void SetFmodEventSystemHandle(FmodEventSystemHandle handle) { if (m_handle == null) { m_handle = handle; GameObject.DontDestroyOnLoad(gameObject); } }
public static void getEventSystem(FmodEventSystemHandle handle) { if (handle.getEventSystem() == null) { if (m_holder == null) { m_holder = GameObject.FindObjectOfType(typeof(FmodEventSystemHolder)) as FmodEventSystemHolder; if (m_holder == null) { UnityEngine.GameObject holderObject = new UnityEngine.GameObject("FmodEventSystemHolder"); holderObject.AddComponent(typeof(FmodEventSystemHolder)); m_holder = holderObject.GetComponent <FmodEventSystemHolder>(); } } if (m_holder == null) { Debug.LogError("Could not find FmodEventSystemHolder; FMOD integration will not work"); } else { if (m_FmodEventSystem == null) { m_FmodEventSystem = new FmodEventSystem(); m_FmodEventSystem._createEventSystem(); m_holder.SetFmodEventSystemHandle(new FmodEventSystemHandle()); } handle.setEventSystem(m_FmodEventSystem); GetReverbManager(); } } }
public void EnableReverb() { if (m_reverb != null && m_collider != null) { FmodEventSystemHandle handle = new FmodEventSystemHandle(); handle.getEventSystem().setReverb(this); handle.Dispose(); } }
public void DisableReverb() { if (m_reverb != null && m_collider != null) { FmodEventSystemHandle handle = new FmodEventSystemHandle(); handle.getEventSystem().unsetReverb(this); handle.Dispose(); } }
public FMOD.RESULT getEvent(FmodEventAudioSource wantedSource) { if (wantedSource == null || wantedSource.getSource() == null) { Debug.LogError(getErrorPrefix() + "Invalid data was passed for FmodEventAudioSource"); return(FMOD.RESULT.ERR_EVENT_FAILED); } if (wantedSource.getSource() != m_event) { Debug.LogError(getErrorPrefix() + "FmodEventAudioSource tried to load event '" + wantedSource.getSource().getName() + "' from the bad pool."); return(FMOD.RESULT.ERR_EVENT_FAILED); } if (wantedSource.isRuntimeEventLoaded()) { return(FMOD.RESULT.OK); } if (m_availableEvents.Count > 0) { // below, we take back an event that was loaded and unused FMOD.Event oldestEvent = m_availableEvents[0]; m_availableEvents.RemoveAt(0); wantedSource.SetEvent(oldestEvent); if (m_activeSources.Contains(wantedSource)) { Debug.LogWarning(getErrorPrefix() + "FmodEventAudioSource '" + wantedSource.name + "' loaded an event but was already active. Are you sure this should happen ?"); } else { m_activeSources.Add(wantedSource); } } else { // here we have no event loaded, so we must load a new one. using (FmodEventSystemHandle handle = new FmodEventSystemHandle()) { FmodEventSystem system = handle.getEventSystem(); if (system != null && system.wasCleaned() == false) { FMOD.RESULT result = FMOD.RESULT.OK; result = system.loadEventFromFile(wantedSource); if (result == FMOD.RESULT.OK) { m_activeSources.Add(wantedSource); } return(result); } } } return(FMOD.RESULT.OK); }
public void freeWholeGroup() { if (m_runtimeEventGroup != null) { ERRCHECK(m_runtimeEventGroup.freeEventData(false)); using (FmodEventSystemHandle handle = new FmodEventSystemHandle()) { if (handle.getEventSystem() != null && handle.getEventSystem().wasCleaned() == false) { handle.getEventSystem().releaseAllEventsFromGroup(this); } } m_runtimeEventGroup = null; } }
public void Clean() { CleanRuntimeEvent(); if (m_eventSystemHandle != null) { m_eventSystemHandle.Dispose(); m_eventSystemHandle = null; } if (m_selfHandle.IsAllocated) { m_selfHandle.Free(); } }
public void UpdateGlobalReverb() { if (m_currentZone == m_globalReverbZone && m_globalReverbZone != null && m_globalReverb != null) { FmodEventSystemHandle handle = new FmodEventSystemHandle(); ReverbSettings.FmodReverbPreset globalReverbSetting = ReverbSettings.Get().CurPreset; m_globalReverb = m_globalReverbZone.GetReverb(); m_globalReverb.Initialize(globalReverbSetting.Name, globalReverbSetting.Properties); m_curProperties = m_globalReverb.getProperties(); m_endProperties = m_curProperties; handle.getEventSystem().setReverbImmediate(m_curProperties); handle.Dispose(); } }
// Update is called once per frame void Update() { if (m_isInTransition) { FmodEventSystemHandle handle = new FmodEventSystemHandle(); m_curTransitionTime += Time.deltaTime; if (m_curTransitionTime >= m_curTransitionDuration) { m_curTransitionTime = m_curTransitionDuration; m_isInTransition = false; } m_curProperties = FmodReverb.getLerpedProperties(m_startProperties, m_endProperties, m_curTransitionTime / m_curTransitionDuration); handle.getEventSystem().setReverbImmediate(m_curProperties); handle.Dispose(); } }
private void _updateReverbStack() { if (m_reverbStack.Count == 0) { return; } m_reverbStack.Sort((x, y) => (int)(y.Priority).CompareTo((int)x.Priority)); FmodReverbZone newCurrentZone = m_reverbStack[0]; if (m_currentZone != newCurrentZone) // we should transition { float fadeInTime = newCurrentZone.fadeTime; // if we are transitionning from a zone back to the global zone, we use the previous fade time // to fade out if (newCurrentZone == m_globalReverbZone && m_currentZone != m_globalReverbZone) { m_globalReverb.Initialize(m_globalReverb.getName(), FmodReverb.GLOBAL_REVERB.Properties); fadeInTime = m_currentZone.fadeTime; } FMOD.REVERB_PROPERTIES targetProps = newCurrentZone.GetReverb().getProperties(); if (fadeInTime <= 0) { FmodEventSystemHandle handle = new FmodEventSystemHandle(); m_isInTransition = false; m_startProperties = m_curProperties; m_endProperties = targetProps; handle.getEventSystem().setReverbImmediate(targetProps); handle.Dispose(); } else { m_isInTransition = true; m_startProperties = m_curProperties; m_endProperties = targetProps; m_curTransitionDuration = fadeInTime; m_curTransitionTime = 0; } m_currentZone = newCurrentZone; } }
public void Play() { CheckForOldFormat(); if (m_source != null) { FMOD.RESULT result = FMOD.RESULT.OK; if (m_runtimeEvent == null) { if (m_eventSystemHandle == null) { m_eventSystemHandle = new FmodEventSystemHandle(); } m_eventSystemHandle.getEventSystem().loadEvent(this); } if (m_runtimeEvent != null) { SetVolume(m_volume); if (m_runtimeEvent != null) // runtime event could be null after SetVolume if max_callback as been reached { m_status = Status.Playing; if (Paused == false) { Unpause(); result = m_runtimeEvent.start(); ERRCHECK(result); if (result != FMOD.RESULT.OK) { m_status = Status.Stopped; } } } } else { m_eventSystemHandle.Dispose(); m_eventSystemHandle = null; } } else { Debug.LogWarning("FMOD_Unity: FmodEventAudioSource '" + gameObject.name + "': Could not play : no sound set."); } }
public FMOD.RESULT getEvent(FmodEventAudioSource wantedSource) { if (wantedSource == null || wantedSource.getSource() == null) { Debug.LogError(getErrorPrefix() + "Invalid data was passed for FmodEventAudioSource"); return (FMOD.RESULT.ERR_EVENT_FAILED); } if (wantedSource.getSource() != m_event) { Debug.LogError(getErrorPrefix() + "FmodEventAudioSource tried to load event '" + wantedSource.getSource().getName() + "' from the bad pool."); return (FMOD.RESULT.ERR_EVENT_FAILED); } if (wantedSource.isRuntimeEventLoaded()) { return (FMOD.RESULT.OK); } if (m_availableEvents.Count > 0) { // below, we take back an event that was loaded and unused FMOD.Event oldestEvent = m_availableEvents[0]; m_availableEvents.RemoveAt(0); wantedSource.SetEvent(oldestEvent); if (m_activeSources.Contains(wantedSource)) { Debug.LogWarning (getErrorPrefix() + "FmodEventAudioSource '" + wantedSource.name + "' loaded an event but was already active. Are you sure this should happen ?"); } else { m_activeSources.Add(wantedSource); } } else { // here we have no event loaded, so we must load a new one. using (FmodEventSystemHandle handle = new FmodEventSystemHandle()) { FmodEventSystem system = handle.getEventSystem(); if (system != null && system.wasCleaned() == false) { FMOD.RESULT result = FMOD.RESULT.OK; result = system.loadEventFromFile(wantedSource); if (result == FMOD.RESULT.OK) { m_activeSources.Add(wantedSource); } return (result); } } } return (FMOD.RESULT.OK); }
public void Initialize(string fileTotalPath) { FmodEventSystemHandle eventSystemHandle = new FmodEventSystemHandle(); string filePath; string fileName; System.Text.RegularExpressions.Match match = System.Text.RegularExpressions.Regex.Match(fileTotalPath, @"(.*)/([^/]+)$"); if (match.Success) { filePath = match.Groups[1].Value; fileName = match.Groups[2].Value; } else { throw new Exception("ERROR: Can't extract name and path to .fev from the string '" + fileTotalPath + "'"); } m_fileName = fileName; m_filePath = filePath; m_dateTime = System.DateTime.UtcNow; name = m_filePath + "/" + m_fileName; m_events = eventSystemHandle.getEventSystem().loadEventsFromFile(filePath, fileName, this); eventSystemHandle.Dispose(); }
public static void getEventSystem(FmodEventSystemHandle handle) { if (handle.getEventSystem() == null) { if (m_holder == null) { m_holder = GameObject.FindObjectOfType(typeof(FmodEventSystemHolder)) as FmodEventSystemHolder; if (m_holder == null) { UnityEngine.GameObject holderObject = new UnityEngine.GameObject("FmodEventSystemHolder"); holderObject.AddComponent(typeof(FmodEventSystemHolder)); m_holder = holderObject.GetComponent<FmodEventSystemHolder>(); } } if (m_holder == null) { Debug.LogError("Could not find FmodEventSystemHolder; FMOD integration will not work"); } else { if (m_FmodEventSystem == null) { m_FmodEventSystem = new FmodEventSystem(); m_FmodEventSystem._createEventSystem(); m_holder.SetFmodEventSystemHandle(new FmodEventSystemHandle()); } handle.setEventSystem(m_FmodEventSystem); GetReverbManager(); } } }
public void Play() { CheckForOldFormat(); if (m_source != null) { FMOD.RESULT result = FMOD.RESULT.OK; if (m_runtimeEvent == null) { if (m_eventSystemHandle == null) { m_eventSystemHandle = new FmodEventSystemHandle(); } m_eventSystemHandle.getEventSystem().loadEvent(this); } if (m_runtimeEvent != null) { SetVolume(m_volume); if (m_runtimeEvent != null) {// runtime event could be null after SetVolume if max_callback as been reached m_status = Status.Playing; if (Paused == false) { Unpause(); result = m_runtimeEvent.start(); ERRCHECK(result); if (result != FMOD.RESULT.OK) { m_status = Status.Stopped; } } } } else { m_eventSystemHandle.Dispose(); m_eventSystemHandle = null; } } else { Debug.LogWarning("FMOD_Unity: FmodEventAudioSource '" + gameObject.name + "': Could not play : no sound set."); } }
private void _updateReverbStack() { if (m_reverbStack.Count == 0) { return ; } m_reverbStack.Sort((x, y) => (int)(y.Priority).CompareTo((int)x.Priority)); FmodReverbZone newCurrentZone = m_reverbStack[0]; if (m_currentZone != newCurrentZone) { // we should transition float fadeInTime = newCurrentZone.fadeTime; // if we are transitionning from a zone back to the global zone, we use the previous fade time // to fade out if (newCurrentZone == m_globalReverbZone && m_currentZone != m_globalReverbZone) { m_globalReverb.Initialize(m_globalReverb.getName(), FmodReverb.GLOBAL_REVERB.Properties); fadeInTime = m_currentZone.fadeTime; } FMOD.REVERB_PROPERTIES targetProps = newCurrentZone.GetReverb().getProperties(); if (fadeInTime <= 0) { FmodEventSystemHandle handle = new FmodEventSystemHandle(); m_isInTransition = false; m_startProperties = m_curProperties; m_endProperties = targetProps; handle.getEventSystem().setReverbImmediate(targetProps); handle.Dispose(); } else { m_isInTransition = true; m_startProperties = m_curProperties; m_endProperties = targetProps; m_curTransitionDuration = fadeInTime; m_curTransitionTime = 0; } m_currentZone = newCurrentZone; } }