Beispiel #1
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();
            }
        }
Beispiel #2
0
 void CreateBorderSolid()
 {
     using (var vh = new VertexHelper()) {
         foreach (Bounds b in BorderSectionBounds())
         {
             MeshUtil.AddRect(b, vh);
         }
         outerMeshController.mesh = vh.CreateMesh();
     }
 }
Beispiel #3
0
        /***** PRIVATE: MESH CREATION *****/
        void CreateInner()
        {
            Color32 color32 = Color.white;

            using (var vh = new VertexHelper()) {
                vh.AddVert(new Vector3(-0.5f, -0.5f), color32, TEXTURE_MID_POINT);
                vh.AddVert(new Vector3(-0.5f, 0.5f), color32, TEXTURE_MID_POINT);
                vh.AddVert(new Vector3(0.5f, -0.5f), color32, TEXTURE_MID_POINT);
                vh.AddVert(new Vector3(0.5f, 0.5f), color32, TEXTURE_MID_POINT);
                vh.AddTriangle(0, 1, 2);
                vh.AddTriangle(2, 1, 3);
                innerMeshController.mesh = vh.CreateMesh();
            }
        }