Ejemplo n.º 1
0
 public void OnDestroy()
 {
     if (m_handle != null) {
         m_handle.Dispose();
         m_handle = null;
     }
 }
Ejemplo n.º 2
0
    // 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;
    }
Ejemplo n.º 3
0
    // 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;
    }
Ejemplo n.º 4
0
 public void SetFmodEventSystemHandle(FmodEventSystemHandle handle)
 {
     if (m_handle == null) {
         m_handle = handle;
         GameObject.DontDestroyOnLoad(gameObject);
     }
 }
Ejemplo n.º 5
0
 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();
         }
     }
 }
Ejemplo n.º 6
0
 public void OnDestroy()
 {
     if (m_handle != null)
     {
         m_handle.Dispose();
         m_handle = null;
     }
 }
Ejemplo n.º 7
0
 public void SetFmodEventSystemHandle(FmodEventSystemHandle handle)
 {
     if (m_handle == null)
     {
         m_handle = handle;
         GameObject.DontDestroyOnLoad(gameObject);
     }
 }
Ejemplo n.º 8
0
    public void EnableReverb()
    {
        if (m_reverb != null && m_collider != null) {
            FmodEventSystemHandle handle = new FmodEventSystemHandle();

            handle.getEventSystem().setReverb(this);
            handle.Dispose();
        }
    }
Ejemplo n.º 9
0
    public void DisableReverb()
    {
        if (m_reverb != null && m_collider != null)
        {
            FmodEventSystemHandle handle = new FmodEventSystemHandle();

            handle.getEventSystem().unsetReverb(this);
            handle.Dispose();
        }
    }
Ejemplo n.º 10
0
    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);
    }
Ejemplo n.º 11
0
 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;
     }
 }
Ejemplo n.º 12
0
 public void Clean()
 {
     CleanRuntimeEvent();
     if (m_eventSystemHandle != null)
     {
         m_eventSystemHandle.Dispose();
         m_eventSystemHandle = null;
     }
     if (m_selfHandle.IsAllocated)
     {
         m_selfHandle.Free();
     }
 }
Ejemplo n.º 13
0
 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;
     }
 }
Ejemplo n.º 14
0
    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();
        }
    }
Ejemplo n.º 15
0
    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();
        }
    }
Ejemplo n.º 16
0
    // 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();
        }
    }
Ejemplo n.º 17
0
    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;
        }
    }
Ejemplo n.º 18
0
 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.");
     }
 }
Ejemplo n.º 19
0
    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);
    }
Ejemplo n.º 20
0
    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();
    }
Ejemplo n.º 21
0
 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();
         }
     }
 }
Ejemplo n.º 22
0
    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();
    }
Ejemplo n.º 23
0
 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.");
     }
 }
Ejemplo n.º 24
0
 public void Clean()
 {
     CleanRuntimeEvent();
     if (m_eventSystemHandle != null) {
         m_eventSystemHandle.Dispose();
         m_eventSystemHandle = null;
     }
     if (m_selfHandle.IsAllocated) {
         m_selfHandle.Free();
     }
 }
Ejemplo n.º 25
0
    // 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();
        }
    }
Ejemplo n.º 26
0
    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;
        }
    }