Example #1
0
    void Update()
    {
        SVG.Clear();

        for (var i = 0; i < 4; ++i)
        {
            var angle0 = Mathf.PI * 0.5f * (i + 0);
            var angle1 = Mathf.PI * 0.5f * (i + 1);

            var r = 3f;
            var x0 = Mathf.Cos(angle0) * r;
            var y0 = Mathf.Sin(angle0) * r;
            var x1 = Mathf.Cos(angle1) * r;
            var y1 = Mathf.Sin(angle1) * r;

            var a = r * (4f / 3f) * Mathf.Tan((angle1 - angle0) / 4f);
            var inAngle = angle0 + Mathf.PI * 0.5f;
            var inX = x0 + Mathf.Cos(inAngle) * a;
            var inY = y0 + Mathf.Sin(inAngle) * a;
            var outAngle = angle1 - Mathf.PI * 0.5f;
            var outX = x1 + Mathf.Cos(outAngle) * a;
            var outY = y1 + Mathf.Sin(outAngle) * a;

            if (i == 0)
            {
                SVG.Move(x0, y0);
            }

            SVG.Curve(inX, inY, outX, outY, x1, y1);
        }

        Mesh.Fill(SVG);
    }
Example #2
0
    void Update()
    {
        Rects.RemoveAll(r => r == null);

        for (var i = 0; i < Rects.Count; ++i)
        {
            for (var j = i + 1; j < Rects.Count; ++j)
            {
                if (Rects[i].HitTest(Rects[j]))
                {
                    continue;
                }
                if (Rects[j].HitTest(Rects[i]))
                {
                    continue;
                }
            }
        }

        LineSVG.Clear();

        if (IsDragging)
        {
            var p = GetMousePoint();

            if (Input.GetMouseButton(0))
            {
                DrawLine(LineSVG, DragStart, p);
            }
            else
            {
                IsDragging = false;

                foreach (var r in Rects.ToList())
                {
                    r.Split(DragStart, p, Rects);
                }
            }
        }
        else
        {
            if (Input.GetMouseButtonDown(0))
            {
                DragStart  = GetMousePoint();
                IsDragging = true;
            }
        }

        LineMesh.Fill(LineSVG);
    }
Example #3
0
    void Update()
    {
        HeadSVG.Clear();
        TailSVG.Clear();
        BodySVG.Clear();

        Update(Time.deltaTime);

        var v = Mathf.Max(0.7f, 1.3f - Mathf.Clamp01((Head - Tail).magnitude / 3f));

        Circle(HeadSVG, Head, HeadR);
        Circle(TailSVG, Tail, TailR);
        Metaball(BodySVG, Head, HeadR, Tail, TailR, v);

        HeadMesh.Fill(HeadSVG);
        TailMesh.Fill(TailSVG);
        BodyMesh.Fill(BodySVG);
    }
Example #4
0
    void Update()
    {
        Circle1SVG.Clear();
        Circle2SVG.Clear();
        MetaballSVG.Clear();

        var c1 = (Vector2)Circle1Mesh.transform.localPosition;
        var c2 = (Vector2)Circle2Mesh.transform.localPosition;

        var c1R = 1f;
        var c2R = 1.2f;

        var v = Mathf.Max(0.5f, 1.3f - Mathf.Clamp01((c2 - c1).magnitude / 8f));

        Circle(Circle1SVG, Vector2.zero, c1R);
        Circle(Circle2SVG, Vector2.zero, c2R);
        Metaball(MetaballSVG, c1, c1R, c2, c2R, v);

        Circle1Mesh.Fill(Circle1SVG);
        Circle2Mesh.Fill(Circle2SVG);
        MetaballMesh.Fill(MetaballSVG);
    }
Example #5
0
 private void Render()
 {
     SVG.Clear();
     Draw(SVG);
     Mesh.Fill(SVG);
 }