コード例 #1
0
    public static SHSVColor Lerp(SHSVColor From, SHSVColor To, float T)
    {
        float t      = Mathf.Clamp01(T);
        float HDelta = To.H - From.H;
        float SDelta = To.S - From.S;
        float VDelta = To.V - From.V;

        float NewH = From.H + (HDelta * t);
        float NewS = From.S + (SDelta * t);
        float NewV = From.V + (VDelta * t);

        return(new SHSVColor(NewH, NewS, NewV));
    }
コード例 #2
0
    IEnumerator CompUpdate()
    {
        while (true)
        {
            if (TargetImage != null)
            {
                ElasedTime += UnityEngine.Time.smoothDeltaTime;

                bool bIsEndTime = (ElasedTime >= Time);
                bool bIsOnLoop  = (bIsLoop || bIsLoopWithReverse);

                if (bIsEndTime)
                {
                    if (!bIsOnLoop)
                    {
                        StopCoroutine("CompUpdate");
                    }
                    else
                    {
                        if (bIsLoopWithReverse)
                        {
                            bIsReverse = !bIsReverse;
                        }

                        ElasedTime = 0.0f;
                    }
                }

                float Percentage = (ElasedTime * InvTime);
                if (bIsReverse)
                {
                    Percentage = (1.0f - Percentage);
                }

                TargetImage.color = SHSVColor.HSVColorToRGB(SHSVColor.Lerp(BeginColor, TargetColor, Percentage));
            }

            yield return(null);
        }
    }
コード例 #3
0
    public static Color HSVColorToRGB(SHSVColor HSVColor)
    {
        Color Result = new Color();

        if (HSVColor.S <= 0.0f)
        {
            Result.r = HSVColor.V;
            Result.g = HSVColor.V;
            Result.b = HSVColor.V;
        }
        else
        {
            float InH, p, q, t, ff;
            long  i;
            InH = HSVColor.H;
            if (InH >= 360.0f)
            {
                InH = 0.0f;
            }

            InH /= 60.0f;
            i    = (long)InH;
            ff   = InH - i;

            p = HSVColor.V * (1.0f - HSVColor.S);
            q = HSVColor.V * (1.0f - (HSVColor.S * ff));
            t = HSVColor.V * (1.0f - (HSVColor.S * (1.0f - ff)));

            switch (i)
            {
            case 0:
                Result.r = HSVColor.V;
                Result.g = t;
                Result.b = p;
                break;

            case 1:
                Result.r = q;
                Result.g = HSVColor.V;
                Result.b = p;
                break;

            case 2:
                Result.r = p;
                Result.g = HSVColor.V;
                Result.b = t;
                break;

            case 3:
                Result.r = p;
                Result.g = q;
                Result.b = HSVColor.V;
                break;

            case 4:
                Result.r = t;
                Result.g = p;
                Result.b = HSVColor.V;
                break;

            default:
                Result.r = HSVColor.V;
                Result.g = p;
                Result.b = q;
                break;
            }
        }

        Result.a = 1.0f;

        return(Result);
    }