Exemplo n.º 1
0
 public static void Draw(InAudioNode node)
 {
     UndoHelper.GUIUndo(node, "Name Change", () =>
                        EditorGUILayout.TextField("Name", node.Name),
                        s => node.Name = s);
     NodeTypeDataDrawer.Draw(node);
 }
Exemplo n.º 2
0
        public static void Draw(InAudioNode node)
        {
            node.ScrollPosition = GUILayout.BeginScrollView(node.ScrollPosition);

            InUndoHelper.GUIUndo(node, "Name Change", ref node.Name, () =>
                                 EditorGUILayout.TextField("Name", node.Name));

            Rect area = GUILayoutUtility.GetLastRect();

            EditorGUILayout.Separator();
            EditorGUILayout.BeginHorizontal();
            InAudioData audioData = node._nodeData as InAudioData;

            EditorGUILayout.BeginVertical();
            EditorGUILayout.BeginHorizontal();

            var clip = (AudioClip)EditorGUILayout.ObjectField(audioData.AudioClip, typeof(AudioClip), false);

            Rect buttonArea = area;

            if (Application.isPlaying)
            {
                buttonArea.x    += buttonArea.width - 100;
                buttonArea.width = 70;
                GUI.enabled      = false;
                EditorGUI.LabelField(buttonArea, "Is Loaded");
                buttonArea.x    += 70;
                buttonArea.width = 10;
                EditorGUI.Toggle(buttonArea, audioData.IsLoaded);
                GUI.enabled = true;
            }

            AudioSource source = InAudioInstanceFinder.Instance.GetComponent <AudioSource>();

            AudioPreview(node, source, audioData);


            EditorGUILayout.EndHorizontal();

            EditorGUILayout.EndVertical();

            if (clip != audioData.AudioClip) //Assign new clip
            {
                InUndoHelper.RecordObjectFull(audioData, "Changed " + node.Name + " Clip");
                audioData.AudioClip = clip;
                EditorUtility.SetDirty(node._nodeData.gameObject);
            }

            EditorGUILayout.EndHorizontal();

            if (clip != null)
            {
                DrawImportSettings(clip);
            }

            NodeTypeDataDrawer.Draw(node);

            GUILayout.EndScrollView();
        }
 public static void Draw(InAudioNode node)
 {
     node.ScrollPosition = GUILayout.BeginScrollView(node.ScrollPosition);
     InUndoHelper.GUIUndo(node, "Name Change", ref node.Name, () =>
                          EditorGUILayout.TextField("Name", node.Name));
     NodeTypeDataDrawer.Draw(node);
     GUILayout.EndScrollView();
 }
Exemplo n.º 4
0
        public static void Draw(InAudioNode node)
        {
            //node.ScrollPosition = GUILayout.BeginScrollView(node.ScrollPosition);

            EditorGUILayout.BeginVertical();
            var trackData = (node._nodeData as InTrackData);

            NodeTypeDataDrawer.DrawName(node);

            //UndoHelper.GUIUndo(trackData, "Track length", ref trackData.TrackLength, () => EditorGUILayout.FloatField("Track length", trackData.TrackLength));


            selectedArea = GUILayout.SelectionGrid(selectedArea, new [] { "Track", "Standard Settings" }, 2);
            EditorGUILayout.HelpBox("Hold control to drag a child node onto a track.", MessageType.None);

            if (selectedArea == 1)
            {
                NodeTypeDataDrawer.Draw(node);
            }
            else
            {
                EditorGUILayout.BeginVertical();
                ScrollArea = EditorGUILayout.BeginScrollView(ScrollArea, false, false);
                EditorGUILayout.BeginVertical();

                foreach (var layer in trackData.Layers)
                {
                    DrawItem(node, layer);
                }

                if (GUILayout.Button("Add Layer", GUILayout.Width(150)))
                {
                    InUndoHelper.RecordObjectFull(trackData, "Add layer");
                    trackData.Layers.Add(new InLayerData());
                }


                EditorGUILayout.EndVertical();
                EditorGUILayout.EndScrollView();
                EditorGUILayout.EndVertical();
            }
            EditorGUILayout.EndVertical();
            if (toRemove != null)
            {
                if (trackData.Layers.Remove(toRemove))
                {
                    GUI.FocusControl("none");
                    InUndoHelper.RegisterUndo(trackData, "Removed Layer");
                }
            }
            //GUILayout.EndScrollView();
        }
Exemplo n.º 5
0
        //private static InAudioNode activeNode;

        public static void Draw(InAudioNode node)
        {
            EditorGUILayout.BeginVertical();
            var trackData = (node.NodeData as InTrackData);

            NodeTypeDataDrawer.DrawName(node);

            UndoHelper.GUIUndo(trackData, "Track length", ref trackData.TrackLength, () => EditorGUILayout.FloatField("Track length", trackData.TrackLength));
            UndoHelper.GUIUndo(trackData, "Zoom", ref trackData.Zoom, () => EditorGUILayout.FloatField("Zoom", trackData.Zoom));

            selectedArea = GUILayout.SelectionGrid(selectedArea, new [] { "Track", "Normal" }, 2);

            if (selectedArea == 1)
            {
                NodeTypeDataDrawer.Draw(node);
            }
            else
            {
                EditorGUILayout.BeginVertical();
                ScrollArea = EditorGUILayout.BeginScrollView(ScrollArea, false, true);

                foreach (var layer in trackData.Layers)
                {
                    DrawItem(node, layer);
                }

                if (GUILayout.Button("Add Layer", GUILayout.Width(150)))
                {
                    UndoHelper.RecordObjectFull(trackData, "Add layer");
                    trackData.Layers.Add(new InLayerData());
                }

                if (GUILayout.Button("Delete Last Layer", GUILayout.Width(150)))
                {
                    UndoHelper.RecordObjectFull(trackData, "Remove layer");
                    {
                        if (trackData.Layers.Count > 0)
                        {
                            trackData.Layers.RemoveAt(trackData.Layers.Count - 1);
                        }
                    }
                }
                EditorGUILayout.EndScrollView();
                EditorGUILayout.EndVertical();
            }
            EditorGUILayout.EndVertical();
        }
Exemplo n.º 6
0
        public static void Draw(InAudioNode node)
        {
            //UndoHandler.CheckUndo(new UnityEngine.Object[] { node, node.AudioData }, "Random Data Node Change");
            UndoHelper.GUIUndo(node, "Name Change", ref node.Name, () =>
                               EditorGUILayout.TextField("Name", node.Name));
            NodeTypeDataDrawer.Draw(node);
            EditorGUILayout.Separator();

            InAudioNodeData baseData = (InAudioNodeData)node.NodeData;

            if (baseData.SelectedArea == 0)
            {
                EditorGUILayout.BeginVertical();

                EditorGUILayout.LabelField("Weights");

                var weights = (node.NodeData as RandomData).weights;
                if (node.Children.Count == weights.Count)
                {
                    for (int i = 0; i < node.Children.Count; ++i)
                    {
                        var child = node.Children[i];


                        int index = i;
                        UndoHelper.GUIUndo(node.NodeData, "Weights",
                                           () => EditorGUILayout.IntSlider(child.Name, weights[index], 0, 100), i1 =>
                                           weights[index] = i1);
                    }
                }
                else
                {
                    EditorGUILayout.HelpBox("The number of weights does not match the children count", MessageType.Error);
                    if (GUILayout.Button("Fix weights"))
                    {
                        weights.Clear();
                        for (int i = 0; i < node.Children.Count; i++)
                        {
                            weights.Add(50);
                        }
                    }
                }

                EditorGUILayout.EndVertical();
            }
            //UndoHandler.CheckGUIChange();
        }
Exemplo n.º 7
0
        public static void Draw(InAudioNode node)
        {
            UndoHelper.GUIUndo(node, "Name Change", ref node.Name, () =>
                               EditorGUILayout.TextField("Name", node.Name));

            Rect area = GUILayoutUtility.GetLastRect();

            EditorGUILayout.Separator();
            EditorGUILayout.BeginHorizontal();
            InAudioData audioData = node.NodeData as InAudioData;

            EditorGUILayout.BeginVertical();
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("");
            area = GUILayoutUtility.GetLastRect();
            Rect objectArea = area;

            if (Application.isPlaying)
            {
                objectArea.width -= 100;
            }
            var  clip       = (AudioClip)EditorGUI.ObjectField(objectArea, audioData.EditorClip, typeof(AudioClip), false);
            Rect buttonArea = area;

            if (Application.isPlaying)
            {
                buttonArea.x    += buttonArea.width - 100;
                buttonArea.width = 70;
                GUI.enabled      = false;
                EditorGUI.LabelField(buttonArea, "Is Loaded");
                buttonArea.x    += 70;
                buttonArea.width = 10;
                EditorGUI.Toggle(buttonArea, audioData.RuntimeClip != null);
                GUI.enabled = true;
            }



            if (GUILayout.Button("Preview", GUILayout.Width(60)))
            {
                AudioSource source = InAudioInstanceFinder.Instance.GetComponent <AudioSource>();
                var         root   = TreeWalker.FindParentBeforeFolder(node);
                source.volume = RuntimeHelper.ApplyVolume(root, node);
                source.pitch  = RuntimeHelper.ApplyPitch(root, node);
                source.clip   = audioData.EditorClip;
                source.Play();
            }

            if (GUILayout.Button("Raw", GUILayout.Width(45)))
            {
                AudioSource source = InAudioInstanceFinder.Instance.GetComponent <AudioSource>();
                source.clip   = audioData.EditorClip;
                source.volume = 1.0f;
                source.pitch  = 1.0f;
                source.Play();
            }

            if (GUILayout.Button("Stop", GUILayout.Width(45)))
            {
                AudioSource source = InAudioInstanceFinder.Instance.GetComponent <AudioSource>();
                source.Stop();
                source.clip = null;
            }


            EditorGUILayout.EndHorizontal();

            EditorGUILayout.EndVertical();

            if (audioData.RuntimeClip != null && Application.isPlaying)
            {
                audioData.RuntimeClip = clip;
            }

            if (clip != audioData.EditorClip) //Assign new clip
            {
                UndoHelper.RecordObjectFull(new Object[] { audioData, node.GetBank().LazyBankFetch }, "Changed " + node.Name + " Clip");
                audioData.EditorClip  = clip;
                audioData.RuntimeClip = clip;
                AudioBankWorker.SwapClipInBank(node, clip);

                EditorUtility.SetDirty(node.GetBank().LazyBankFetch.gameObject);
                EditorUtility.SetDirty(node.NodeData.gameObject);
            }

            EditorGUILayout.EndHorizontal();

            NodeTypeDataDrawer.Draw(node);
        }
        public static void Draw(InAudioNode node)
        {
            node.ScrollPosition = GUILayout.BeginScrollView(node.ScrollPosition);

            //UndoHandler.CheckUndo(new UnityEngine.Object[] { node, node.AudioData }, "Random Data Node Change");
            InUndoHelper.GUIUndo(node, "Name Change", ref node.Name, () =>
                                 EditorGUILayout.TextField("Name", node.Name));
            NodeTypeDataDrawer.Draw(node);

            EditorGUILayout.Separator();
            InAudioNodeData baseData = (InAudioNodeData)node._nodeData;


            if (baseData.SelectedArea == 0)
            {
                EditorGUILayout.BeginVertical();

                var randomData = (node._nodeData as RandomData);
                var weights    = randomData.weights;

                InUndoHelper.GUIUndo(node._nodeData, "Do Not Repeat Last #", ref randomData.doNotRepeat, () => Mathf.Max(0, EditorGUILayout.IntField("Do Not Repeat Last #", randomData.doNotRepeat)));
                if (randomData.doNotRepeat >= weights.Count && weights.Count > 0)
                {
                    EditorGUILayout.HelpBox("The number of random elements that should be repeated exceeds the number of nodes.\nThe number will be clambed to " + (randomData.weights.Count - 1) + ".", MessageType.Info);
                }

                EditorGUILayout.Separator();
                EditorGUILayout.LabelField("Weights");
                if (node._children.Count == weights.Count)
                {
                    for (int i = 0; i < node._children.Count; ++i)
                    {
                        var child = node._children[i];

                        int index = i;
                        InUndoHelper.GUIUndo(node._nodeData, "Weights",
                                             () => EditorGUILayout.IntSlider(child.Name, weights[index], 0, 100), i1 =>
                                             weights[index] = i1);
                    }
                    if (node._children.Count == 0)
                    {
                        EditorGUILayout.HelpBox("Node has no children to weight.", MessageType.None);
                    }
                }
                else
                {
                    EditorGUILayout.HelpBox("The number of weights does not match the children count.\n" + node._children.Count + " children was found and " + randomData.weights.Count + " weights.", MessageType.Error);
                    if (GUILayout.Button("Fix weights"))
                    {
                        weights.Clear();
                        for (int i = 0; i < node._children.Count; i++)
                        {
                            weights.Add(50);
                        }
                    }
                }

                EditorGUILayout.EndVertical();
            }
            //UndoHandler.CheckGUIChange();

            EditorGUILayout.EndScrollView();
        }