Example #1
0
        public override void OnInspectorGUI()
        {
            EditorGUI.BeginChangeCheck();
            AudioBlender blender = (AudioBlender)target;

            Undo.RecordObject(blender, "Edit Audio Blender");
            blender.serializeObject.edit = editorWindow != null;
            base.OnInspectorGUI();
            EditorGUILayout.Space();
            if (Application.isPlaying)
            {
                EditorGUILayout.BeginHorizontal();
                if (BlendaEditorGUI.EditorLayoutSelectableButton(new GUIContent(playContent), true, blender.isPlaying))
                {
                    blender.Play();
                }
                if (BlendaEditorGUI.EditorLayoutSelectableButton(new GUIContent(pauseContent), true, blender.isPaused))
                {
                    blender.Pause();
                }
                if (BlendaEditorGUI.EditorLayoutSelectableButton(new GUIContent(stopContent)))
                {
                    blender.Stop();
                }
                EditorGUILayout.EndHorizontal();
            }
            EditorGUILayout.Space();

            for (int i = 0; i < blender.sequenceCount; i++)
            {
                if (SequenceField(blender.GetSequence(i), blender.serializeObject.selection == i))
                {
                    Repaint();
                    renameSequence = null;
                    blender.serializeObject.selection = i;
                }
            }
            GUI.color = Color.white;
            EditorGUILayout.Space();
            if (GUILayout.Button("Add Sequence"))
            {
                blender.AddSequence("Sequence " + (blender.sequenceCount + 1));
            }
            if (EditorGUI.EndChangeCheck() && editorWindow != null)
            {
                editorWindow.Repaint();
            }
        }
Example #2
0
        bool SequenceField(Sequence sequence, bool expand)
        {
            GUI.backgroundColor = BlendaEditorGUI.lightColor;
            bool clicked = false;


            if (renameSequence == sequence && Event.current.type == EventType.KeyDown && Event.current.keyCode == KeyCode.Return)
            {
                renameSequence = null;
                Repaint();
            }

            if (boxStyle == null)
            {
                boxStyle = new GUIStyle(GUI.skin.GetStyle("box"));
                boxStyle.normal.background = BlendaEditorGUI.bgImg;
            }

            EditorGUILayout.BeginVertical(boxStyle);
            if (renameSequence == sequence)
            {
                sequence.name = EditorGUILayout.TextField(sequence.name);
            }
            else
            {
                if (expand)
                {
                    GUILayout.Label(sequence.name, EditorStyles.boldLabel);
                }
                else
                {
                    GUILayout.Label(sequence.name);
                }

                if (Event.current.type == EventType.MouseDown && Event.current.button == 1 && GUILayoutUtility.GetLastRect().Contains(Event.current.mousePosition))
                {
                    GenericMenu menu = new GenericMenu();
                    menu.AddItem(new GUIContent("Rename"), false, OnRename, sequence);
                    menu.AddItem(new GUIContent("Duplicate"), false, OnDuplicate, sequence);
                    menu.AddSeparator("");
                    menu.AddItem(new GUIContent("Delete"), false, OnDelete, sequence);
                    menu.ShowAsContext();
                }
            }

            Rect progressRect = GUILayoutUtility.GetRect(GUILayoutUtility.GetLastRect().width, 4f);

            EditorGUI.DrawRect(progressRect, BlendaEditorGUI.darkColor);
            EditorGUI.DrawRect(new Rect(progressRect.x, progressRect.y, progressRect.width * (sequence.time / sequence.duration), progressRect.height), BlendaEditorGUI.highlightColor);

            if (expand)
            {
                EditorGUILayout.Space();
                EditorGUILayout.Space();
                sequence.time     = EditorGUILayout.Slider("Time", sequence.time, 0f, sequence.duration);
                sequence.duration = EditorGUILayout.FloatField("Duration", sequence.duration);
                EditorGUILayout.Space();

                sequence.playTrigger = (Sequence.PlayTrigger)EditorGUILayout.EnumPopup("Play Trigger", sequence.playTrigger);
                sequence.playDelay   = EditorGUILayout.FloatField("Delay", sequence.playDelay);
                EditorGUILayout.Space();

                sequence.type = (Sequence.WrapMode)EditorGUILayout.EnumPopup("Type", sequence.type);
                if (sequence.type == Sequence.WrapMode.Loop)
                {
                    sequence.loopCount = EditorGUILayout.IntField("Loops " + (sequence.loopCount == 0 ? "(infinite)" : ""), sequence.loopCount);
                    if (sequence.loopCount < 0)
                    {
                        sequence.loopCount = 0;
                    }
                }
                EditorGUILayout.Space();
                sequence.volume = EditorGUILayout.Slider("Volume", sequence.volume, 0f, 1f);
                sequence.pitch  = EditorGUILayout.Slider("Pitch", sequence.pitch, 0.01f, 3f);
                EditorGUILayout.Space();


                sequence.fadeIn = EditorGUILayout.FloatField("Fade-in", sequence.fadeIn);
                if (sequence.fadeIn > 0f)
                {
                    sequence.fadeInCurve = EditorGUILayout.CurveField("Fade-in Curve", sequence.fadeInCurve);
                }

                sequence.fadeOut = EditorGUILayout.FloatField("Fade-out", sequence.fadeOut);
                if (sequence.fadeOut > 0f)
                {
                    sequence.fadeOutCurve = EditorGUILayout.CurveField("Fade-out Curve", sequence.fadeOutCurve);
                }

                EditorGUILayout.Space();
                sequence.panTracks = EditorGUILayout.Toggle("Pan Tracks Volume", sequence.panTracks);
                if (sequence.panTracks)
                {
                    sequence.trackPanPercent = EditorGUILayout.Slider("Percent", sequence.trackPanPercent, 0f, 1f);
                    sequence.panRange        = EditorGUILayout.FloatField("Range", sequence.panRange);
                    sequence.trackPanFalloff = EditorGUILayout.CurveField("Falloff", sequence.trackPanFalloff);
                }

                if (GUILayout.Button("Open Editor"))
                {
                    OpenEditorWindow(sequence);
                }

                if (Application.isPlaying)
                {
                    EditorGUILayout.BeginHorizontal();
                    if (BlendaEditorGUI.EditorLayoutSelectableButton(new GUIContent(playContent), true, sequence.isPlaying))
                    {
                        sequence.Play();
                    }
                    if (BlendaEditorGUI.EditorLayoutSelectableButton(new GUIContent(pauseContent), true, sequence.isPaused))
                    {
                        sequence.Pause();
                    }
                    if (BlendaEditorGUI.EditorLayoutSelectableButton(new GUIContent(stopContent)))
                    {
                        sequence.Stop();
                    }
                    EditorGUILayout.EndHorizontal();
                }
            }

            EditorGUILayout.EndVertical();
            if (!expand)
            {
                if (GUILayoutUtility.GetLastRect().Contains(Event.current.mousePosition))
                {
                    if (Event.current.type == EventType.MouseDown && Event.current.button == 0)
                    {
                        clicked = true;
                    }
                }
            }
            GUI.backgroundColor = Color.white;
            return(clicked);
        }