public override void Initialize(LayoutElementsContainer layout) { var window = ((PropertiesProxy)Values[0])._window; if (window == null) { layout.Label("Loading...", TextAlignment.Center); return; } // Audio properties { var audio = window.Asset; AudioDataInfo info = audio.Info; Editor.Internal_GetAudioClipMetadata(FlaxEngine.Object.GetUnmanagedPtr(audio), out int originalSize, out int importedSize); var group = layout.Group("General"); group.Label("Format: " + audio.Format); group.Label("Length: " + (Mathf.CeilToInt(audio.Length * 100.0f) / 100.0f) + "s"); group.Label(string.Format("{0}kHz, channels: {1}, bit depth: {2}", info.SampleRate / 1000, info.NumChannels, info.BitDepth)); group.Label("Original size: " + Utilities.Utils.FormatBytesCount((ulong)originalSize)); group.Label("Imported size: " + Utilities.Utils.FormatBytesCount((ulong)importedSize)); group.Label("Compression ratio: " + Mathf.CeilToInt((float)importedSize / originalSize * 100.0f) + "%"); } base.Initialize(layout); layout.Space(10); var reimportButton = layout.Button("Reimport"); reimportButton.Button.Clicked += () => ((PropertiesProxy)Values[0]).Reimport(); }
void OnGUI() { GUILayout.Label("DataBase File", EditorStyles.boldLabel); audioDataBase = (AudioDataBase)EditorGUILayout.ObjectField("DataBase", audioDataBase, typeof(AudioDataBase)); if (audioDataBase == null) { if (GUILayout.Button("Create DataBase File")) { audioDataBase = AudioDataBase.CreateAssest(); } return; } GUILayout.Label("Create Data", EditorStyles.boldLabel); createKeyName = EditorGUILayout.TextField("Key Name", createKeyName); createVolumeRate = EditorGUILayout.FloatField("Volume Rate", createVolumeRate); createClip = (AudioClip)EditorGUILayout.ObjectField("Clip", createClip, typeof(AudioClip)); createAudioType = (AudioType)EditorGUILayout.EnumPopup("Audio Type", createAudioType); createIsLoop = EditorGUILayout.Toggle("Is Loop", createIsLoop); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Reset Data")) { ResetCreateInfo(); } if (GUILayout.Button("Create Data")) { if (createKeyName.Length == 0) { EditorUtility.DisplayDialog("Create Data", "KeyName is Empty", "ok"); return; } if (createClip == null) { EditorUtility.DisplayDialog("Create Data", "Clip is Empty", "ok"); return; } if (audioDataBase.AddData(createKeyName, new AudioClipInfo(createClip, createVolumeRate, createAudioType, createIsLoop))) { EditorUtility.DisplayDialog("Create Data", "Success", "ok"); EditorUtility.SetDirty(audioDataBase); AssetDatabase.SaveAssets(); ResetCreateInfo(); } else { EditorUtility.DisplayDialog("Create Data", "Fail", "ok"); } } EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); EditorGUILayout.Separator(); GUILayout.Label("DataBase List", EditorStyles.boldLabel); GUI.color = Color.green; searchString = EditorGUILayout.TextField("Search Key", searchString); GUI.color = Color.white; EditorGUILayout.Space(); scrollPosition = GUILayout.BeginScrollView(scrollPosition, true, true); for (int i = 0; i < audioDataBase.AudioDataInfoList.Count; i++) { AudioDataInfo audioDataInfo = audioDataBase.AudioDataInfoList[i]; if (searchString.Length == 0 || audioDataInfo.Key.IndexOf(searchString) >= 0) { EditorGUI.BeginDisabledGroup(true); AudioClipInfo audioClipInfo = audioDataInfo.AudioClipInfo; GUI.color = Color.magenta; EditorGUILayout.TextField("Key Name", audioDataInfo.Key); GUI.color = Color.white; EditorGUILayout.FloatField("Volume Rate", audioClipInfo.VolumeRate); EditorGUILayout.ObjectField("Clip", audioClipInfo.Clip, typeof(AudioClip)); EditorGUILayout.EnumPopup("Audio Type", audioClipInfo.Type); EditorGUILayout.Toggle("Is Loop", audioClipInfo.IsLoop); EditorGUI.EndDisabledGroup(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Play")) { //_audioDataBase.RemoveData(audioDataInfo.Key); if (!IsClipPlaying(audioClipInfo.Clip)) { PlayClip(audioClipInfo.Clip); } } if (GUILayout.Button("Stop")) { //_audioDataBase.RemoveData(audioDataInfo.Key); StopClip(audioClipInfo.Clip); } GUI.color = Color.red; if (GUILayout.Button("Delete")) { audioDataBase.RemoveData(audioDataInfo.Key); } GUI.color = Color.white; EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); EditorGUILayout.Space(); } } GUILayout.EndScrollView(); }