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>(); }