protected override bool CanDropObjects(AudioBus node, Object[] objects) { if (objects != null && objects.Length > 0 && objects[0] as AudioBus != null) { return(!NodeWorker.IsChildOf(objects[0] as AudioBus, node)); } return(false); }
public static bool CanDropObjects(AudioEvent audioEvent, Object[] objects) { if (objects.Length == 0 || audioEvent == null) { return(false); } if (audioEvent.Type == EventNodeType.Event) { var audioNodes = GetConvertedList <AudioNode>(objects.ToList()); bool audioNodeDrop = audioNodes.TrueForAll(node => node != null && node.IsPlayable); var audioBankLinks = GetConvertedList <AudioBankLink>(objects.ToList()); bool bankLinkDrop = audioBankLinks.TrueForAll(node => node != null && node.Type == AudioBankTypes.Link); var busNodes = GetConvertedList <AudioBus>(objects.ToList()); bool audioBusDrop = busNodes.TrueForAll(node => node != null); return(audioNodeDrop | bankLinkDrop | audioBusDrop); } else if (audioEvent.Type == EventNodeType.Folder || audioEvent.Type == EventNodeType.Root) { var draggingEvent = objects[0] as AudioEvent; if (draggingEvent == null) { return(false); } if (draggingEvent.Type == EventNodeType.Event) { return(true); } if ((draggingEvent.Type == EventNodeType.Folder && !NodeWorker.IsChildOf(draggingEvent, audioEvent)) || draggingEvent.Type == EventNodeType.EventGroup) { return(true); } } else if (audioEvent.Type == EventNodeType.EventGroup) { var draggingEvent = objects[0] as AudioEvent; if (draggingEvent == null) { return(false); } if (draggingEvent.Type == EventNodeType.Event) { return(true); } } return(false); }
protected override bool CanDropObjects(AudioBankLink node, Object[] objects) { if (node == null || objects == null) { return(false); } if (objects.Length > 0 && objects[0] as AudioBankLink != null && node.Type != AudioBankTypes.Link) { return(!NodeWorker.IsChildOf(objects[0] as AudioBankLink, node)); } return(false); }
protected override bool CanDropObjects(AudioNode node, UnityEngine.Object[] objects) { if (node == null || objects == null) { return(false); } if (node.Type == AudioNodeType.Voice) { return(false); } int clipCount = DragAndDrop.objectReferences.Count(p => p is AudioClip); int nodeCount = DragAndDrop.objectReferences.Count(p => p is AudioNode); if (DragAndDrop.objectReferences.Length == 0) { return(false); } if (clipCount == objects.Length) //Handle clip count { if (node.Type == AudioNodeType.Audio && clipCount != 1) { return(false); } return(true); } else if (nodeCount == objects.Length) //Handle audio node drag n drop { if (node.Type == AudioNodeType.Audio) //Can't drop on an audionode as it can't have children { return(false); } if (node == objects[0] as AudioNode) { return(false); } return(!NodeWorker.IsChildOf(objects[0] as AudioNode, node)); } return(false); }