Example #1
0
 void CreateSolid()
 {
     Debug.Log("solid line");
     using (var vh = new VertexHelper()) {
         MeshUtil.AddRect(BoundsUtil.UnitBounds, vh);
         MeshUtil.UpdateMesh(GetComponent <MeshFilter>(), vh);
     }
 }
Example #2
0
        void CreateBorderDashed()
        {
            using (var vh = new VertexHelper()) {
                var sections    = BorderSectionBounds();
                var top         = sections[0];
                var right       = sections[1];
                var bottom      = sections[2];
                var left        = sections[3];
                var outerBounds = BorderOuterBounds;

                // Horizontal
                float scaledDashLength = property.border.dashLength / property.width;
                float scaledGapLength  = property.border.gapLength / property.width;
                int   numRects         = Mathf.CeilToInt(top.size.x / (scaledDashLength + scaledGapLength));

                for (int i = 0; i < numRects; i++)
                {
                    float   displacement = (scaledDashLength + scaledGapLength) * i;
                    Vector2 anchor       = top.TopLeft().Incr(displacement, 0);
                    var     rect         = new Bounds().FromPoints(
                        anchor,
                        outerBounds.ClosestPoint(anchor.Incr(scaledDashLength, -scaledBorderHeight)));
                    MeshUtil.AddRect(rect, vh);

                    // BOT
                    anchor = bottom.TopLeft().Incr(displacement, 0);
                    rect   = new Bounds().FromPoints(
                        anchor,
                        outerBounds.ClosestPoint(anchor.Incr(scaledDashLength, -scaledBorderHeight)));
                    MeshUtil.AddRect(rect, vh);
                }

                // Vertical
                scaledDashLength = property.border.dashLength / property.height;
                scaledGapLength  = property.border.gapLength / property.height;
                numRects         = Mathf.CeilToInt(right.size.y / (scaledDashLength + scaledGapLength));

                for (int i = 0; i < numRects; i++)
                {
                    float   displacement = (scaledDashLength + scaledGapLength) * i;
                    Vector2 anchor       = right.TopLeft().Incr(0, -displacement);
                    var     rect         = new Bounds().FromPoints(
                        anchor,
                        outerBounds.ClosestPoint(anchor.Incr(scaledBorderWidth, -scaledDashLength)));
                    MeshUtil.AddRect(rect, vh);

                    // BOT
                    anchor = left.TopLeft().Incr(0, -displacement);
                    rect   = new Bounds().FromPoints(
                        anchor,
                        outerBounds.ClosestPoint(anchor.Incr(scaledBorderWidth, -scaledDashLength)));
                    MeshUtil.AddRect(rect, vh);
                }

                // draw bot
                outerMeshController.mesh = vh.CreateMesh();
            }
        }
Example #3
0
 void CreateBorderSolid()
 {
     using (var vh = new VertexHelper()) {
         foreach (Bounds b in BorderSectionBounds())
         {
             MeshUtil.AddRect(b, vh);
         }
         outerMeshController.mesh = vh.CreateMesh();
     }
 }
Example #4
0
        void CreateDashed()
        {
            float fullSegmentLength = (property.border.dashLength + property.border.gapLength);
            int   numFragments      = Mathf.CeilToInt(property.length / fullSegmentLength);

            if (numFragments > MAX_FRAGMENTS)
            {
                Debug.LogError("Line has too many fragments (" + numFragments + ")");
                return;
            }

            using (var vh = new VertexHelper()) {
                for (int i = 0; i < numFragments; i++)
                {
                    float deltaX = i * fullSegmentLength / property.length;
                    var   min    = new Vector2(-0.5f + deltaX, -0.5f);
                    var   max    = new Vector2(-0.5f + deltaX + property.border.dashLength / property.length, 0.5f);
                    MeshUtil.AddRect(new Bounds().WithMinMax(min, max), vh);
                }
                MeshUtil.UpdateMesh(GetComponent <MeshFilter>(), vh);
            }
        }