public FmodReverb getMatchingReverb(FmodReverb oldReverb) { List <FmodReverb> reverbs = getReverbs(); foreach (FmodReverb r in reverbs) { if (r.getName() == oldReverb.getName()) { return(r); } } return(null); }
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; } }
private void _SetupDragAndDrop(FmodEventAsset asset) { Event e = Event.current; if (e.type == EventType.MouseUp || e.type == EventType.MouseDown) { _clearDragAndDrop(); } if (e.type == EventType.MouseDrag) { FmodEvent fmodEvent = _getHoveredEvent(); FmodReverb reverb = _getHoveredReverb(); if (fmodEvent != null) { DragAndDrop.PrepareStartDrag(); DragAndDrop.paths = new string[0]; DragAndDrop.objectReferences = new Object[1] { fmodEvent }; DragAndDrop.SetGenericData(ONGOING_DRAG_KEY, true); DragAndDrop.SetGenericData(SOURCE_ASSET_KEY, asset); DragAndDrop.visualMode = DragAndDropVisualMode.Copy; DragAndDrop.StartDrag("Creating sound from event '" + fmodEvent.getName() + "'"); m_ongoingDrag = true; e.Use(); } else if (reverb != null) { DragAndDrop.PrepareStartDrag(); DragAndDrop.paths = new string[0]; DragAndDrop.objectReferences = new Object[1] { reverb }; DragAndDrop.SetGenericData(ONGOING_DRAG_KEY, true); DragAndDrop.SetGenericData(SOURCE_ASSET_KEY, asset); DragAndDrop.visualMode = DragAndDropVisualMode.Move; DragAndDrop.StartDrag("Creating reverb zone from reverb '" + reverb.getName() + "'"); m_ongoingDrag = true; e.Use(); } } }
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 FmodReverb getMatchingReverb(FmodReverb oldReverb) { List<FmodReverb> reverbs = getReverbs(); foreach (FmodReverb r in reverbs) { if (r.getName() == oldReverb.getName()) { return (r); } } return (null); }