void UpdateCameraPanning() { if ((Event.current.rawType == EventType.MouseUp) && (Event.current.button == 0)) { panCamera = false; } bool insideNodeView = MouseInsideNodeView(true); bool dragging = (Event.current.type == EventType.MouseDrag && panCamera); bool connecting = Mapper_NodeConnector.IsConnecting(); if (connecting) { Vector2 mousePosInNodeViewScreenSpace = ViewSpaceToScreenSpace(Event.current.mousePosition) - Vector2.right * editor.separatorLeft.rect.xMax; float dragPanMargin = 32f; float panSpeed = 0.2f; float leftMag = Mathf.Clamp(-mousePosInNodeViewScreenSpace.x + dragPanMargin, 0f, dragPanMargin); float rightMag = Mathf.Clamp(mousePosInNodeViewScreenSpace.x - rect.width + dragPanMargin, 0f, dragPanMargin); float topMag = Mathf.Clamp(-mousePosInNodeViewScreenSpace.y + dragPanMargin, 0f, dragPanMargin); float bottomMag = Mathf.Clamp(mousePosInNodeViewScreenSpace.y - rect.height + dragPanMargin, 0f, dragPanMargin); cameraPos += new Vector2(rightMag - leftMag, bottomMag - topMag) * panSpeed; } bool doingSomethingElse = connecting; bool dragInside = dragging && insideNodeView; if (dragInside && !doingSomethingElse) { cameraPos -= Event.current.delta; SnapCamera(); Event.current.Use(); } if ((Event.current.rawType == EventType.MouseUp) && (Event.current.button == 0)) { panCamera = true; } }