// For Smooth Curve command public void AddRelativePoint(Vector3 control2, Vector3 end) { BezierCurve curve = GameObject.Instantiate(curvePrefab).GetComponent <BezierCurve>(); int numCurves = curves.Count; if (numCurves > 0) { BezierCurve prev = curves[numCurves - 1]; Vector3 anchor = prev.GetEndPosition(); Vector3 control1 = (prev.p2.position - prev.p3.position) * -1; curve.Init(NumSubDivisions, anchor, anchor + control1, anchor + control2, anchor + end, transform); prev.SetNext(curve); curve.SetPrev(prev); } else { Vector3 p = transform.position; curve.Init(NumSubDivisions, p, p, p + control2, p + end, transform); } curves.Add(curve); splineLength += curve.GetLength(); }
// Called when user clicks GUI Add Gizmo public void AddPoint(bool atStart) { BezierCurve curve = GameObject.Instantiate(curvePrefab).GetComponent <BezierCurve>(); int numCurves = curves.Count; if (numCurves > 0) { if (atStart) { BezierCurve next = curves[0]; Vector3 anchor = next.GetStartPosition(); curve.Init(NumSubDivisions, anchor, atStart, transform); next.SetPrev(curve); curve.SetNext(next); } else { BezierCurve prev = curves[numCurves - 1]; Vector3 anchor = prev.GetEndPosition(); curve.Init(NumSubDivisions, anchor, atStart, transform); prev.SetNext(curve); curve.SetPrev(prev); } } else { curve.Init(NumSubDivisions, Vector3.zero, atStart, transform); } if (atStart) { curves.Insert(0, curve); } else { curves.Add(curve); } splineLength += curve.GetLength(); }
public void AddAbsolutePoint(Vector3 end) { BezierCurve curve = GameObject.Instantiate(curvePrefab).GetComponent <BezierCurve>(); int numCurves = curves.Count; if (numCurves > 0) { BezierCurve prev = curves[numCurves - 1]; Vector3 anchor = prev.GetEndPosition(); curve.Init(NumSubDivisions, anchor, end, transform); prev.SetNext(curve); curve.SetPrev(prev); } else { curve.Init(NumSubDivisions, transform.position, end, transform); } curves.Add(curve); splineLength += curve.GetLength(); }
public void ClosePath() { int numCurves = curves.Count; if (numCurves == 0) { Debug.Log("Error: Cannot close empty path."); return; } BezierCurve curve = GameObject.Instantiate(curvePrefab).GetComponent <BezierCurve>(); BezierCurve startCurve = curves[0]; BezierCurve endCurve = curves[curves.Count - 1]; curve.Init(NumSubDivisions, endCurve.GetEndPosition(), startCurve.GetStartPosition(), transform); curves.Add(curve); splineLength += curve.GetLength(); endCurve.SetNext(curve); curve.SetPrev(endCurve); }