diff options
| author | Andrew Lee <alee14498@protonmail.com> | 2020-04-19 17:19:32 -0400 |
|---|---|---|
| committer | Andrew Lee <alee14498@protonmail.com> | 2020-04-19 17:19:32 -0400 |
| commit | c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78 (patch) | |
| tree | ee4d51c7c1d633e11f46453ef1edd3c77c4ef9f7 /Library/PackageCache/com.unity.timeline@1.2.13/Editor/Audio/AudioClipPropertiesDrawer.cs | |
| download | Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.gz Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.bz2 Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.zip | |
Inital commit
Diffstat (limited to 'Library/PackageCache/com.unity.timeline@1.2.13/Editor/Audio/AudioClipPropertiesDrawer.cs')
| -rw-r--r-- | Library/PackageCache/com.unity.timeline@1.2.13/Editor/Audio/AudioClipPropertiesDrawer.cs | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Audio/AudioClipPropertiesDrawer.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Audio/AudioClipPropertiesDrawer.cs new file mode 100644 index 0000000..e3ec132 --- /dev/null +++ b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Audio/AudioClipPropertiesDrawer.cs @@ -0,0 +1,81 @@ +using System; +using System.Globalization; +using System.Linq; +using System.Text; +using JetBrains.Annotations; +using UnityEditor; +using UnityEditor.Timeline; + +namespace UnityEngine.Timeline +{ + [CustomPropertyDrawer(typeof(AudioClipProperties))] + class AudioClipPropertiesDrawer : PropertyDrawer + { + [UsedImplicitly] // Also used by tests + internal static class Styles + { + public const string VolumeControl = "AudioClipPropertiesDrawer.volume"; + + const string k_Indent = " "; + public const string valuesFormatter = "0.###"; + public static string mixedPropertiesInfo = L10n.Tr("The final {3} is {0}\n" + + "Calculated from:\n" + + k_Indent + "Clip: {1}\n" + + k_Indent + "Track: {2}"); + + public static string audioSourceContribution = L10n.Tr(k_Indent + "AudioSource: {0}"); + } + + static StringBuilder s_MixInfoBuilder = new StringBuilder(); + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + var volumeProp = property.FindPropertyRelative("volume"); + + GUI.SetNextControlName(Styles.VolumeControl); + EditorGUI.Slider(position, volumeProp, 0.0f, 1.0f, AudioSourceInspector.Styles.volumeLabel); + + if (TimelineEditor.inspectedDirector == null) + // Nothing more to do in asset mode + return; + + var clip = SelectionManager.SelectedClips().FirstOrDefault(c => c.asset == property.serializedObject.targetObject); + + if (clip == null || clip.parentTrack == null) + return; + + var clipVolume = volumeProp.floatValue; + var trackVolume = new SerializedObject(clip.parentTrack).FindProperty("m_TrackProperties.volume").floatValue; + var binding = TimelineEditor.inspectedDirector.GetGenericBinding(clip.parentTrack) as AudioSource; + + if (Math.Abs(clipVolume) < float.Epsilon && + Math.Abs(trackVolume) < float.Epsilon && + (binding == null || Math.Abs(binding.volume) < float.Epsilon)) + return; + + if (Math.Abs(clipVolume - 1) < float.Epsilon && + Math.Abs(trackVolume - 1) < float.Epsilon && + (binding == null || Math.Abs(binding.volume - 1) < float.Epsilon)) + return; + + s_MixInfoBuilder.Length = 0; + + var audioSourceVolume = binding == null ? 1.0f : binding.volume; + + s_MixInfoBuilder.AppendFormat( + Styles.mixedPropertiesInfo, + (clipVolume * trackVolume * audioSourceVolume).ToString(Styles.valuesFormatter, CultureInfo.InvariantCulture), + clipVolume.ToString(Styles.valuesFormatter, CultureInfo.InvariantCulture), + trackVolume.ToString(Styles.valuesFormatter, CultureInfo.InvariantCulture), + AudioSourceInspector.Styles.volumeLabel.text); + + if (binding != null) + s_MixInfoBuilder.Append("\n") + .AppendFormat(Styles.audioSourceContribution, + audioSourceVolume.ToString(Styles.valuesFormatter, CultureInfo.InvariantCulture)); + + EditorGUILayout.Space(); + EditorGUILayout.HelpBox(new GUIContent(s_MixInfoBuilder.ToString())); + } + } +} |
