Example #1
0
    public override void OnInspectorGUI()
    {
        BezierPathEasingCurve easingCurve = script.easingCurve;
        var easingCurveHandle1            = new Vector2(
            easingCurveRectStartOffset.x + easingCurve.handle1.x * easingSize,
            easingCurveRectStartOffset.y + (easingSize - easingCurve.handle1.y * easingSize)
            );
        var easingCurveHandle2 = new Vector2(
            easingCurveRectStartOffset.x + easingCurve.handle2.x * easingSize,
            easingCurveRectStartOffset.y + (easingSize - easingCurve.handle2.y * easingSize)
            );
        var startHandleRect = new Rect(easingCurveHandle1.x - HANDLE_RECT_SIZE / 2f, easingCurveHandle1.y - HANDLE_RECT_SIZE / 2f,
                                       HANDLE_RECT_SIZE, HANDLE_RECT_SIZE);
        var endHandleRect = new Rect(easingCurveHandle2.x - HANDLE_RECT_SIZE / 2f, easingCurveHandle2.y - HANDLE_RECT_SIZE / 2f,
                                     HANDLE_RECT_SIZE, HANDLE_RECT_SIZE);

        moveHandles(startHandleRect, easingCurve, endHandleRect);
        easingCurveHeading(easingCurve);
        spaceBox();
        drawEasingBackgroundRect();

        if (Event.current.type == EventType.Repaint)
        {
            drawHandle(new Vector3(easingCurveRectStartOffset.x, easingCurveRectStartOffset.y + easingSize, 0f), easingCurveHandle1,
                       startHandleRect, handle1Color);
            drawHandle(new Vector3(easingCurveRectStartOffset.x + easingSize, easingCurveRectStartOffset.y, 0f), easingCurveHandle2,
                       endHandleRect, handle2Color);
            drawLine(easingCurveHandle1, easingCurveHandle2);
        }

        addSerializedFields();
    }
Example #2
0
    private static void easingCurveHeading(BezierPathEasingCurve easingCurve)
    {
        EditorGUILayout.BeginVertical();
        var style = new GUIStyle(GUI.skin.label)
        {
            alignment = TextAnchor.MiddleLeft
        };

        EditorGUILayout.LabelField("");
        style.padding = new RectOffset(0, 0, 0, 5);
        EditorGUILayout.LabelField("Easing curve: " + easingCurve.handle1 + " - " + easingCurve.handle2, style);
        EditorGUILayout.EndVertical();
    }
Example #3
0
    private void moveHandles(Rect startHandle, BezierPathEasingCurve easingCurve, Rect endHandle)
    {
        if (Event.current.isMouse)
        {
            if (startHandle.Contains(Event.current.mousePosition) && !dragStartHandle)
            {
                dragStartHandle         = true;
                dragMouseStartPosHandle = Event.current.mousePosition;
                dragMouseStartPos       = easingCurve.handle1;
            }

            if (endHandle.Contains(Event.current.mousePosition) && !dragEndHandle)
            {
                dragEndHandle         = true;
                dragMouseEndPosHandle = Event.current.mousePosition;
                dragMouseEndPos       = easingCurve.handle2;
            }

            if (dragStartHandle)
            {
                var offset    = Event.current.mousePosition - dragMouseStartPosHandle;
                var inPercent = offset / easingSizeVec;
                easingCurve.handle1 = dragMouseStartPos + new Vector3(inPercent.x, -inPercent.y, 0f);
                easingCurve.recreate();
            }
            else if (dragEndHandle)
            {
                var offset    = Event.current.mousePosition - dragMouseEndPosHandle;
                var inPercent = offset / easingSizeVec;
                easingCurve.handle2 = dragMouseEndPos + new Vector3(inPercent.x, -inPercent.y, 0f);
                easingCurve.recreate();
            }
        }

        if (Event.current.type == EventType.MouseUp)
        {
            dragEndHandle   = false;
            dragStartHandle = false;
        }
    }
Example #4
0
 public ValueAnimator withEasing(BezierPathEasingCurve easingCurve)
 {
     this.easingCurve = easingCurve;
     return(this);
 }