void Update()
    {
        if (Input.GetMouseButtonDown(0) && !_held)
        {
            Vector3 mpos = Input.mousePosition;
            mpos.z = 10.0f;
            mpos   = Camera.main.ScreenToWorldPoint(mpos);

            bezierPt bzp1 = _segments[_segments.Count - 2];
            bezierPt bzp2 = _segments[_segments.Count - 1];

            if (bzp1._pp == null)
            {
                bzp1._pp = Instantiate(_prefab, mpos, Quaternion.identity) as GameObject;
            }
            else
            {
                bzp2._pp = Instantiate(_prefab, mpos, Quaternion.identity) as GameObject;

                Vector3 dir = bzp2._pp.transform.position - bzp1._pp.transform.position;

                bzp1._cp2 = Instantiate(_prefab, bzp1._pp.transform.position + dir * 0.3333f, Quaternion.identity) as GameObject;
                bzp2._cp1 = Instantiate(_prefab, bzp1._pp.transform.position + dir * 0.6666f, Quaternion.identity) as GameObject;

                bzp1._cp2.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
                bzp2._cp1.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);

                bzp1.setupDrag();
                bzp2.setupDrag();

                if (_segments.Count > 2)
                {
                    bzp1.setupMirror();
                }

                _segments.Add(new bezierPt());
                _segments[_segments.Count - 1]._pts = _pts;

                bzp2._next = _segments[_segments.Count - 1];
            }
        }

        if (Input.GetKey(KeyCode.A))
        {
            _pts.Clear();
            for (int i = 0; i < _segments.Count - 2; ++i)
            {
                _segments[i].calculate();
            }

            _line.SetVertexCount(_pts.Count);

            for (int i = 0; i < _pts.Count; ++i)
            {
                _line.SetPosition(i, _pts[i]);
            }
        }
    }
    public bezierPt()
    {
        _pp  = null;
        _cp1 = null;
        _cp2 = null;

        _next = null;

        _length = 0.0f;
        //_pts = new List<Vector3>();
    }