//Selects or deselects node void manageSelectedNode(TimelineNode nodeToAdd, Event currentEvent) { if (!selectedNodesList.isEmpty()) { selectedNodesList.find(selectedNode => selectedNode == nodeToAdd).voidFold( () => { if (currentEvent.control) { selectedNodesList.Add(nodeToAdd); } else if (selectedNodesList.Count >= 1) { selectedNodesList.Clear(); selectedNodesList.Add(nodeToAdd); } }, selectedNode => { if (currentEvent.control) { selectedNodesList.Remove(nodeToAdd); } } ); } else if (selectedNodesList.Count <= 1) { selectedNodesList.Clear(); selectedNodesList.Add(nodeToAdd); } }
public void linkTo(TimelineNode linkTo) { _linkedNode = linkTo.some(); if (element.startAt != Element.At.AfterLastElement) { convert(Element.At.AfterLastElement); } }
void moveDownIfOverlaping(TimelineNode timelineNode) { foreach (var overlapingNode in getOverlapingNodes(timelineNode)) { selectedNodesList.find(foundNode => foundNode == overlapingNode).voidFold( () => moveAndRecurse(timelineNode), moveAndRecurse ); } void moveAndRecurse(TimelineNode node) { node.increaseChannel(); moveDownIfOverlaping(node); } }
void updateLinkedNodeStartTimes(TimelineNode node) => getLinkedRightNode(node, node).voidFold( () => { }, rightNode => { if (rightNode.linkedNode.valueOut(out var nodeLinkedTo) && nodeLinkedTo == node) {