/// <summary> /// Perform the focusing logic /// </summary> private void PerformFocus() { IEnumerable <Node> selectedNodes = NodeEditor.GetSelectedNodes(); int count = 0; Vector2 averagePosition = Vector2.zero; foreach (Node node in selectedNodes) { averagePosition += node.NodeRect.position; count++; } IEnumerable <Connector> selectedConnectors = NodeEditor.GetSelectedConnectors(); foreach (Connector connector in selectedConnectors) { Node startNode = connector.GetStartNode(); Node endNode = connector.GetEndNode(); averagePosition += ((startNode.NodeRect.position + endNode.NodeRect.position) * 0.5f); count++; } if (count == 0) { foreach (Node node in NodeEditor.Nodes) { averagePosition += node.NodeRect.position; count++; } } if (count == 0) { NodeEditor.SetPanOffset(Vector2.zero); return; } Vector2 offset = NodeEditor.NodeEditorRect.size * 0.5f; NodeEditor.SetPanOffset((-averagePosition / count) + offset); }