// 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;
    }
Exemple #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;
    }
Exemple #3
0
 public void unsetReverb(FmodReverbZone reverbZone)
 {
     if (m_reverbManager != null)
     {
         m_reverbManager.UnstackReverb(reverbZone);
     }
 }
    protected void CreateReverbZone(FmodReverb srcReverb, Vector3 worldPos, RaycastHit hitInfo)
    {
        GameObject     obj        = GameObject.Instantiate(Resources.Load("FmodReverbZone"), worldPos, Quaternion.identity) as GameObject;
        FmodReverbZone reverbZone = obj.GetComponent <FmodReverbZone>();

        if (reverbZone == null)
        {
            Debug.LogError("Prefab for FmodReverbZone should have component FmodReverbZone !");
        }
        else
        {
            reverbZone.SetReverb(srcReverb);
            obj.name = "FmodReverbZone (" + srcReverb.name + ")";
        }
    }
Exemple #5
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;
        }
    }
    public override void OnInspectorGUI()
    {
        serializedObject.Update();
        if (serializedObject != null && serializedObject.targetObject != null)
        {
            FmodReverbZone     zone         = serializedObject.targetObject as FmodReverbZone;
            FmodReverb         reverb       = zone.GetReverb();
            SerializedProperty fadeTimeProp = serializedObject.FindProperty("fadeTime");
            SerializedProperty priorityProp = serializedObject.FindProperty("m_priority");
            bool isGlobal = zone.IsGlobal();

            if (reverb != null)
            {
                EditorGUILayout.LabelField("Name", reverb.getName() + (isGlobal ? " (global reverb)" : ""));
                if (isGlobal)
                {
                    GUI.enabled = false;
                }
                EditorGUILayout.Slider(fadeTimeProp, 0, 100, "Fade Time");
                EditorGUILayout.Slider(priorityProp, 0, 10000, "Priority");
                if (isGlobal)
                {
                    GUI.enabled = true;
                }
                EditorGUILayout.Separator();
                EditorGUILayout.PrefixLabel("Parameters");
                EditorGUI.indentLevel += 1;
                GUI.enabled            = false;
                EditorGUILayout.IntSlider("Master level", (int)((float)reverb.Room / 100), -100, 0);
                EditorGUILayout.IntSlider("Decay Time", (int)(reverb.DecayTime * 1000), 100, 20000);
                EditorGUILayout.Slider("HF Decay Ratio", reverb.DecayHFRatio, 0.1f, 2);
                EditorGUILayout.IntSlider("Pre Delay", (int)(reverb.ReflectionsDelay * 1000), 0, 300);
                EditorGUILayout.IntSlider("Late Delay", (int)(reverb.ReverbDelay * 1000), 0, 100);
                EditorGUILayout.Slider("Early Reflections", ((float)reverb.Reflections / 100), -100, 10);
                EditorGUILayout.Slider("Late Reflections", ((float)reverb.Reverb / 100), -100, 20);
                EditorGUILayout.IntSlider("Diffusion", (int)reverb.Diffusion, 0, 100);
                EditorGUILayout.IntSlider("Density", (int)reverb.Density, 0, 100);
                EditorGUILayout.Slider("HF Gain", ((float)reverb.RoomHF / 100), -100, 0);
                EditorGUILayout.Slider("LF Gain", ((float)reverb.RoomLF / 100), -100, 0);
                EditorGUILayout.IntSlider("HF Crossover", (int)reverb.HFReference, 20, 20000);
                EditorGUILayout.IntSlider("LF Crossover", (int)reverb.LFReference, 20, 1000);
                GUI.enabled            = true;
                EditorGUI.indentLevel -= 1;

                serializedObject.ApplyModifiedProperties();
            }
            else
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.PrefixLabel("Name");
                EditorGUILayout.HelpBox("No Reverb is set", MessageType.Error);
                EditorGUILayout.EndHorizontal();
                GUI.enabled = false;
                EditorGUILayout.FloatField("Fade Time", 3);
                GUI.enabled = true;
                EditorGUILayout.Separator();
                EditorGUILayout.PrefixLabel("Parameters");
                GUI.enabled            = false;
                EditorGUI.indentLevel += 1;
                EditorGUILayout.IntSlider("Master level", 0, -100, 0);
                EditorGUILayout.IntSlider("Decay Time", 100, 100, 20000);
                EditorGUILayout.Slider("HF Decay Ratio", 0.1f, 0.1f, 2);
                EditorGUILayout.IntSlider("Pre Delay", 0, 0, 300);
                EditorGUILayout.IntSlider("Late Delay", 0, 0, 100);
                EditorGUILayout.Slider("Early Reflections", -100, -100, 10);
                EditorGUILayout.Slider("Late Reflections", -100, -100, 20);
                EditorGUILayout.IntSlider("Diffusion", 0, 0, 100);
                EditorGUILayout.IntSlider("Density", 0, 0, 100);
                EditorGUILayout.Slider("HF Gain", -100, -100, 0);
                EditorGUILayout.Slider("LF Gain", -100, -100, 0);
                EditorGUILayout.IntSlider("HF Crossover", 20, 20, 20000);
                EditorGUILayout.IntSlider("LF Crossover", 20, 20, 1000);
                EditorGUI.indentLevel -= 1;
                GUI.enabled            = true;
            }
        }
    }
 public void unsetReverb(FmodReverbZone reverbZone)
 {
     if (m_reverbManager != null) {
         m_reverbManager.UnstackReverb(reverbZone);
     }
 }
Exemple #8
0
 public void UnstackReverb(FmodReverbZone zone)
 {
     m_reverbStack.Remove(zone);
     _updateReverbStack();
 }
Exemple #9
0
 public void StackReverb(FmodReverbZone zone)
 {
     m_reverbStack.Add(zone);
     _updateReverbStack();
 }
 public void UnstackReverb(FmodReverbZone zone)
 {
     m_reverbStack.Remove(zone);
     _updateReverbStack();
 }
 public void StackReverb(FmodReverbZone zone)
 {
     m_reverbStack.Add(zone);
     _updateReverbStack();
 }
    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;
        }
    }