예제 #1
0
        public override void ModifyMesh(VertexHelper vh)
        {
            int currentVertCount = vh.currentVertCount;

            if (!IsActive() || currentVertCount == 0)
            {
                return;
            }
            List <UIVertex> list = new List <UIVertex>();

            vh.GetUIVertexStream(list);
            UIVertex vertex = default(UIVertex);

            if (gradientMode == GradientMode.Global)
            {
                if (gradientDir == GradientDir.DiagonalLeftToRight || gradientDir == GradientDir.DiagonalRightToLeft)
                {
                    gradientDir = GradientDir.Vertical;
                }
                float num  = ((gradientDir != 0) ? list[list.Count - 1].position.x : list[list.Count - 1].position.y);
                float num2 = ((gradientDir != 0) ? list[0].position.x : list[0].position.y);
                float num3 = num2 - num;
                for (int i = 0; i < currentVertCount; i++)
                {
                    vh.PopulateUIVertex(ref vertex, i);
                    if (overwriteAllColor || !(vertex.color != targetGraphic.color))
                    {
                        vertex.color *= Color.Lerp(vertex2, vertex1, (((gradientDir != 0) ? vertex.position.x : vertex.position.y) - num) / num3);
                        vh.SetUIVertex(vertex, i);
                    }
                }
                return;
            }
            for (int j = 0; j < currentVertCount; j++)
            {
                vh.PopulateUIVertex(ref vertex, j);
                if (overwriteAllColor || CompareCarefully(vertex.color, targetGraphic.color))
                {
                    switch (gradientDir)
                    {
                    case GradientDir.Vertical:
                        vertex.color *= ((j % 4 != 0 && (j - 1) % 4 != 0) ? vertex2 : vertex1);
                        break;

                    case GradientDir.Horizontal:
                        vertex.color *= ((j % 4 != 0 && (j - 3) % 4 != 0) ? vertex2 : vertex1);
                        break;

                    case GradientDir.DiagonalLeftToRight:
                        vertex.color *= ((j % 4 == 0) ? vertex1 : (((j - 2) % 4 != 0) ? Color.Lerp(vertex2, vertex1, 0.5f) : vertex2));
                        break;

                    case GradientDir.DiagonalRightToLeft:
                        vertex.color *= (((j - 1) % 4 == 0) ? vertex1 : (((j - 3) % 4 != 0) ? Color.Lerp(vertex2, vertex1, 0.5f) : vertex2));
                        break;
                    }
                    vh.SetUIVertex(vertex, j);
                }
            }
        }
예제 #2
0
        public override void ModifyMesh(VertexHelper vh)
        {
            int count = vh.currentVertCount;
            if (!IsActive() || count == 0)
            {
                return;
            }
            var vertexList = new List<UIVertex>();
            vh.GetUIVertexStream(vertexList);
            UIVertex uiVertex = new UIVertex();
            if (gradientMode == GradientMode.Global)
            {
                if (gradientDir == GradientDir.DiagonalLeftToRight || gradientDir == GradientDir.DiagonalRightToLeft)
                {
#if UNITY_EDITOR
                    Debug.LogWarning("Diagonal dir is not supported in Global mode");
#endif
                    gradientDir = GradientDir.Vertical;
                }
                float bottomY = gradientDir == GradientDir.Vertical ? vertexList[vertexList.Count - 1].position.y : vertexList[vertexList.Count - 1].position.x;
                float topY = gradientDir == GradientDir.Vertical ? vertexList[0].position.y : vertexList[0].position.x;

                float uiElementHeight = topY - bottomY;

                for (int i = 0; i < count; i++)
                {
                    vh.PopulateUIVertex(ref uiVertex, i);
                    if (!overwriteAllColor && uiVertex.color != targetGraphic.color)
                        continue;
                    uiVertex.color *= Color.Lerp(vertex2, vertex1, ((gradientDir == GradientDir.Vertical ? uiVertex.position.y : uiVertex.position.x) - bottomY) / uiElementHeight);
                    vh.SetUIVertex(uiVertex, i);
                }
            }
            else
            {
                for (int i = 0; i < count; i++)
                {
                    vh.PopulateUIVertex(ref uiVertex, i);
                    if (!overwriteAllColor && !CompareCarefully(uiVertex.color, targetGraphic.color))
                        continue;
                    switch (gradientDir)
                    {
                        case GradientDir.Vertical:
                            uiVertex.color *= (i % 4 == 0 || (i - 1) % 4 == 0) ? vertex1 : vertex2;
                            break;
                        case GradientDir.Horizontal:
                            uiVertex.color *= (i % 4 == 0 || (i - 3) % 4 == 0) ? vertex1 : vertex2;
                            break;
                        case GradientDir.DiagonalLeftToRight:
                            uiVertex.color *= (i % 4 == 0) ? vertex1 : ((i - 2) % 4 == 0 ? vertex2 : Color.Lerp(vertex2, vertex1, 0.5f));
                            break;
                        case GradientDir.DiagonalRightToLeft:
                            uiVertex.color *= ((i - 1) % 4 == 0) ? vertex1 : ((i - 3) % 4 == 0 ? vertex2 : Color.Lerp(vertex2, vertex1, 0.5f));
                            break;

                    }
                    vh.SetUIVertex(uiVertex, i);
                }
            }
        }
예제 #3
0
        public void ModifyVertices(List<UIVertex> vertexList)
        {
            if (!IsActive() || vertexList.Count == 0)
            {
                return;
            }
            int count = vertexList.Count;
            UIVertex uiVertex = vertexList[0];
            if (gradientMode == GradientMode.Global)
            {
                if (gradientDir == GradientDir.DiagonalLeftToRight || gradientDir == GradientDir.DiagonalRightToLeft)
                {
            #if UNITY_EDITOR
                    Debug.LogWarning("Diagonal dir is not supported in Global mode");
            #endif
                    gradientDir = GradientDir.Vertical;
                }
                float bottomY = gradientDir == GradientDir.Vertical ? vertexList[vertexList.Count - 1].position.y : vertexList[vertexList.Count - 1].position.x;
                float topY = gradientDir == GradientDir.Vertical ? vertexList[0].position.y : vertexList[0].position.x;

                float uiElementHeight = topY - bottomY;

                for (int i = 0; i < count; i++)
                {
                    uiVertex = vertexList[i];
                    if (!overwriteAllColor && uiVertex.color != targetGraphic.color)
                        continue;
                    uiVertex.color *= Color.Lerp(vertex2, vertex1, ((gradientDir == GradientDir.Vertical ? uiVertex.position.y : uiVertex.position.x) - bottomY) / uiElementHeight);
                    vertexList[i] = uiVertex;
                }
            }
            else
            {
                for (int i = 0; i < count; i++)
                {
                    uiVertex = vertexList[i];
                    if (!overwriteAllColor && !CompareCarefully(uiVertex.color, targetGraphic.color))
                        continue;
                    switch (gradientDir)
                    {
                        case GradientDir.Vertical:
                            uiVertex.color *= (i % 4 == 0 || (i - 1) % 4 == 0) ? vertex1 : vertex2;
                            break;
                        case GradientDir.Horizontal:
                            uiVertex.color *= (i % 4 == 0 || (i - 3) % 4 == 0) ? vertex1 : vertex2;
                            break;
                        case GradientDir.DiagonalLeftToRight:
                            uiVertex.color *= (i % 4 == 0) ? vertex1 : ((i - 2) % 4 == 0 ? vertex2 : Color.Lerp(vertex2, vertex1, 0.5f));
                            break;
                        case GradientDir.DiagonalRightToLeft:
                            uiVertex.color *= ((i - 1) % 4 == 0) ? vertex1 : ((i - 3) % 4 == 0 ? vertex2 : Color.Lerp(vertex2, vertex1, 0.5f));
                            break;

                    }
                    vertexList[i] = uiVertex;
                }
            }
        }
예제 #4
0
        public override void ModifyMesh(VertexHelper vh)
        {
            int count = vh.currentVertCount;

            if (!IsActive() || count == 0)
            {
                return;
            }
            var vertexList = new List <UIVertex>();

            vh.GetUIVertexStream(vertexList);
            UIVertex uiVertex = new UIVertex();

            if (_gradientMode == GradientMode.Global)
            {
                if (_gradientDir == GradientDir.DiagonalLeftToRight || _gradientDir == GradientDir.DiagonalRightToLeft)
                {
#if UNITY_EDITOR
                    Debug.LogWarning("Diagonal dir is not supported in Global mode");
#endif
                    _gradientDir = GradientDir.Vertical;
                }
                float bottomY = _gradientDir == GradientDir.Vertical ? vertexList[vertexList.Count - 1].position.y : vertexList[vertexList.Count - 1].position.x;
                float topY    = _gradientDir == GradientDir.Vertical ? vertexList[0].position.y : vertexList[0].position.x;

                float uiElementHeight = topY - bottomY;

                for (int i = 0; i < count; i++)
                {
                    vh.PopulateUIVertex(ref uiVertex, i);
                    if (!_overwriteAllColor && uiVertex.color != targetGraphic.color)
                    {
                        continue;
                    }
                    uiVertex.color *= Color.Lerp(_vertex2, _vertex1, ((_gradientDir == GradientDir.Vertical ? uiVertex.position.y : uiVertex.position.x) - bottomY) / uiElementHeight);
                    vh.SetUIVertex(uiVertex, i);
                }
            }
            else
            {
                for (int i = 0; i < count; i++)
                {
                    vh.PopulateUIVertex(ref uiVertex, i);
                    if (!_overwriteAllColor && !CompareCarefully(uiVertex.color, targetGraphic.color))
                    {
                        continue;
                    }
                    switch (_gradientDir)
                    {
                    case GradientDir.Vertical:
                        uiVertex.color *= (i % 4 == 0 || (i - 1) % 4 == 0) ? _vertex1 : _vertex2;
                        break;

                    case GradientDir.Horizontal:
                        uiVertex.color *= (i % 4 == 0 || (i - 3) % 4 == 0) ? _vertex1 : _vertex2;
                        break;

                    case GradientDir.DiagonalLeftToRight:
                        uiVertex.color *= (i % 4 == 0) ? _vertex1 : ((i - 2) % 4 == 0 ? _vertex2 : Color.Lerp(_vertex2, _vertex1, 0.5f));
                        break;

                    case GradientDir.DiagonalRightToLeft:
                        uiVertex.color *= ((i - 1) % 4 == 0) ? _vertex1 : ((i - 3) % 4 == 0 ? _vertex2 : Color.Lerp(_vertex2, _vertex1, 0.5f));
                        break;
                    }
                    vh.SetUIVertex(uiVertex, i);
                }
            }
        }
예제 #5
0
        public void ModifyVertices(List <UIVertex> vertexList)
        {
            if (!IsActive() || vertexList.Count == 0)
            {
                return;
            }

            int      count    = vertexList.Count;
            UIVertex uiVertex = vertexList[0];

            if (gradientMode == GradientMode.Global)
            {
                if (gradientDir == GradientDir.DiagonalLeftToRight || gradientDir == GradientDir.DiagonalRightToLeft)
                {
#if UNITY_EDITOR
                    Debug.LogError("Diagonal dir is not supported in Global mode");
#endif
                    gradientDir = GradientDir.Vertical;
                }
                float bottomY = gradientDir == GradientDir.Vertical ? vertexList[vertexList.Count - 1].position.y : vertexList[vertexList.Count - 1].position.x;
                float topY    = gradientDir == GradientDir.Vertical ? vertexList[0].position.y : vertexList[0].position.x;

                float uiElementHeight = topY - bottomY;

                for (int i = 0; i < count; i++)
                {
                    uiVertex = vertexList[i];
                    if (!overwriteAllColor && uiVertex.color != targetGraphic.color)
                    {
                        continue;
                    }

                    uiVertex.color *= Color.Lerp(vertex2, vertex1, ((gradientDir == GradientDir.Vertical ? uiVertex.position.y : uiVertex.position.x) - bottomY) / uiElementHeight);
                    vertexList[i]   = uiVertex;
                }
            }
            else
            {
                if (targetGraphic == null)
                {
                    return;
                }

                for (int i = 0; i < count; i++)
                {
                    uiVertex = vertexList[i];

                    if (!overwriteAllColor && !CompareCarefully(uiVertex.color, targetGraphic.color))
                    {
                        continue;
                    }

                    switch (gradientDir)
                    {
                    case GradientDir.Vertical:
                        if (i % 2 == 0)
                        {
                            uiVertex.color *= (i % 3 == 0 || (i - 0) % 3 == 0) ? vertex1 : vertex2;
                        }
                        else
                        {
                            uiVertex.color *= (i % 3 == 0 || (i - 0) % 3 == 0) ? vertex2 : vertex1;
                        }
                        break;

                    case GradientDir.Horizontal:
                        if (i % 2 == 0)
                        {
                            uiVertex.color *= (i % 3 == 0 || (i - 1) % 3 == 0) ? vertex1 : vertex2;
                        }
                        else
                        {
                            uiVertex.color *= (i % 3 == 0 || (i - 1) % 3 == 0) ? vertex2 : vertex1;
                        }
                        break;

                    case GradientDir.DiagonalLeftToRight:
                        uiVertex.color *= (i % 4 == 0) ? vertex1 : ((i - 2) % 4 == 0 ? vertex2 : Color.Lerp(vertex2, vertex1, 0.55f));
                        break;

                    case GradientDir.DiagonalRightToLeft:
                        uiVertex.color *= ((i - 1) % 4 == 0) ? vertex1 : ((i - 3) % 4 == 0 ? vertex2 : Color.Lerp(vertex2, vertex1, 0.5f));
                        break;
                    }
                    vertexList[i] = uiVertex;
                }
            }
        }
예제 #6
0
        public override void ModifyMesh(Mesh mesh)
        {
            if (!IsActive() || mesh.vertexCount == 0)
            {
                return;
            }

            Vector3[] vertexList       = mesh.vertices;
            Color[]   vertexListColors = mesh.colors;
            int       count            = mesh.vertexCount;
            Vector3   uiVertex         = vertexList[0];
            Color     uiVertexColor    = vertexListColors[0];

            if (gradientMode == GradientMode.Global)
            {
                if (gradientDir == GradientDir.DiagonalLeftToRight || gradientDir == GradientDir.DiagonalRightToLeft)
                {
#if UNITY_EDITOR
                    Debug.LogWarning("Diagonal dir is not supported in Global mode");
#endif
                    gradientDir = GradientDir.Vertical;
                }
                float bottomY = gradientDir == GradientDir.Vertical ? vertexList[vertexList.Length - 1].y : vertexList[vertexList.Length - 1].x;
                float topY    = gradientDir == GradientDir.Vertical ? vertexList[0].y : vertexList[0].x;

                float uiElementHeight = topY - bottomY;

                for (int i = 0; i < count; i++)
                {
                    uiVertex      = vertexList[i];
                    uiVertexColor = vertexListColors[i];
                    if (!overwriteAllColor && uiVertexColor != targetGraphic.color)
                    {
                        continue;
                    }
                    uiVertexColor      *= Color.Lerp(vertex2, vertex1, ((gradientDir == GradientDir.Vertical ? uiVertex.y : uiVertex.x) - bottomY) / uiElementHeight);
                    vertexListColors[i] = uiVertexColor;
                }
            }
            else
            {
                for (int i = 0; i < count; i++)
                {
                    uiVertex      = vertexList[i];
                    uiVertexColor = vertexListColors[i];
                    if (!overwriteAllColor && !CompareCarefully(uiVertexColor, targetGraphic.color))
                    {
                        continue;
                    }
                    switch (gradientDir)
                    {
                    case GradientDir.Vertical:
                        uiVertexColor *= (i % 4 == 0 || (i - 1) % 4 == 0) ? vertex1 : vertex2;
                        break;

                    case GradientDir.Horizontal:
                        uiVertexColor *= (i % 4 == 0 || (i - 3) % 4 == 0) ? vertex1 : vertex2;
                        break;

                    case GradientDir.DiagonalLeftToRight:
                        uiVertexColor *= (i % 4 == 0) ? vertex1 : ((i - 2) % 4 == 0 ? vertex2 : Color.Lerp(vertex2, vertex1, 0.5f));
                        break;

                    case GradientDir.DiagonalRightToLeft:
                        uiVertexColor *= ((i - 1) % 4 == 0) ? vertex1 : ((i - 3) % 4 == 0 ? vertex2 : Color.Lerp(vertex2, vertex1, 0.5f));
                        break;
                    }
                    vertexListColors[i] = uiVertexColor;
                }
            }
            mesh.colors = vertexListColors;
        }
예제 #7
0
        public override void ModifyMesh(Mesh mesh)
        {
            if (!IsActive() || mesh.vertexCount == 0)
            {
                return;
            }

            Vector3[] vertexList = mesh.vertices;
            Color[] vertexListColors = mesh.colors;
            int count = mesh.vertexCount;
            Vector3 uiVertex = vertexList[0];
            Color uiVertexColor = vertexListColors[0];
            if (gradientMode == GradientMode.Global)
            {
                if (gradientDir == GradientDir.DiagonalLeftToRight || gradientDir == GradientDir.DiagonalRightToLeft)
                {
            #if UNITY_EDITOR
                    Debug.LogWarning("Diagonal dir is not supported in Global mode");
            #endif
                    gradientDir = GradientDir.Vertical;
                }
                float bottomY = gradientDir == GradientDir.Vertical ? vertexList[vertexList.Length - 1].y : vertexList[vertexList.Length - 1].x;
                float topY = gradientDir == GradientDir.Vertical ? vertexList[0].y : vertexList[0].x;

                float uiElementHeight = topY - bottomY;

                for (int i = 0; i < count; i++)
                {
                    uiVertex = vertexList[i];
                    uiVertexColor = vertexListColors[i];
                    if (!overwriteAllColor && uiVertexColor != targetGraphic.color)
                        continue;
                    uiVertexColor *= Color.Lerp(vertex2, vertex1, ((gradientDir == GradientDir.Vertical ? uiVertex.y : uiVertex.x) - bottomY) / uiElementHeight);
                    vertexListColors[i] = uiVertexColor;
                }
            }
            else
            {
                for (int i = 0; i < count; i++)
                {
                    uiVertex = vertexList[i];
                    uiVertexColor = vertexListColors[i];
                    if (!overwriteAllColor && !CompareCarefully(uiVertexColor, targetGraphic.color))
                        continue;
                    switch (gradientDir)
                    {
                        case GradientDir.Vertical:
                            uiVertexColor *= (i % 4 == 0 || (i - 1) % 4 == 0) ? vertex1 : vertex2;
                            break;
                        case GradientDir.Horizontal:
                            uiVertexColor *= (i % 4 == 0 || (i - 3) % 4 == 0) ? vertex1 : vertex2;
                            break;
                        case GradientDir.DiagonalLeftToRight:
                            uiVertexColor *= (i % 4 == 0) ? vertex1 : ((i - 2) % 4 == 0 ? vertex2 : Color.Lerp(vertex2, vertex1, 0.5f));
                            break;
                        case GradientDir.DiagonalRightToLeft:
                            uiVertexColor *= ((i - 1) % 4 == 0) ? vertex1 : ((i - 3) % 4 == 0 ? vertex2 : Color.Lerp(vertex2, vertex1, 0.5f));
                            break;

                    }
                    vertexListColors[i] = uiVertexColor;
                }
            }
            mesh.colors = vertexListColors;
        }
예제 #8
0
        protected void Modify(List <UIVertex> vertexList)
        {
            int      count    = vertexList.Count;
            UIVertex uiVertex = vertexList[0];

            if (gradientMode == GradientMode.Global)
            {
                if (gradientDir == GradientDir.DiagonalLeftToRight || gradientDir == GradientDir.DiagonalRightToLeft)
                {
#if UNITY_EDITOR
                    Debug.LogWarning("Diagonal dir is not supported in Global mode");
#endif
                    gradientDir = GradientDir.Vertical;
                }
                float bottomY = gradientDir == GradientDir.Vertical ? vertexList[vertexList.Count - 3].position.y : vertexList[vertexList.Count - 3].position.x;
                float topY    = gradientDir == GradientDir.Vertical ? vertexList[0].position.y : vertexList[0].position.x;

                float uiElementHeight = topY - bottomY;

                for (int i = 0; i < count; i++)
                {
                    uiVertex = vertexList[i];
                    if (!overwriteAllColor && uiVertex.color != m_Text.color)
                    {
                        continue;
                    }
                    uiVertex.color *= Color.Lerp(vertex2, vertex1, ((gradientDir == GradientDir.Vertical ? uiVertex.position.y : uiVertex.position.x) - bottomY) / uiElementHeight);
                    vertexList[i]   = uiVertex;
                }
            }
            else
            {
                for (int i = 0; i < count; i++)
                {
                    uiVertex = vertexList[i];
                    if (!overwriteAllColor && !CompareCarefully(uiVertex.color, m_Text.color))
                    {
                        continue;
                    }

                    switch (gradientDir)
                    {
                    case GradientDir.Vertical:
                        uiVertex.color *= (i % N == 0 || i % N == 1 || i % N == 5) ? vertex1 : vertex2;
                        break;

                    case GradientDir.Horizontal:
                        uiVertex.color *= (i % N == 0 || i % N == 4 || i % N == 5) ? vertex1 : vertex2;
                        break;

                    case GradientDir.DiagonalLeftToRight:
                        uiVertex.color *= (i % N == 0 || i % N == 5) ? vertex1 : ((i % N == 2 || i % N == 3) ? vertex2 : Color.Lerp(vertex2, vertex1, 0.5f));
                        break;

                    case GradientDir.DiagonalRightToLeft:
                        uiVertex.color *= (i % N == 1) ? vertex1 : (i % N == 4 ? vertex2 : Color.Lerp(vertex2, vertex1, 0.5f));
                        break;
                    }
                    vertexList[i] = uiVertex;
                }
            }
        }