private CurveWrapper[] GetCurveWrapperArray() { List <CurveWrapper> list = new List <CurveWrapper>(); AudioSourceInspector.AudioCurveWrapper[] audioCurves = this.m_AudioCurves; for (int i = 0; i < audioCurves.Length; i++) { AudioSourceInspector.AudioCurveWrapper audioCurveWrapper = audioCurves[i]; if (audioCurveWrapper.curveProp != null) { AnimationCurve animationCurve = audioCurveWrapper.curveProp.animationCurveValue; bool flag; if (audioCurveWrapper.type == AudioSourceInspector.AudioCurveType.Volume) { AudioRolloffMode enumValueIndex = (AudioRolloffMode)this.m_RolloffMode.enumValueIndex; if (this.m_RolloffMode.hasMultipleDifferentValues) { flag = false; } else if (enumValueIndex == AudioRolloffMode.Custom) { flag = !audioCurveWrapper.curveProp.hasMultipleDifferentValues; } else { flag = (!this.m_MinDistance.hasMultipleDifferentValues && !this.m_MaxDistance.hasMultipleDifferentValues); if (enumValueIndex == AudioRolloffMode.Linear) { animationCurve = AnimationCurve.Linear(this.m_MinDistance.floatValue / this.m_MaxDistance.floatValue, 1f, 1f, 0f); } else if (enumValueIndex == AudioRolloffMode.Logarithmic) { animationCurve = AudioSourceInspector.Logarithmic(this.m_MinDistance.floatValue / this.m_MaxDistance.floatValue, 1f, 1f); } } } else { flag = !audioCurveWrapper.curveProp.hasMultipleDifferentValues; } if (flag) { if (animationCurve.length == 0) { Debug.LogError(audioCurveWrapper.legend.text + " curve has no keys!"); } else { list.Add(this.GetCurveWrapper(animationCurve, audioCurveWrapper)); } } } } return(list.ToArray()); }
private CurveWrapper GetCurveWrapper(AnimationCurve curve, AudioSourceInspector.AudioCurveWrapper audioCurve) { float num = EditorGUIUtility.isProSkin ? 1f : 0.9f; Color b = new Color(num, num, num, 1f); CurveWrapper curveWrapper = new CurveWrapper(); curveWrapper.id = audioCurve.id; curveWrapper.groupId = -1; curveWrapper.color = audioCurve.color * b; curveWrapper.hidden = false; curveWrapper.readOnly = false; curveWrapper.renderer = new NormalCurveRenderer(curve); curveWrapper.renderer.SetCustomRange(0f, 1f); curveWrapper.getAxisUiScalarsCallback = new CurveWrapper.GetAxisScalarsCallback(this.GetAxisScalars); return(curveWrapper); }
private void HandleLowPassFilter() { AudioSourceInspector.AudioCurveWrapper audioCurveWrapper = this.m_AudioCurves[3]; AudioLowPassFilter[] array = new AudioLowPassFilter[base.targets.Length]; for (int i = 0; i < base.targets.Length; i++) { array[i] = ((AudioSource)base.targets[i]).GetComponent <AudioLowPassFilter>(); if (array[i] == null) { this.m_LowpassObject = null; audioCurveWrapper.curveProp = null; return; } } if (audioCurveWrapper.curveProp == null) { this.m_LowpassObject = new SerializedObject(array); audioCurveWrapper.curveProp = this.m_LowpassObject.FindProperty("lowpassLevelCustomCurve"); } }
private void HandleLowPassFilter() { AudioSourceInspector.AudioCurveWrapper audioCurve = this.m_AudioCurves[3]; AudioLowPassFilter[] audioLowPassFilterArray = new AudioLowPassFilter[this.targets.Length]; for (int index = 0; index < this.targets.Length; ++index) { audioLowPassFilterArray[index] = ((Component)this.targets[index]).GetComponent <AudioLowPassFilter>(); if ((UnityEngine.Object)audioLowPassFilterArray[index] == (UnityEngine.Object)null) { this.m_LowpassObject = (SerializedObject)null; audioCurve.curveProp = (SerializedProperty)null; return; } } if (audioCurve.curveProp != null) { return; } this.m_LowpassObject = new SerializedObject((UnityEngine.Object[])audioLowPassFilterArray); audioCurve.curveProp = this.m_LowpassObject.FindProperty("lowpassLevelCustomCurve"); }
public override void OnInspectorGUI() { AudioSourceInspector.InitStyles(); base.serializedObject.Update(); if (this.m_LowpassObject != null) { this.m_LowpassObject.Update(); } this.HandleLowPassFilter(); AudioSourceInspector.AudioCurveWrapper[] audioCurves = this.m_AudioCurves; for (int i = 0; i < audioCurves.Length; i++) { AudioSourceInspector.AudioCurveWrapper audioCurveWrapper = audioCurves[i]; CurveWrapper curveWrapperFromID = this.m_CurveEditor.GetCurveWrapperFromID(audioCurveWrapper.id); if (audioCurveWrapper.curveProp != null) { AnimationCurve animationCurveValue = audioCurveWrapper.curveProp.animationCurveValue; if (curveWrapperFromID == null != audioCurveWrapper.curveProp.hasMultipleDifferentValues) { this.m_RefreshCurveEditor = true; } else if (curveWrapperFromID != null) { if (curveWrapperFromID.curve.length == 0) { this.m_RefreshCurveEditor = true; } else if (animationCurveValue.length >= 1 && animationCurveValue.keys[0].value != curveWrapperFromID.curve.keys[0].value) { this.m_RefreshCurveEditor = true; } } } else if (curveWrapperFromID != null) { this.m_RefreshCurveEditor = true; } } this.UpdateWrappersAndLegend(); EditorGUILayout.PropertyField(this.m_AudioClip, AudioSourceInspector.ms_Styles.audioClipLabel, new GUILayoutOption[0]); EditorGUILayout.Space(); EditorGUILayout.PropertyField(this.m_OutputAudioMixerGroup, AudioSourceInspector.ms_Styles.outputMixerGroupLabel, new GUILayoutOption[0]); EditorGUILayout.PropertyField(this.m_Mute, new GUILayoutOption[0]); if (AudioUtil.canUseSpatializerEffect) { EditorGUILayout.PropertyField(this.m_Spatialize, AudioSourceInspector.ms_Styles.spatializeLabel, new GUILayoutOption[0]); using (new EditorGUI.DisabledScope(!this.m_Spatialize.boolValue)) { EditorGUILayout.PropertyField(this.m_SpatializePostEffects, AudioSourceInspector.ms_Styles.spatializePostEffectsLabel, new GUILayoutOption[0]); } } EditorGUILayout.PropertyField(this.m_BypassEffects, new GUILayoutOption[0]); if (base.targets.Any((UnityEngine.Object t) => (t as AudioSource).outputAudioMixerGroup != null)) { using (new EditorGUI.DisabledScope(true)) { EditorGUILayout.PropertyField(this.m_BypassListenerEffects, new GUILayoutOption[0]); } } else { EditorGUILayout.PropertyField(this.m_BypassListenerEffects, new GUILayoutOption[0]); } EditorGUILayout.PropertyField(this.m_BypassReverbZones, new GUILayoutOption[0]); EditorGUILayout.PropertyField(this.m_PlayOnAwake, new GUILayoutOption[0]); EditorGUILayout.PropertyField(this.m_Loop, new GUILayoutOption[0]); EditorGUILayout.Space(); EditorGUIUtility.sliderLabels.SetLabels(AudioSourceInspector.ms_Styles.priorityLeftLabel, AudioSourceInspector.ms_Styles.priorityRightLabel); EditorGUILayout.IntSlider(this.m_Priority, 0, 256, AudioSourceInspector.ms_Styles.priorityLabel, new GUILayoutOption[0]); EditorGUIUtility.sliderLabels.SetLabels(null, null); EditorGUILayout.Space(); EditorGUILayout.Slider(this.m_Volume, 0f, 1f, AudioSourceInspector.ms_Styles.volumeLabel, new GUILayoutOption[0]); EditorGUILayout.Space(); EditorGUILayout.Slider(this.m_Pitch, -3f, 3f, AudioSourceInspector.ms_Styles.pitchLabel, new GUILayoutOption[0]); EditorGUILayout.Space(); EditorGUIUtility.sliderLabels.SetLabels(AudioSourceInspector.ms_Styles.panLeftLabel, AudioSourceInspector.ms_Styles.panRightLabel); EditorGUILayout.Slider(this.m_Pan2D, -1f, 1f, AudioSourceInspector.ms_Styles.panStereoLabel, new GUILayoutOption[0]); EditorGUIUtility.sliderLabels.SetLabels(null, null); EditorGUILayout.Space(); EditorGUIUtility.sliderLabels.SetLabels(AudioSourceInspector.ms_Styles.spatialLeftLabel, AudioSourceInspector.ms_Styles.spatialRightLabel); AudioSourceInspector.AnimProp(AudioSourceInspector.ms_Styles.spatialBlendLabel, this.m_AudioCurves[1].curveProp, 0f, 1f, false); EditorGUIUtility.sliderLabels.SetLabels(null, null); EditorGUILayout.Space(); AudioSourceInspector.AnimProp(AudioSourceInspector.ms_Styles.reverbZoneMixLabel, this.m_AudioCurves[4].curveProp, 0f, 1.1f, false); EditorGUILayout.Space(); this.m_Expanded3D = EditorGUILayout.Foldout(this.m_Expanded3D, "3D Sound Settings", true); if (this.m_Expanded3D) { EditorGUI.indentLevel++; this.Audio3DGUI(); EditorGUI.indentLevel--; } base.serializedObject.ApplyModifiedProperties(); if (this.m_LowpassObject != null) { this.m_LowpassObject.ApplyModifiedProperties(); } }
private void Audio3DGUI() { EditorGUILayout.Slider(this.m_DopplerLevel, 0f, 5f, AudioSourceInspector.ms_Styles.dopplerLevelLabel, new GUILayoutOption[0]); EditorGUILayout.Space(); EditorGUI.BeginChangeCheck(); if (this.m_RolloffMode.hasMultipleDifferentValues || (this.m_RolloffMode.enumValueIndex == 2 && this.m_AudioCurves[0].curveProp.hasMultipleDifferentValues)) { EditorGUILayout.TargetChoiceField(this.m_AudioCurves[0].curveProp, AudioSourceInspector.ms_Styles.rolloffLabel, new TargetChoiceHandler.TargetChoiceMenuFunction(AudioSourceInspector.SetRolloffToTarget), new GUILayoutOption[0]); } else { EditorGUILayout.PropertyField(this.m_RolloffMode, AudioSourceInspector.ms_Styles.rolloffLabel, new GUILayoutOption[0]); EditorGUI.indentLevel++; if (this.m_RolloffMode.enumValueIndex != 2) { EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(this.m_MinDistance, new GUILayoutOption[0]); if (EditorGUI.EndChangeCheck()) { this.m_MinDistance.floatValue = Mathf.Clamp(this.m_MinDistance.floatValue, 0f, this.m_MaxDistance.floatValue / 1.01f); } } else { EditorGUI.BeginDisabledGroup(true); EditorGUILayout.LabelField(this.m_MinDistance.displayName, AudioSourceInspector.ms_Styles.controlledByCurveLabel, new GUILayoutOption[0]); EditorGUI.EndDisabledGroup(); } EditorGUI.indentLevel--; } AudioSourceInspector.AnimProp(AudioSourceInspector.ms_Styles.spreadLabel, this.m_AudioCurves[2].curveProp, 0f, 360f, true); EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(this.m_MaxDistance, new GUILayoutOption[0]); if (EditorGUI.EndChangeCheck()) { this.m_MaxDistance.floatValue = Mathf.Min(Mathf.Max(Mathf.Max(this.m_MaxDistance.floatValue, 0.01f), this.m_MinDistance.floatValue * 1.01f), 1000000f); } if (EditorGUI.EndChangeCheck()) { this.m_RefreshCurveEditor = true; } Rect aspectRect = GUILayoutUtility.GetAspectRect(1.333f, GUI.skin.textField); aspectRect.xMin += EditorGUI.indent; if (Event.current.type != EventType.Layout && Event.current.type != EventType.Used) { this.m_CurveEditor.rect = new Rect(aspectRect.x, aspectRect.y, aspectRect.width, aspectRect.height); } this.UpdateWrappersAndLegend(); GUI.Label(this.m_CurveEditor.drawRect, GUIContent.none, "TextField"); this.m_CurveEditor.hRangeLocked = Event.current.shift; this.m_CurveEditor.vRangeLocked = EditorGUI.actionKey; this.m_CurveEditor.OnGUI(); if (base.targets.Length == 1) { AudioSource audioSource = (AudioSource)this.target; AudioListener x = (AudioListener)UnityEngine.Object.FindObjectOfType(typeof(AudioListener)); if (x != null) { float magnitude = (AudioUtil.GetListenerPos() - audioSource.transform.position).magnitude; this.DrawLabel("Listener", magnitude, aspectRect); } } this.DrawLegend(); AudioSourceInspector.AudioCurveWrapper[] audioCurves = this.m_AudioCurves; for (int i = 0; i < audioCurves.Length; i++) { AudioSourceInspector.AudioCurveWrapper audioCurveWrapper = audioCurves[i]; if (this.m_CurveEditor.getCurveWrapperById(audioCurveWrapper.id) != null && this.m_CurveEditor.getCurveWrapperById(audioCurveWrapper.id).changed) { AnimationCurve curve = this.m_CurveEditor.getCurveWrapperById(audioCurveWrapper.id).curve; if (curve.length > 0) { audioCurveWrapper.curveProp.animationCurveValue = curve; this.m_CurveEditor.getCurveWrapperById(audioCurveWrapper.id).changed = false; if (audioCurveWrapper.type == AudioSourceInspector.AudioCurveType.Volume) { this.m_RolloffMode.enumValueIndex = 2; } if (audioCurveWrapper.type == AudioSourceInspector.AudioCurveType.Lowpass && audioCurveWrapper.curveProp.animationCurveValue.length == 1) { Keyframe keyframe = audioCurveWrapper.curveProp.animationCurveValue.keys[0]; this.m_CutoffFrequency.floatValue = (1f - keyframe.value) * 22000f; } } } } }
public override void OnInspectorGUI() { AudioSourceInspector.InitStyles(); base.serializedObject.Update(); if (this.m_LowpassObject != null) { this.m_LowpassObject.Update(); } this.HandleLowPassFilter(); AudioSourceInspector.AudioCurveWrapper[] audioCurves = this.m_AudioCurves; for (int i = 0; i < audioCurves.Length; i++) { AudioSourceInspector.AudioCurveWrapper audioCurveWrapper = audioCurves[i]; CurveWrapper curveWrapperFromID = this.m_CurveEditor.GetCurveWrapperFromID(audioCurveWrapper.id); if (audioCurveWrapper.curveProp != null) { AnimationCurve animationCurveValue = audioCurveWrapper.curveProp.animationCurveValue; if (curveWrapperFromID == null != audioCurveWrapper.curveProp.hasMultipleDifferentValues) { this.m_RefreshCurveEditor = true; } else if (curveWrapperFromID != null) { if (curveWrapperFromID.curve.length == 0) { this.m_RefreshCurveEditor = true; } else if (animationCurveValue.length >= 1 && animationCurveValue.keys[0].value != curveWrapperFromID.curve.keys[0].value) { this.m_RefreshCurveEditor = true; } } } else if (curveWrapperFromID != null) { this.m_RefreshCurveEditor = true; } } this.UpdateWrappersAndLegend(); EditorGUILayout.PropertyField(this.m_AudioClip, AudioSourceInspector.ms_Styles.audioClipLabel, new GUILayoutOption[0]); EditorGUILayout.Space(); EditorGUILayout.PropertyField(this.m_OutputAudioMixerGroup, AudioSourceInspector.ms_Styles.outputMixerGroupLabel, new GUILayoutOption[0]); EditorGUILayout.PropertyField(this.m_Mute, new GUILayoutOption[0]); EditorGUILayout.PropertyField(this.m_BypassEffects, new GUILayoutOption[0]); if (base.targets.Any((UnityEngine.Object t) => (t as AudioSource).outputAudioMixerGroup != null)) { using (new EditorGUI.DisabledScope(true)) { EditorGUILayout.PropertyField(this.m_BypassListenerEffects, new GUILayoutOption[0]); } } else { EditorGUILayout.PropertyField(this.m_BypassListenerEffects, new GUILayoutOption[0]); } EditorGUILayout.PropertyField(this.m_BypassReverbZones, new GUILayoutOption[0]); EditorGUILayout.PropertyField(this.m_PlayOnAwake, new GUILayoutOption[0]); EditorGUILayout.PropertyField(this.m_Loop, new GUILayoutOption[0]); EditorGUILayout.Space(); EditorGUIUtility.sliderLabels.SetLabels(AudioSourceInspector.ms_Styles.priorityLeftLabel, AudioSourceInspector.ms_Styles.priorityRightLabel); EditorGUILayout.IntSlider(this.m_Priority, 0, 256, AudioSourceInspector.ms_Styles.priorityLabel, new GUILayoutOption[0]); EditorGUIUtility.sliderLabels.SetLabels(null, null); EditorGUILayout.Space(); EditorGUILayout.Slider(this.m_Volume, 0f, 1f, AudioSourceInspector.ms_Styles.volumeLabel, new GUILayoutOption[0]); EditorGUILayout.Space(); EditorGUILayout.Slider(this.m_Pitch, -3f, 3f, AudioSourceInspector.ms_Styles.pitchLabel, new GUILayoutOption[0]); EditorGUILayout.Space(); EditorGUIUtility.sliderLabels.SetLabels(AudioSourceInspector.ms_Styles.panLeftLabel, AudioSourceInspector.ms_Styles.panRightLabel); EditorGUILayout.Slider(this.m_Pan2D, -1f, 1f, AudioSourceInspector.ms_Styles.panStereoLabel, new GUILayoutOption[0]); EditorGUIUtility.sliderLabels.SetLabels(null, null); EditorGUILayout.Space(); EditorGUIUtility.sliderLabels.SetLabels(AudioSourceInspector.ms_Styles.spatialLeftLabel, AudioSourceInspector.ms_Styles.spatialRightLabel); AudioSourceInspector.AnimProp(AudioSourceInspector.ms_Styles.spatialBlendLabel, this.m_AudioCurves[1].curveProp, 0f, 1f, false); EditorGUIUtility.sliderLabels.SetLabels(null, null); EditorGUILayout.Space(); AudioSourceInspector.AnimProp(AudioSourceInspector.ms_Styles.reverbZoneMixLabel, this.m_AudioCurves[4].curveProp, 0f, 1.1f, false); EditorGUILayout.Space(); this.m_Expanded3D = EditorGUILayout.Foldout(this.m_Expanded3D, "3D Sound Settings", true); if (this.m_Expanded3D) { EditorGUI.indentLevel++; this.Audio3DGUI(); EditorGUI.indentLevel--; } if (AudioUtil.canUseSpatializerEffect) { EditorGUILayout.PropertyField(this.m_Spatialize, AudioSourceInspector.ms_Styles.spatializeLabel, new GUILayoutOption[0]); if (this.m_Spatialize.boolValue && !this.m_Spatialize.hasMultipleDifferentValues) { for (int j = 0; j < base.targets.Length; j++) { AudioSource audioSource = base.targets[j] as AudioSource; AudioSourceExtension audioSourceExtension = (!(audioSource != null)) ? null : AudioExtensionManager.GetSpatializerExtension(audioSource); if (audioSource != null && audioSource.spatialize && audioSource.isPlaying) { if (audioSourceExtension == null) { audioSourceExtension = AudioExtensionManager.AddSpatializerExtension(audioSource); } AudioExtensionManager.GetReadyToPlay(audioSourceExtension); } } EditorGUI.indentLevel++; EditorGUILayout.PropertyField(this.m_SpatializePostEffects, AudioSourceInspector.ms_Styles.spatializePostEffectsLabel, new GUILayoutOption[0]); bool flag = (this.m_AddSpatializerExtension && !this.m_AddSpatializerExtensionMixedValues) || !base.serializedObject.isEditingMultipleObjects; if (AudioExtensionManager.IsSourceSpatializerExtensionRegistered() && flag) { EditorGUI.showMixedValue = this.m_AddSpatializerExtensionMixedValues; bool flag2 = EditorGUILayout.Toggle(AudioSourceInspector.ms_Styles.addSpatializerExtensionLabel, this.m_AddSpatializerExtension, new GUILayoutOption[0]); EditorGUI.showMixedValue = false; bool flag3 = false; if (this.m_AddSpatializerExtension != flag2) { this.m_AddSpatializerExtension = flag2; if (this.m_AddSpatializerExtension) { this.CreateExtensionEditors(); if (this.m_SpatializerEditor != null) { flag3 = this.m_SpatializerEditor.FindAudioExtensionProperties(base.serializedObject); } } else { this.ClearExtensionProperties(); this.DestroyExtensionEditors(); flag3 = false; } } else if (this.m_SpatializerEditor != null) { flag3 = this.m_SpatializerEditor.FindAudioExtensionProperties(base.serializedObject); if (!flag3) { this.m_AddSpatializerExtension = false; this.ClearExtensionProperties(); this.DestroyExtensionEditors(); } } if (this.m_SpatializerEditor != null && flag3) { EditorGUI.indentLevel++; this.m_SpatializerEditor.OnAudioSourceGUI(); EditorGUI.indentLevel--; for (int k = 0; k < base.targets.Length; k++) { AudioSource audioSource2 = base.targets[k] as AudioSource; AudioSourceExtension audioSourceExtension2 = (!(audioSource2 != null)) ? null : AudioExtensionManager.GetSpatializerExtension(audioSource2); if (audioSource2 != null && audioSourceExtension2 != null && audioSource2.isPlaying) { string name = AudioExtensionManager.GetSourceSpatializerExtensionType().Name; for (int l = 0; l < this.m_SpatializerEditor.GetNumExtensionProperties(); l++) { PropertyName extensionPropertyName = this.m_SpatializerEditor.GetExtensionPropertyName(l); float propertyValue = 0f; if (audioSource2.ReadExtensionProperty(name, extensionPropertyName, ref propertyValue)) { audioSourceExtension2.WriteExtensionProperty(extensionPropertyName, propertyValue); } } } } } } } } base.serializedObject.ApplyModifiedProperties(); if (this.m_LowpassObject != null) { this.m_LowpassObject.ApplyModifiedProperties(); } }