protected override void OnPopulateMesh(VertexHelper vh) { vh.Clear(); if (sprite == null) { return; } var rect = rectTransform.rect; var rectSize = new Vector2(rect.width, rect.height); var size = new Vector4(0, 0, rectSize.x, rectSize.y); var uv = DataUtility.GetOuterUV(sprite); var pivotSize = Vector2.Dot(rectSize, direction) + spacing; var countInteger = Mathf.FloorToInt(count); var countFract = count - countInteger; var basePos = TransformUtility.CheckOffsetBiased(rectTransform, direction, spacing, count); for (int e = 0; e < countInteger; ++e) { var pos = basePos + e * pivotSize * direction; MeshUtility.AddSimple(vh, Color.white, pos, size, uv); } if (countFract > 0) { var posLast = basePos + countInteger * pivotSize * direction; #if SCALED_FRACTIONAL posLast.x += width * countFract * 0.5f; MeshUtility.AddSimple(vh, Color.white, posLast, size * countFract, uv); #else //clipped factional size.z *= countFract; uv.z = uv.x + (uv.z - uv.x) * countFract; MeshUtility.AddSimple(vh, Color.white, posLast, size, uv); #endif } }
protected override void OnPopulateMesh(VertexHelper vh) { vh.Clear(); if (sprite == null) { return; } var rect = rectTransform.rect; var rectSize = new Vector2(rect.width, rect.height); var size = new Vector4(0, 0, rectSize.x, rectSize.y); var uv = DataUtility.GetOuterUV(sprite); var pivotSize = Vector2.Dot(rectSize, direction) + spacing; var basePos = TransformUtility.CheckOffsetBiased(rectTransform, direction, spacing, count); int e = 0; for (; e < Mathf.Min(value, count); ++e) { var pos = basePos + e * pivotSize * direction; MeshUtility.AddSimple(vh, Color.white, pos, size, uv); } if (option == null) { return; } uv = DataUtility.GetOuterUV(option); for (; e < count; ++e) { var pos = basePos + e * pivotSize * direction; MeshUtility.AddSimple(vh, Color.white, pos, size, uv); } }