Exemple #1
0
                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();
                }
Exemple #2
0
    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();
    }