// Draw a camera-facing dot. Pass this into handle functions.
public static void DotHandleCap(int controlID, Vector3 position, Quaternion rotation, float size, EventType eventType)
{
switch (eventType)
{
case (EventType.Layout):
HandleUtility.AddControl(controlID, HandleUtility.DistanceToRectangle(position, rotation, size));
break;
case (EventType.Repaint):
// Only apply matrix to the position because DotCap is camera facing
position = matrix.MultiplyPoint(position);
Vector3 sideways = Camera.current.transform.right * size;
Vector3 up = Camera.current.transform.up * size;
Color col = color * new Color(1, 1, 1, 0.99f);
HandleUtility.ApplyWireMaterial();
GL.Begin(GL.QUADS);
GL.Color(col);
GL.Vertex(position + sideways + up);
GL.Vertex(position + sideways - up);
GL.Vertex(position - sideways - up);
GL.Vertex(position - sideways + up);
GL.End();
break;
}
}