Exemplo n.º 1
0
        protected override void OnPopulateMesh(VertexHelper vh)
        {
            vh.Clear();
            //TODO extend direction
            var     offset = new Vector2(0, 0);
            var     width = 0f;
            var     height = rectTransform.rect.height * 0.5f;
            var     center = TransformUtility.CheckCenter(rectTransform);
            var     centerLocal = center;
            Vector4 uv, uvInner;
            Vector4 rect, border;

            if (middle != null)
            {
                width   = middle.rect.width * 0.5f;
                offset  = new Vector2(width, 0);
                uv      = DataUtility.GetOuterUV(middle);
                uvInner = DataUtility.GetInnerUV(middle);
                rect    = new Vector4(-width, -height, width, height);
                if (uv == uvInner)
                {
                    MeshUtility.AddSimple(vh, color, centerLocal, rect, uv);
                }
                else
                {
                    border = middle.border;
                    MeshUtility.AddSliced(vh, color, centerLocal, rect, uv, uvInner, border);
                }
            }
            width = rectTransform.rect.width * 0.5f - width;
            //handle width < 0
            if (mirrored == null || width <= 0)
            {
                return;
            }
            //Debug.Log($"{width}");
            uv      = DataUtility.GetOuterUV(mirrored);
            uvInner = DataUtility.GetInnerUV(mirrored);
            rect    = new Vector4(-width, -height, 0, height);
            if (uv == uvInner)
            {
                centerLocal = center - offset;
                MeshUtility.AddSimple(vh, color, centerLocal, rect, uv);
                centerLocal = center + offset;
                rect.x      = -rect.x;
                MeshUtility.AddSimple(vh, color, centerLocal, rect, uv);
            }
            else
            {
                border      = mirrored.border;
                centerLocal = center - offset;
                MeshUtility.AddSliced(vh, color, centerLocal, rect, uv, uvInner, border);
                centerLocal = center + offset;
                rect.x      = -rect.x;
                MeshUtility.AddSliced(vh, color, centerLocal, rect, uv, uvInner, border);
            }
        }
        protected override void OnPopulateMesh(VertexHelper vh)
        {
            vh.Clear();
            //TODO extend direction
            var     offset = new Vector2(0, 0);
            var     width = 0f;
            var     height = rectTransform.rect.height * 0.5f;
            var     center = TransformUtility.CheckCenter(rectTransform);
            var     centerLocal = center;
            Vector4 uv, uvInner;
            Vector4 rect;

            if (middle != null)
            {
                width   = middle.rect.width * 0.5f;
                offset  = new Vector2(width, 0);
                uv      = DataUtility.GetOuterUV(middle);
                uvInner = DataUtility.GetInnerUV(middle);
                rect    = new Vector4(-width, -height, width, height);
                if (uv == uvInner)
                {
                    MeshUtility.AddSimple(vh, color, centerLocal, rect, uv);
                }
                else
                {
                    MeshUtility.AddSliced(vh, color, centerLocal, rect, uv, uvInner, middle.border);
                }
            }
            width       = rectTransform.rect.width * 0.5f - width;
            uv          = DataUtility.GetOuterUV(left);
            uvInner     = DataUtility.GetInnerUV(left);
            rect        = new Vector4(-width, -height, 0, height);
            centerLocal = -offset;
            if (uv == uvInner)
            {
                MeshUtility.AddSimple(vh, color, centerLocal, rect, uv);
            }
            else
            {
                MeshUtility.AddSliced(vh, color, centerLocal, rect, uv, uvInner, left.border);
            }
            uv          = DataUtility.GetOuterUV(right);
            uvInner     = DataUtility.GetInnerUV(right);
            rect        = new Vector4(0, -height, width, height);
            centerLocal = center + offset;
            if (uv == uvInner)
            {
                MeshUtility.AddSimple(vh, color, centerLocal, rect, uv);
            }
            else
            {
                MeshUtility.AddSliced(vh, color, centerLocal, rect, uv, uvInner, right.border);
            }
        }
Exemplo n.º 3
0
        protected override void OnPopulateMesh(VertexHelper vh)
        {
            vh.Clear();
            if (_baked == null || _baked.Length < 3)
            {
                return;
            }
            var center = TransformUtility.CheckCenter(rectTransform);

            vh.AddVert(center, color, new Vector2(0, scale));
            var uv = new Vector2(1, scale);

            vh.AddVert(center + _baked[0] * scale, color, uv);
            int r = 1;

            for (; r < _baked.Length; ++r)
            {
                vh.AddVert(center + _baked[r] * scale, color, uv);
                vh.AddTriangle(0, r + 1, r);
            }
            vh.AddTriangle(0, 1, r);
        }