private void FindActiveControls(Ferr2DPath aPath, Matrix4x4 aTransform, Matrix4x4 aInvTransform) { if (Event.current.type == EventType.MouseMove) { Ray r = HandleUtility.GUIPointToWorldRay(Event.current.mousePosition); Plane p = new Plane(aTransform.MultiplyVector(Vector3.forward), aTransform.MultiplyPoint(Vector3.zero)); float dist = 0; if (p.Raycast(r, out dist)) { Vector2 mousePoint = aInvTransform.MultiplyPoint(r.GetPoint(dist)); int newSegment = aPath.GetClosestSegment(mousePoint); if (newSegment != activeSegment) { activeSegment = newSegment; SceneView.RepaintAll(); } int newPoint = aPath.GetClosestControlPoint(mousePoint); if (newPoint != activePoint) { activePoint = newPoint; SceneView.RepaintAll(); } } } }