示例#1
0
    public void applyColors(Color32[] colors, bool sendEvents = true, bool radialAnimate = false, IntVector2 center = null)
    {
        for (int i = 0; i < colors.Length; i++)
        {
            if (colors[i].a != 0)
            {
                _r = _actualColors[i].r;
                _actualColors[i].r = colors[i].r;
                colors[i].r        = _r;

                _g = _actualColors[i].g;
                _actualColors[i].g = colors[i].g;
                colors[i].g        = _g;

                _b = _actualColors[i].b;
                _actualColors[i].b = colors[i].b;
                colors[i].b        = _b;
            }
        }

        if (radialAnimate)
        {
            IntVector2 point;
            if (center == null)
            {
                point = new IntVector2(config.canvasSize.x / 2, config.canvasSize.y / 2);
            }
            else
            {
                point = center;
            }
            StartCoroutine(radialLayer.updateColorsAndAnimate(colors, point));
        }

        StartCoroutine(backLayer.updateColors(_actualColors, radialAnimate));
        if (sendEvents && events.onActiveReceiveNewColors != null)
        {
            events.onActiveReceiveNewColors();
        }
    }