/Engine/Source/Editor/CurveEditor/Public/CurveEditorSnapMetrics.h
Snapping is not stateless but we want to manage it through the central area. This allows state to be passed into from the calling area but still centralize the logic of handling it.
struct FSnapState
bool
bHasPassedThreshold
bool
bHasStartPosition
FVector2D
MouseLockVector
FVector2D
MousePosOnShiftStart