Upgrade guide

At each Curvy update, please delete the old Curvy folders before installing the new version.

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 Obsolete/Removed section down below.

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
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.


Here is a listing of classes, methods or properties that have been removed or marked as obsolete in prior versions. This listing might be useful if you want to upgrade code that have been written for old versions of Curvy:

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
CurvySpline.UserData[] Metadata
CurvySpline.InsertUserValueAt() Metadata
CurvySpline.RemoveUserValueAt() Metadata