Some updates (especially major ones) require some user actions to adapt for changed API calls and concepts that became obsolete. The majority of changes are marked as obsolete and will be removed in the next minor release (e.g. a method that became obsolete with 2.0 will be removed with 2.1). However, sometimes marking them obsolete isn't an option and you'll receive compiler errors, not only warnings. Those are listed in the Deprecated section down below.

Curvy 1.6x to 2.x

It took us over a year to thoroughly polish Curvy and prepare the code base for future additions. During that phase we touched almost whole code doing optimizations, API streamlining and better editor integration and reliability. Wherever possible we used [Obsolete] to give you the chance to switch to the new concepts without getting compile errors and we tried to keep old functionality where applicable.

Here's a brief summary of the most noticeable changes:

  • We streamlined naming of API methods and properties
  • Connections now are individual GameObjects, see Connections. Old connections won't work anymore!
  • String based connection walking are gone! Instead of beating a dead horse we use event based connection handling now, see Connections
  • Old controllers (AlignToSpline, SplineWalker etc.) are deprecated, see Controllers
  • SplinePathMeshBuilder/SplinePathCloneBuilder are deprecated, see Curvy Generator for a more than equivalent replacement
  • SplineShaper is deprecated and replaced by a wizard like approach, see Shapes
  • UserValues are deprecated and replaced by Metadata

Please delete any older Curvy package from your project before importing Curvy 2.0!

Upgrading Bezier Splines

If you have saved scenes or prefabs containing Bezier splines with FreeMove enabled (i.e. manually placed handles), you'll have to manually add a single line of code inside CurvySplineSegment.Awake() (/Packages/Curvy/Base/CurvySplineSegment.cs) to import them properly:

void Awake()
    AutoHandles = !FreeHandles; // <= THIS!
    mTTransform = new TTransform(transform);

After that, save your scene/prefab again! We missed that and would have added this to an immediately bugfix release, but it's most likely that you'll already have updated the time the package passed review! We apologize for the inconvenience!

Future updates

We tried our best to think ahead and to prevent future breaking changes, so we are very confident that you won't have as much adaption work with future versions as you might have with Curvy 2.0.

Upgrading mechanism

We added a mechanism to handle upgrading of fields, properties and editor settings in the future. And who knows, perhaps Unity will open their code upgrading mechanism for developers as well.


The following classes, methods or properties have been removed or marked as obsolete:

Class/Method/Property Use instead Remarks
GLCurvyRenderer CurvyGLRenderer
CurvySplineBase.RefreshImmediately() CurvySplineBase.Refresh()
CurvySplineBase.Transform CurvySplineBase.transform now cached by Unity
CurvySplineBase.GetBounds() CurvySplineBase.Bounds
CurvySpline.OrientationMode.ControlPoint CurvySpline.OrientationMode.Static removed
CurvySpline.OrientationMode.Tangent CurvySpline.OrientationMode.Dynamic removed
CurvySpline.CatmulRom() CurvySpline.CatmullRom() *cough*
CurvySpline.NextControlPoint() CurvySplineSegment.NextControlPoint
CurvySpline.PreviousControlPoint() CurvySplineSegment.PreviousControlPoint
CurvySpline.NextSegment() CurvySplineSegment.NextSegment
CurvySpline.PreviousSegment() CurvySplineSegment.PreviousSegment
CurvySpline.NextTransform() CurvySplineSegment.NextTransform
CurvySpline.PreviousTransform() CurvySplineSegment.PreviousTransform
CurvySpline.Add(CurvySplineSegment) CurvySpline.InsertAfter()
CurvySpline.Add(CurvySplineSegment,bool) CurvySpline.InsertAfter()
CurvySpline.Add(bool,CurvySplineSegment) CurvySpline.InsertBefore()
CurvySpline.GetConnectionsWithin() Use Events
CurvySpline.MoveConnection() Use Events
CurvySpline.MoveConnectionFast() Use Events
CurvySpline.MoveByConnection() Use Events
CurvySpline.MoveByConnectionFast() Use Events
CurvySpline.Granularity CurvySpline.CacheDensity
CurvySplineSegment.Transform CurvySplineSegment.transform now cached by Unity
CurvySplineSegment.Position CurvySplineSegment.position
CurvySplineSegment.FreeHandles CurvySplineSegment.AutoHandles
CurvySplineSegment.HandleScale CurvySplineSegment.AutoHandleDistance
SplinePathMeshBuilder Curvy Generator
SplinePathCloneBuilder Curvy Generator
AlignToSpline Controllers
FollowSpline Controllers
SplineWalker Controllers
SplineWalkerCon Controllers
SplineWalkerDistance Controllers
SplineShaper Shapes
CurvyUtility.IsPlanar() CurvySpline.IsPlanar()
CurvyUtility.MakePlanar() CurvySpline.MakePlanar()
CurvyUtility.SetPivot() CurvySpline.SetPivot()
CurvyUtility.CenterPivot() CurvySpline.CenterPivot()
CurvyUtility.FlipSpline() CurvySpline.Flip()
CurvyUtility.MoveControlPoints() CurvySpline.MoveControlPoints()
CurvyUtility.JoinSpline() CurvySpline.JoinWith()
CurvyUtility.SplitSpline() CurvySplineSegment.SplitSpline()
CurvyUtility.SetFirstCP() CurvySplineSegment.SetAsFirstCP()
CurvyUtility.InterpolateBezierHandles() various Use Bezier methods of CurvySplineSegment


The following classes, methods or properties aren't marked as obsolete, but will be removed in Curvy 2.1 as well:

Class/Method/Property Use instead Remarks
CurvySpline.UserData[] Metadata
CurvySpline.InsertUserValueAt() Metadata
CurvySpline.RemoveUserValueAt() Metadata
Last modified: 2015/09/28 20:51 by Jake