Exemplo n.º 1
0
    public static Color HSVToRGB(HSVColor hsbColor)
    {
        float r = hsbColor.v;
        float g = hsbColor.v;
        float b = hsbColor.v;

        if (WadeUtils.IsNotZero(hsbColor.s))
        {
            float max = hsbColor.v;
            float dif = hsbColor.v * hsbColor.s;
            float min = hsbColor.v - dif;

            float h = hsbColor.h * 360f;

            if (h < 60f)
            {
                r = max;
                g = h * dif / 60f + min;
                b = min;
            }
            else if (h < 120f)
            {
                r = -(h - 120f) * dif / 60f + min;
                g = max;
                b = min;
            }
            else if (h < 180f)
            {
                r = min;
                g = max;
                b = (h - 120f) * dif / 60f + min;
            }
            else if (h < 240f)
            {
                r = min;
                g = -(h - 240f) * dif / 60f + min;
                b = max;
            }
            else if (h < 300f)
            {
                r = (h - 240f) * dif / 60f + min;
                g = min;
                b = max;
            }
            else if (h <= 360f)
            {
                r = max;
                g = min;
                b = -(h - 360f) * dif / 60f + min;
            }
            else
            {
                r = 0f;
                g = 0f;
                b = 0f;
            }
        }

        return(new Color(Mathf.Clamp01(r), Mathf.Clamp01(g), Mathf.Clamp01(b), hsbColor.a));
    }