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(); }
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(); }
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; } }
public ValueAnimator withEasing(BezierPathEasingCurve easingCurve) { this.easingCurve = easingCurve; return(this); }