Esempio n. 1
0
    public override void OnInspectorGUI()
    {
        var tracker = (AudioTransformTracker)target;

        MasterAudio.Instance = null;

        var ma        = MasterAudio.SafeInstance;
        var maInScene = ma != null;

        if (maInScene)
        {
            DTGUIHelper.ShowHeaderTexture(MasterAudioInspectorResources.LogoTexture);
        }
        else
        {
            return;
        }

        if (!Application.isPlaying)
        {
            DTGUIHelper.ShowLargeBarAlert("This script only works at runtime.");
            return;
        }

        var allVars = MasterAudio.GetAllPlayingVariationsOfTransform(tracker.Trans);

        DTGUIHelper.ShowColorWarning("Sounds made by this Transform: " + allVars.Count);

        if (allVars.Count > 0)
        {
            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("Stop All Sounds", EditorStyles.toolbarButton, GUILayout.Width(110)))
            {
                MasterAudio.StopAllSoundsOfTransform(tracker.Trans);
            }
            GUILayout.Space(4);
            if (GUILayout.Button("Pause All Sounds", EditorStyles.toolbarButton, GUILayout.Width(110)))
            {
                MasterAudio.PauseAllSoundsOfTransform(tracker.Trans);
            }
            GUILayout.Space(4);
            if (GUILayout.Button("Unpause All Sounds", EditorStyles.toolbarButton, GUILayout.Width(120)))
            {
                MasterAudio.UnpauseAllSoundsOfTransform(tracker.Trans);
            }
            EditorGUILayout.EndHorizontal();
            EditorGUILayout.Separator();
        }

        GUI.color = Color.white;
        var lastGrpName = string.Empty;
        var groupCount  = 0;

        foreach (var variation in allVars)
        {
            var grpName = variation.ParentGroup.GameObjectName;

            if (grpName != lastGrpName)
            {
                groupCount++;
                if (groupCount > 1)
                {
                    EditorGUILayout.Separator();
                }

                GUI.color = DTGUIHelper.ActiveHeaderColor;
                EditorGUILayout.BeginHorizontal(EditorStyles.toolbar);
                GUILayout.Label(grpName);

                GUILayout.FlexibleSpace();
                if (DTGUIHelper.AddSettingsButton("Group", true) == DTGUIHelper.DTFunctionButtons.Go)
                {
                    Selection.activeObject = variation.ParentGroup.gameObject;
                }
                var groupButtonPressed = DTGUIHelper.Add2WayTrackerButtons();

                switch (groupButtonPressed)
                {
                case DTGUIHelper.DTFunctionButtons.Stop:
                    tracker.Trans.StopSoundGroupOfTransform(grpName);
                    break;

                case DTGUIHelper.DTFunctionButtons.Pause:
                    tracker.Trans.PauseSoundGroupOfTransform(grpName);
                    break;

                case DTGUIHelper.DTFunctionButtons.Play:
                    tracker.Trans.UnpauseSoundGroupOfTransform(grpName);
                    break;
                }

                EditorGUILayout.EndHorizontal();
            }

            GUI.color = Color.white;
            EditorGUILayout.BeginHorizontal(EditorStyles.toolbar);
            GUILayout.Space(10);

            var varName = variation.name;
            GUILayout.Label(varName);

            GUILayout.FlexibleSpace();
            GUI.color = Color.green;

            var label = "Playing ({0}%)";

            if (variation.IsPaused)
            {
                GUI.color = Color.yellow;
                label     = "Paused ({0}%)";
            }

            var percentagePlayed = 0;
            if (variation.VarAudio.clip != null)
            {
                percentagePlayed = (int)(variation.VarAudio.time / variation.VarAudio.clip.length * 100);
            }

            EditorGUILayout.LabelField(string.Format(label, percentagePlayed), EditorStyles.miniButtonMid, GUILayout.Height(16));

            GUI.color = Color.white;

            if (DTGUIHelper.AddSettingsButton("Variation") == DTGUIHelper.DTFunctionButtons.Go)
            {
                Selection.activeObject = variation.gameObject;
            }
            var buttonPressed = DTGUIHelper.Add2WayTrackerButtons();

            switch (buttonPressed)
            {
            case DTGUIHelper.DTFunctionButtons.Stop:
                variation.Stop();
                break;

            case DTGUIHelper.DTFunctionButtons.Pause:
                variation.Pause();
                break;

            case DTGUIHelper.DTFunctionButtons.Play:
                variation.VarAudio.Play();
                break;
            }

            EditorGUILayout.EndHorizontal();

            lastGrpName = grpName;
        }

        if (GUI.changed)
        {
            EditorUtility.SetDirty(target);
        }

        //DrawDefaultInspector();
    }