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); } } }
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); } } }
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; } } }
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); } } }
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; } } }
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; }
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; }
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; } } }