public static void UnloadBank(AudioBankLink bank) { if (bank != null) { BankLoader.Unload(bank); } }
public static void SetNewBank(AudioNode node, AudioBankLink newBankLink) { MoveBetweenBanks(node, GetParentBank(node), newBankLink); node.BankLink = newBankLink; SetNewBankLink(node, newBankLink); }
public static AudioBankLink CreateBank(GameObject go, AudioBankLink parent, int guid) { AudioBankLink link = CreateBankLink(go, parent, guid); SaveAndLoad.CreateAudioBank(guid); return(link); }
public static void Draw(AudioBankLink node) { UndoHandler.CheckUndo(node); //UndoCheck.Instance.CheckUndo(node, "Audio Bank:" + node.Name); EditorGUILayout.BeginVertical(); node.Name = EditorGUILayout.TextField("Name", node.Name); if (node.Type != AudioBankTypes.Folder) { EditorGUILayout.IntField("ID", node.GUID); EditorGUILayout.Separator(); node.AutoLoad = EditorGUILayout.Toggle("Auto load", node.AutoLoad); } Rect lastArea = GUILayoutUtility.GetLastRect(); lastArea.y += 28; lastArea.width = 200; if (GUI.Button(lastArea, "Find Folders using this bank")) { EditorWindow.GetWindow <AudioWindow>().Find(audioNode => AudioBankWorker.GetParentBank(audioNode) != node); } EditorGUILayout.EndVertical(); //UndoCheck.Instance.CheckDirty(node); UndoHandler.CheckGUIChange(); }
private static AudioBankLink CreateBankLink(GameObject go, AudioBankLink parent, int guid) { var node = CreateNode(go, parent, guid); node.Name = "BankLink"; node.Type = AudioBankTypes.Link; return(node); }
public static AudioBankLink CreateFolder(GameObject go, AudioBankLink parent, int guid) { var node = CreateNode(go, parent, guid); node.Name = "folder"; node.Type = AudioBankTypes.Folder; return(node); }
private static AudioBankLink CreateNode(GameObject go, AudioBankLink parent, int guid) { var node = go.AddComponent <AudioBankLink>(); node.GUID = guid; node.Parent = parent; node.IsFoldedOut = true; node.Name = "Name"; NodeWorker.AssignParent(node, parent); return(node); }
public AudioBank GetLoadedBank(AudioBankLink link) { for (int i = 0; i < LoadedBanks.Count; ++i) { if (LoadedBanks[i].GUID == link.GUID) { return LoadedBanks[i]; } } return null; }
public static void Unload(AudioBankLink bankLink) { AudioBank bank = InstanceFinder.DataManager.GetLoadedBank(bankLink); if (bank != null) { for (int i = 0; i < bank.Clips.Count; i++) { (bank.Clips[i].Node.NodeData as AudioData).Clip = null; } Resources.UnloadUnusedAssets(); } }
protected override void OnDrop(AudioNode node, UnityEngine.Object[] objects) { if (objects[0] as AudioNode != null) //Drag N Drop internally in the tree, change the parent { node.IsFoldedOut = true; var nodeToMove = objects[0] as AudioNode; var oldBank = AudioBankWorker.GetParentBank(nodeToMove); AudioBankLink newBank = null; if (nodeToMove.OverrideParentBank) { newBank = AudioBankWorker.GetParentBank(nodeToMove); } else { newBank = AudioBankWorker.GetParentBank(node); } Undo.RegisterUndo(new UnityEngine.Object[] { node, nodeToMove, nodeToMove.Parent, oldBank, newBank }, "Audio Node Move"); NodeWorker.ReasignNodeParent(nodeToMove, node); AudioBankWorker.MoveNode(nodeToMove, oldBank); } else if (node.Type != AudioNodeType.Audio) //Create new audio nodes when we drop clips { for (int i = 0; i < objects.Length; ++i) { var clip = objects[i] as AudioClip; var child = AudioNodeWorker.CreateChild(node, AudioNodeType.Audio); var path = AssetDatabase.GetAssetPath(clip); try { //Try and get the name of the clip. Gets the name and removes the end. Assets/IntroSound.mp3 -> IntroSound int lastIndex = path.LastIndexOf('/') + 1; child.Name = path.Substring(lastIndex, path.LastIndexOf('.') - lastIndex); } catch (Exception) //If it happens to be a mutant path. Not even sure if this is possible, but better safe than sorry { child.Name = node.Name + " Child"; } (child.NodeData as AudioData).EditorClip = clip; AudioBankWorker.AddNodeToBank(child, clip); Event.current.Use(); } } else //Then it must be an audio clip dropped on an audio node, so assign the clip to that node { var bank = AudioBankWorker.GetParentBank(node); Undo.RegisterUndo(new UnityEngine.Object[] { node, bank.LazyBankFetch, node.NodeData }, "Undo Changing Node In Bank"); (node.NodeData as AudioData).EditorClip = objects[0] as AudioClip; AudioBankWorker.SwapClipInBank(node, objects[0] as AudioClip); } }
public void Load(bool forceReload = false) { if (AudioRoot == null || BankLinkRoot == null || BusRoot == null || EventRoot == null || forceReload) { Component[] audioData; Component[] eventData; Component[] busData; Component[] bankLinkData; HDRAudio.SaveAndLoad.LoadManagerData(out audioData, out eventData, out busData, out bankLinkData); BusRoot = CheckData<AudioBus>(busData); AudioRoot = CheckData<AudioNode>(audioData); EventRoot = CheckData<AudioEvent>(eventData); BankLinkTree = CheckData<AudioBankLink>(bankLinkData); } }
private static void LoadAuto(AudioBankLink bankLink) { if (bankLink == null) { return; } if (bankLink.AutoLoad) { Load(bankLink); } for (int i = 0; i < bankLink.Children.Count; ++i) { LoadAuto(bankLink.Children[i]); } }
private static void MoveBetweenBanks(AudioNode node, AudioBankLink oldBank, AudioBankLink newBankLink) { var currentBank = oldBank.LazyBankFetch.Clips; var newBank = newBankLink.LazyBankFetch.Clips; var nodeSet = new HashSet <AudioNode>(); BuildMoveSet(nodeSet, node); for (int i = 0; i < currentBank.Count; ++i) { if (nodeSet.Contains(currentBank[i].Node)) { newBank.Add(currentBank[i]); currentBank.SwapRemoveAt(i); } } }
public static AudioBank Load(AudioBankLink bankLink) { if (bankLink == null) { return(null); } var bank = SaveAndLoad.LoadAudioBank(bankLink.ID); if (Application.isPlaying && InstanceFinder.DataManager != null) { InstanceFinder.DataManager.BankIsLoaded(bank); for (int i = 0; i < bank.Clips.Count; i++) { (bank.Clips[i].Node.NodeData as AudioData).Clip = bank.Clips[i].Clip; } } return(bank); }
private static void SetNewBankLink(AudioNode node, AudioBankLink newBankLink) { for (int i = 0; i < node.Children.Count; ++i) { var child = node.Children[i]; if (child.Type == AudioNodeType.Folder && child.OverrideParentBank) { continue; } else { if (child.Type != AudioNodeType.Folder) { child.BankLink = newBankLink; } SetNewBankLink(child, newBankLink); } } }
public static void ChangeBankOverriding(AudioNode node) { AudioBankLink newBank; AudioBankLink currentBank = GetParentBank(node); if (node.OverrideParentBank) { newBank = GetParentBank(node.Parent); } else { newBank = node.BankLink; } node.OverrideParentBank = !node.OverrideParentBank; MoveBetweenBanks(node, currentBank, newBank); SetNewBankLink(node, newBank); }
public void FindBank(AudioBankLink bankLink) { selectedToolbar = 1; bankGUI.Find(bankLink); }
public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) { var labelPos = pos; Color backgroundColor = GUI.color; GUI.skin.label.alignment = TextAnchor.UpperLeft; var labelStyle = GUI.skin.GetStyle("label"); //int fontSize = labelStyle.fontSize; var eventTypeStyle = new GUIStyle(GUI.skin.GetStyle("label")); //eventTypeStyle.fontSize = fontSize + 1; //labelStyle.fontSize = fontSize; //eventTypeStyle.fontSize = 12; labelPos.height = 14; eventTypeStyle.fontStyle = FontStyle.Bold; GUI.Label(labelPos, BankAttribute.EventType, eventTypeStyle); GUI.skin.label.alignment = TextAnchor.MiddleLeft; for (int i = 0; i < prop.arraySize; ++i) { labelPos.y += LineHeight; labelPos.height = 20; AudioBankLink bankLink = prop.GetArrayElementAtIndex(i).objectReferenceValue as AudioBankLink; if (bankLink != null) { GUI.Label(labelPos, bankLink.GetName, labelStyle); } else { GUI.Label(labelPos, "Missing event", labelStyle); } Rect buttonPos = labelPos; buttonPos.x = pos.width - 100; //Align to right side buttonPos.width = 50; if (bankLink == null) { GUI.enabled = false; } if (GUI.Button(buttonPos, "Find")) { EditorWindow.GetWindow <AuxWindow>().FindBank(bankLink); } GUI.enabled = true; buttonPos.x = pos.width - 44; buttonPos.width = 35; if (GUI.Button(buttonPos, "X")) { DeleteAtIndex(prop, i); } } labelPos.y += DragHeight + 4; labelPos.height = DragHeight; GUI.skin.label.alignment = TextAnchor.MiddleCenter; GUI.color = backgroundColor; GUI.Button(labelPos, "Drag event here to add to " + BankAttribute.EventType.ToLower() + " event"); if (labelPos.Contains(Event.current.mousePosition)) { HandleDrag(prop); } GUI.color = backgroundColor; }
private static bool DrawContent(AudioEvent audioevent, Rect area) { Rect selectedBackground = drawArea; selectedBackground.y += 2; DrawBackground(selectedBackground); GUI.skin.label.alignment = TextAnchor.MiddleCenter; bool repaint = false; EditorGUILayout.BeginVertical(); for (int i = 0; i < audioevent.ActionList.Count; ++i) { var currentAction = audioevent.ActionList[i]; Rect lastArea = EditorGUILayout.BeginHorizontal(GUILayout.Height(20)); if (i == 0) { Rect actionArea = lastArea; actionArea.width = 100; actionArea.height = 20; actionArea.y -= 20; EditorGUI.LabelField(actionArea, "Action", EditorStyles.boldLabel); } if (currentAction != null) { if (GUILayout.Button( Enum.GetName(typeof(EventActionTypes), (int)currentAction.EventActionType) .AddSpacesToSentence(), GUILayout.Width(110))) { ShowChangeContext(audioevent, currentAction); Event.current.Use(); } } else { EditorGUILayout.LabelField("Missing"); GUI.enabled = false; } EditorGUILayout.BeginVertical(GUILayout.Height(20)); GUILayout.Label("", GUILayout.Height(0)); //Aligns it to the center by creating a small vertical offset, by setting the height to zero if (currentAction != null && currentAction.EventActionType != EventActionTypes.StopAll) { EditorGUILayout.LabelField(currentAction.ObjectName); } EditorGUILayout.EndHorizontal(); Rect dragArea = GUILayoutUtility.GetLastRect(); if (i == 0) { Rect actionArea = dragArea; actionArea.width = 100; actionArea.height = 20; actionArea.y -= 20; EditorGUI.LabelField(actionArea, "Data", EditorStyles.boldLabel); } if (currentAction is EventAudioAction) { AudioNode dragged = OnDragging.DraggingObject <AudioNode>(dragArea, node => node.IsPlayable); if (dragged != null) { (currentAction as EventAudioAction).Node = dragged; } } else if (currentAction is EventBankAction) { AudioBankLink dragged = OnDragging.DraggingObject <AudioBankLink>(dragArea, bank => bank.Type == AudioBankTypes.Link); if (dragged != null) { (currentAction as EventBankAction).BankLink = dragged; } } else if (currentAction is EventBusAction) { AudioBus dragged = OnDragging.DraggingObject <AudioBus>(dragArea, bus => true); if (dragged != null) { (currentAction as EventBusAction).Bus = dragged; } } EditorGUILayout.Separator(); EditorGUILayout.Separator(); Rect rightArea = EditorGUILayout.BeginHorizontal(GUILayout.Width(area.width - 100)); rightArea.x -= 150; rightArea.y += 3; rightArea.width = 80; //rightARea.height -= 6; if (GUI.Button(rightArea, "Find")) { SearchHelper.SearchFor(currentAction); } rightArea.x += 90; rightArea.width = 30; if (GUI.Button(rightArea, "X")) { if (audioevent.ActionList[i] != null) { AudioEventWorker.DeleteActionAtIndex(audioevent, i); } else { audioevent.ActionList.SwapRemoveAt(i); --i; } } if (Event.current.ClickedWithin(lastArea)) { drawArea = lastArea; audioEventAction = currentAction; Event.current.Use(); } //if (audioEventAction == null || ( Event.current.type == EventType.MouseDown && lastArea.Contains(Event.current.mousePosition))) //{ // drawArea = lastArea; // audioEventAction = currentAction; //} GUILayout.Label(""); //EditorGUILayout.EndHorizontal(); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndHorizontal(); GUI.enabled = true; } EditorGUILayout.EndVertical(); return(repaint); }
public static void MoveNode(AudioNode movedNode, AudioBankLink oldParent) { MoveBetweenBanks(movedNode, oldParent, GetParentBank(movedNode)); }