コード例 #1
0
    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;
        }
    }