internal static void ArrowHandleCap(int controlID, Vector3 position, Quaternion rotation, float size, EventType eventType, Vector3 coneOffset)
{
switch (eventType)
{
case (EventType.Layout):
{
Vector3 direction = rotation * Vector3.forward;
HandleUtility.AddControl(controlID, HandleUtility.DistanceToLine(position, position + (direction + coneOffset) * size * .9f));
HandleUtility.AddControl(controlID, HandleUtility.DistanceToCircle(position + (direction + coneOffset) * size, size * .2f));
break;
}
case (EventType.Repaint):
{
Vector3 direction = rotation * Vector3.forward;
ConeHandleCap(controlID, position + (direction + coneOffset) * size, Quaternion.LookRotation(direction), size * .2f, eventType);
Handles.DrawLine(position, position + (direction + coneOffset) * size * .9f, false);
break;
}
}
}