private void CreateExtensionEditors() { if (this.m_SpatializerEditor != null) { this.DestroyExtensionEditors(); } Type listenerSpatializerExtensionEditorType = AudioExtensionManager.GetListenerSpatializerExtensionEditorType(); this.m_SpatializerEditor = (ScriptableObject.CreateInstance(listenerSpatializerExtensionEditorType) as AudioListenerExtensionEditor); if (this.m_SpatializerEditor != null) { for (int i = 0; i < base.targets.Length; i++) { AudioListener audioListener = base.targets[i] as AudioListener; if (audioListener != null) { Undo.RecordObject(audioListener, "Add AudioListener extension properties"); PropertyName listenerSpatializerExtensionName = AudioExtensionManager.GetListenerSpatializerExtensionName(); for (int j = 0; j < this.m_SpatializerEditor.GetNumExtensionProperties(); j++) { PropertyName extensionPropertyName = this.m_SpatializerEditor.GetExtensionPropertyName(j); float propertyValue = 0f; if (!audioListener.ReadExtensionProperty(listenerSpatializerExtensionName, extensionPropertyName, ref propertyValue)) { propertyValue = this.m_SpatializerEditor.GetExtensionPropertyDefaultValue(j); audioListener.WriteExtensionProperty(AudioExtensionManager.GetSpatializerName(), listenerSpatializerExtensionName, extensionPropertyName, propertyValue); } } } } } this.m_AddSpatializerExtensionMixedValues = false; }
private void UpdateSpatializerExtensionMixedValues() { m_AddSpatializerExtension = false; int numTargetsWithSpatializerExtensions = 0; for (int i = 0; i < targets.Length; i++) { AudioListener listener = targets[i] as AudioListener; if (listener != null) { System.Type spatializerExtensionType = AudioExtensionManager.GetListenerSpatializerExtensionType(); if ((spatializerExtensionType != null) && (listener.GetNumExtensionPropertiesForThisExtension(spatializerExtensionType.Name) > 0)) { m_AddSpatializerExtension = true; numTargetsWithSpatializerExtensions++; } } } m_AddSpatializerExtensionMixedValues = ((numTargetsWithSpatializerExtensions == 0) || (numTargetsWithSpatializerExtensions == targets.Length)) ? false : true; if (m_AddSpatializerExtensionMixedValues) { m_AddSpatializerExtension = false; } }
private void ClearExtensionProperties() { for (int i = 0; i < base.targets.Length; i++) { AudioListener audioListener = base.targets[i] as AudioListener; if (audioListener != null) { Undo.RecordObject(audioListener, "Remove AudioListener extension properties"); audioListener.ClearExtensionProperties(AudioExtensionManager.GetListenerSpatializerExtensionName()); } } this.m_AddSpatializerExtensionMixedValues = false; }
private void ClearExtensionProperties() { for (int i = 0; i < targets.Length; i++) { AudioSource source = targets[i] as AudioSource; if (source != null) { Undo.RecordObject(source, "Remove AudioSource extension properties"); source.ClearExtensionProperties(AudioExtensionManager.GetSourceSpatializerExtensionName()); } } m_AddSpatializerExtensionMixedValues = false; }
// Created editors for all the enabled extensions of this AudioSource. private void CreateExtensionEditors() { if (m_SpatializerEditor != null) { DestroyExtensionEditors(); } System.Type spatializerEditorType = AudioExtensionManager.GetListenerSpatializerExtensionEditorType(); m_SpatializerEditor = ScriptableObject.CreateInstance(spatializerEditorType) as AudioListenerExtensionEditor; if (m_SpatializerEditor != null) { for (int i = 0; i < targets.Length; i++) { AudioListener listener = targets[i] as AudioListener; if (listener != null) { Undo.RecordObject(listener, "Add AudioListener extension properties"); PropertyName extensionName = AudioExtensionManager.GetListenerSpatializerExtensionName(); for (int j = 0; j < m_SpatializerEditor.GetNumExtensionProperties(); j++) { PropertyName propertyName = m_SpatializerEditor.GetExtensionPropertyName(j); float value = 0.0f; // If the AudioListener is missing an extension property, then create it now. if (!listener.ReadExtensionProperty(extensionName, propertyName, ref value)) { value = m_SpatializerEditor.GetExtensionPropertyDefaultValue(j); listener.WriteExtensionProperty(AudioExtensionManager.GetSpatializerName(), extensionName, propertyName, value); } } } } } m_AddSpatializerExtensionMixedValues = false; }
private void UpdateSpatializerExtensionMixedValues() { this.m_AddSpatializerExtension = false; int num = 0; for (int i = 0; i < base.targets.Length; i++) { AudioListener audioListener = base.targets[i] as AudioListener; if (audioListener != null) { Type listenerSpatializerExtensionType = AudioExtensionManager.GetListenerSpatializerExtensionType(); if (listenerSpatializerExtensionType != null && audioListener.GetNumExtensionPropertiesForThisExtension(listenerSpatializerExtensionType.Name) > 0) { this.m_AddSpatializerExtension = true; num++; } } } this.m_AddSpatializerExtensionMixedValues = (num != 0 && num != base.targets.Length); if (this.m_AddSpatializerExtensionMixedValues) { this.m_AddSpatializerExtension = false; } }
public override void OnInspectorGUI() { base.serializedObject.Update(); bool flag = (this.m_AddSpatializerExtension && !this.m_AddSpatializerExtensionMixedValues) || !base.serializedObject.isEditingMultipleObjects; if (AudioExtensionManager.IsListenerSpatializerExtensionRegistered() && flag) { EditorGUI.showMixedValue = this.m_AddSpatializerExtensionMixedValues; bool flag2 = EditorGUILayout.Toggle(this.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.OnAudioListenerGUI(); EditorGUI.indentLevel--; for (int i = 0; i < base.targets.Length; i++) { AudioListener audioListener = base.targets[i] as AudioListener; if (audioListener != null) { AudioListenerExtension spatializerExtension = AudioExtensionManager.GetSpatializerExtension(audioListener); if (spatializerExtension != null) { string name = AudioExtensionManager.GetListenerSpatializerExtensionType().Name; for (int j = 0; j < this.m_SpatializerEditor.GetNumExtensionProperties(); j++) { PropertyName extensionPropertyName = this.m_SpatializerEditor.GetExtensionPropertyName(j); float propertyValue = 0f; if (audioListener.ReadExtensionProperty(name, extensionPropertyName, ref propertyValue)) { spatializerExtension.WriteExtensionProperty(extensionPropertyName, propertyValue); } } } } } } } base.serializedObject.ApplyModifiedProperties(); }
public override void OnInspectorGUI() { serializedObject.Update(); bool allowExtensionEditing = (m_AddSpatializerExtension && !m_AddSpatializerExtensionMixedValues) || !serializedObject.isEditingMultipleObjects; if (AudioExtensionManager.IsListenerSpatializerExtensionRegistered() && allowExtensionEditing) { EditorGUI.showMixedValue = m_AddSpatializerExtensionMixedValues; bool addSpatializerExtensionNew = EditorGUILayout.Toggle(addSpatializerExtensionLabel, m_AddSpatializerExtension); EditorGUI.showMixedValue = false; bool showExtensionProperties = false; if (m_AddSpatializerExtension != addSpatializerExtensionNew) { m_AddSpatializerExtension = addSpatializerExtensionNew; if (m_AddSpatializerExtension) { CreateExtensionEditors(); if (m_SpatializerEditor != null) { showExtensionProperties = m_SpatializerEditor.FindAudioExtensionProperties(serializedObject); } } else { ClearExtensionProperties(); DestroyExtensionEditors(); showExtensionProperties = false; } } else if (m_SpatializerEditor != null) { showExtensionProperties = m_SpatializerEditor.FindAudioExtensionProperties(serializedObject); if (!showExtensionProperties) { m_AddSpatializerExtension = false; ClearExtensionProperties(); DestroyExtensionEditors(); } } if ((m_SpatializerEditor != null) && showExtensionProperties) { EditorGUI.indentLevel++; m_SpatializerEditor.OnAudioListenerGUI(); EditorGUI.indentLevel--; // Update AudioSourceExtension properties, if we are currently playing in Editor. for (int i = 0; i < targets.Length; i++) { AudioListener listener = targets[i] as AudioListener; if (listener != null) { AudioListenerExtension extension = AudioExtensionManager.GetSpatializerExtension(listener); if (extension != null) { string extensionName = AudioExtensionManager.GetListenerSpatializerExtensionType().Name; for (int j = 0; j < m_SpatializerEditor.GetNumExtensionProperties(); j++) { PropertyName propertyName = m_SpatializerEditor.GetExtensionPropertyName(j); float value = 0.0f; if (listener.ReadExtensionProperty(extensionName, propertyName, ref value)) { extension.WriteExtensionProperty(propertyName, value); } } } } } } } serializedObject.ApplyModifiedProperties(); }
public override void OnInspectorGUI() { InitStyles(); serializedObject.Update(); if (m_LowpassObject != null) { m_LowpassObject.Update(); } HandleLowPassFilter(); UpdateWrappersAndLegend(); EditorGUILayout.PropertyField(m_AudioClip, ms_Styles.audioClipLabel); EditorGUILayout.Space(); EditorGUILayout.PropertyField(m_OutputAudioMixerGroup, ms_Styles.outputMixerGroupLabel); EditorGUILayout.PropertyField(m_Mute); EditorGUILayout.PropertyField(m_BypassEffects); if (targets.Any(t => (t as AudioSource).outputAudioMixerGroup != null)) { using (new EditorGUI.DisabledScope(true)) { EditorGUILayout.PropertyField(m_BypassListenerEffects); } } else { EditorGUILayout.PropertyField(m_BypassListenerEffects); } EditorGUILayout.PropertyField(m_BypassReverbZones); EditorGUILayout.PropertyField(m_PlayOnAwake); EditorGUILayout.PropertyField(m_Loop); EditorGUILayout.Space(); EditorGUIUtility.sliderLabels.SetLabels(ms_Styles.priorityLeftLabel, ms_Styles.priorityRightLabel); EditorGUILayout.IntSlider(m_Priority, 0, 256, ms_Styles.priorityLabel); EditorGUIUtility.sliderLabels.SetLabels(null, null); EditorGUILayout.Space(); EditorGUILayout.Slider(m_Volume, 0f, 1.0f, ms_Styles.volumeLabel); EditorGUILayout.Space(); EditorGUILayout.Slider(m_Pitch, -3.0f, 3.0f, ms_Styles.pitchLabel); EditorGUILayout.Space(); EditorGUIUtility.sliderLabels.SetLabels(ms_Styles.panLeftLabel, ms_Styles.panRightLabel); EditorGUILayout.Slider(m_Pan2D, -1f, 1f, ms_Styles.panStereoLabel); EditorGUIUtility.sliderLabels.SetLabels(null, null); EditorGUILayout.Space(); // 3D Level control EditorGUIUtility.sliderLabels.SetLabels(ms_Styles.spatialLeftLabel, ms_Styles.spatialRightLabel); AnimProp(ms_Styles.spatialBlendLabel, m_AudioCurves[kSpatialBlendCurveID].curveProp, 0.0f, 1.0f, false); EditorGUIUtility.sliderLabels.SetLabels(null, null); EditorGUILayout.Space(); // 3D Level control AnimProp(ms_Styles.reverbZoneMixLabel, m_AudioCurves[kReverbZoneMixCurveID].curveProp, 0.0f, 1.1f, false); EditorGUILayout.Space(); m_Expanded3D = EditorGUILayout.Foldout(m_Expanded3D, "3D Sound Settings", true); if (m_Expanded3D) { EditorGUI.indentLevel++; Audio3DGUI(); EditorGUI.indentLevel--; } if (AudioUtil.canUseSpatializerEffect) { EditorGUILayout.PropertyField(m_Spatialize, ms_Styles.spatializeLabel); if (m_Spatialize.boolValue && !m_Spatialize.hasMultipleDifferentValues) { for (int i = 0; i < targets.Length; i++) { AudioSource source = targets[i] as AudioSource; AudioSourceExtension extension = (source != null) ? AudioExtensionManager.GetSpatializerExtension(source) : null; // If we are playing in Editor or previewing in the scene view, spatialize is true, and we do not have a spatializer extension, try to add one. // We may have just toggled spatialize here in the Editor. if ((source != null) && source.spatialize && source.isPlaying) { if (extension == null) { extension = AudioExtensionManager.AddSpatializerExtension(source); } AudioExtensionManager.GetReadyToPlay(extension); } } EditorGUI.indentLevel++; EditorGUILayout.PropertyField(m_SpatializePostEffects, ms_Styles.spatializePostEffectsLabel); bool allowExtensionEditing = (m_AddSpatializerExtension && !m_AddSpatializerExtensionMixedValues) || !serializedObject.isEditingMultipleObjects; if (AudioExtensionManager.IsSourceSpatializerExtensionRegistered() && allowExtensionEditing) { EditorGUI.showMixedValue = m_AddSpatializerExtensionMixedValues; bool addSpatializerExtensionNew = EditorGUILayout.Toggle(ms_Styles.addSpatializerExtensionLabel, m_AddSpatializerExtension); EditorGUI.showMixedValue = false; bool showExtensionProperties = false; if (m_AddSpatializerExtension != addSpatializerExtensionNew) { m_AddSpatializerExtension = addSpatializerExtensionNew; if (m_AddSpatializerExtension) { CreateExtensionEditors(); if (m_SpatializerEditor != null) { showExtensionProperties = m_SpatializerEditor.FindAudioExtensionProperties(serializedObject); } } else { ClearExtensionProperties(); DestroyExtensionEditors(); showExtensionProperties = false; } } else if (m_SpatializerEditor != null) { showExtensionProperties = m_SpatializerEditor.FindAudioExtensionProperties(serializedObject); if (!showExtensionProperties) { m_AddSpatializerExtension = false; ClearExtensionProperties(); DestroyExtensionEditors(); } } if ((m_SpatializerEditor != null) && showExtensionProperties) { EditorGUI.indentLevel++; m_SpatializerEditor.OnAudioSourceGUI(); EditorGUI.indentLevel--; // Push any AudioSource extension property changes to the AudioSourceExtension properties. We always attempt to do this // because we may be playing in Editor or previewing sound in the scene view. for (int i = 0; i < targets.Length; i++) { AudioSource source = targets[i] as AudioSource; AudioSourceExtension extension = (source != null) ? AudioExtensionManager.GetSpatializerExtension(source) : null; if ((source != null) && (extension != null) && source.isPlaying) { string extensionName = AudioExtensionManager.GetSourceSpatializerExtensionType().Name; for (int j = 0; j < m_SpatializerEditor.GetNumExtensionProperties(); j++) { PropertyName propertyName = m_SpatializerEditor.GetExtensionPropertyName(j); float value = 0.0f; if (source.ReadExtensionProperty(extensionName, propertyName, ref value)) { extension.WriteExtensionProperty(propertyName, value); } } } } } } } } serializedObject.ApplyModifiedProperties(); if (m_LowpassObject != null) { m_LowpassObject.ApplyModifiedProperties(); } }
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(); } }