public static void Draw(InAudioNode node) { UndoHelper.GUIUndo(node, "Name Change", () => EditorGUILayout.TextField("Name", node.Name), s => node.Name = s); NodeTypeDataDrawer.Draw(node); }
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(); }
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(); }
//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(); }
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(); }
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(); }