public AnimationCurve DrawHandle(AnimationCurve curve) { AnimationCurve ret; //Update the mouse world position: Ray r = HandleUtility.GUIPointToWorldRay(e.mousePosition); if (CustomHandleUtility.GetPointOnPlane(matrix, r, out currentMouseWorld)) { currentMouseWorld = matrix.inverse.MultiplyPoint3x4(currentMouseWorld); } if (e.type == EventType.Repaint) { PushGLContext(); DrawBorders(); DrawCurve(curve); DrawLabels(curve); PopGLContext(); } //draw curve handles: ret = DrawCurvePointsHandle(curve); if (e.type == EventType.MouseDown && e.button == 0 && mouseOverCurveEdge) { ret = AddCurveKeyframe(curve); e.Use(); } return(ret); }
bool GetMousePositionInWorld(out Vector3 position) { Ray r = HandleUtility.GUIPointToWorldRay(e.mousePosition); return(CustomHandleUtility.GetPointOnPlane(matrix, r, out position)); }