This is an old revision of the document!


Release Notes

At each Curvy update, please delete the old Curvy folders before installing the new version.
  • (OPTIM) Huge optimizations related to splines modification. Real time splines modification can take up to an order of magnitude less time
  • (OPTIM) Reduced multi threading computational and memory overheads
  • (OPTIM) Optimized splines interpolation
  • (CHANGE) Made splines initialize earlier, in Start instead of the first Update/FixedUpdate/LateUpdate
  • (CHANGE) Resetting a Control Point will now keep it's connections
  • (CHANGE) Connection inspector: to no allow invalid Heading settings
  • (CHANGE) Curvy Spline Segment inspector: OrientationAnchor is no more visible when it's value is irrelevant
  • (CHANGE) Made materials in example scenes compatible with Unity 2018 (dropping of Substance based ones)
  • (CHANGE) Transformation from text to number of user provided values now uses the invariant culture instead of the culture on the user's machine. More about invariant culture here: https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.invariantculture%28v=vs.110%29.aspx
  • (FIXED) Exceptions thrown when updating splines with “Use Threading” and “Bake Orientation” in one of the control points set to true
  • (FIXED) Occasional exceptions thrown when undoing some operations
  • (FIXED) In Meta CG Options' inspector, setting First U from neighbors lead to thrown execptions or invalid values
  • (FIXED) Spline Controller does not work when setting its spline from code
  • (FIXED) Changing spline controller's speed through the SetFromString does not work
  • (FIXED) Controller's orientation can be wrong when TimeScale is set to 0 or when unpausing the game
  • (FIXED) If a Control Point is used as a Follow Up, moving it sometimes does not update the connected spline
  • (FIXED) Control points that have already a next or previous Control point are allowed to have Follow ups
  • (FIXED) A spline does not get updated when its first Control Point has a Follow Up that moves
  • (FIXED) Changing a spline's Auto End Tangents do not refresh following up spline
  • (FIXED) Connection between control points at the end or start of a spline prevent those control points to become invisible when Auto End Tangents is set to false
  • (FIXED) Connection persists after deletion
  • (FIXED) Connections still existing even if all the connected control points are removed
  • (FIXED) When changing Auto End Tangents from false to true, the Orientation Anchor value of the second control point is always overridden to true
  • (FIXED) Selecting an orphan control point from a loaded scene leads to null references
  • (FIXED) Spline does not get updated when one of its children Control Points is moved elsewhere via the Hierarchy window
  • (FIXED) First tangent of a segment is sometimes not up to date
  • (FIXED) When switching from Orientation Static or Dynamic to None, orientation for some control points is not recomputed
  • (FIXED) The orientation of the last segment's cached points is sometimes not up to date
  • (FIXED) A spline's Length can have a negative value when removing all control points
  • (FIXED) A spline keeps a non zero value for Cache Size and Segments count even after removing all control points
  • (FIXED) Sometimes, when enabling a disabled spline, the control points hierarchy is not reflecting the actual splines' control points
  • (FIXED) Changing the number of points in a Spiral (in the Shape wizard) sometimes make the spiral “entangled”
  • (FIXED) “Max Points Per Unit” is not correctly imported when using the splines import/export tool
  • (FIXED) Resetting a CurvySpline component will set invalid value to its “Max Points Per Unit”
  • (API/CHANGE) CurvySpline.Create now returns an initialized splines
  • (API/CHANGE) Now all CurvySplineSegments have approximation arrays of a length of CacheSize + 1
  • (API/CHANGE) Made CurvySplineBase abstract
  • (API/CHANGE) CurvySplineSegment's ControlPointIndex can no longer be set. It is now handled by CurvySpline
  • (API/CHANGE) Made components stripping systematic when pushing CurvySplineSegments to pools
  • (API/FIXED) IsLastSegment returns true even if Control Point was not a segment
  • (API/FIXED) When using follow ups, GetPreviousControlPoint returns a Control Point that is not a segment even when segmentsOnly is true
  • (API/FIXED) Poolable objects do not get their OnBeforePush method called before being pushed into a pool
  • (API/FIXED) Setters of CurvySpline.MaxPointsPerUnit, CurvySplineGroup.Splines and BuildShapeExtrusion.CrossShiftValue did not update these values correctly
  • Changes since 2.2.4.1
    • (FIXED) StartCP and EndCP in InputSplinePath and InputSplineShape modules are set automatically to null.
  • (NEW) Assembly definitions support
    • Curvy was restructured and modified to support Unity's assembly definitions. This feature is disabled by default in this release. To enable it, search in Curvy installed folders for files with “.asmdef.disabled” extension, and rename the extension to “.asmdef”.
  • (NEW) CG module slots can be renamed without breaking the generator's data
  • (CHANGE) Spline sampling parameters were modified:
    • The global “Max Cache PPU” is now obsolete and replaced with a per spline “Max Max Points Per Unit”
    • The “Min Distance” parameter of the Curvy Generators is now obsolete
    • For more details please go here https://forum.curvyeditor.com/thread-526.html
  • (CHANGE) Fixed an example script's namespace
  • (CHANGE) Added relevant dlls generated by asmdefs to link.xml
  • (CHANGE) 0 is no more a valid value for the Resolution parameter in “Rasterize Path” and “Shape Extrusion” CG modules
  • (CHANGE) Modified some CG module slots names to reflect the need for a rasterized path, in opposition to a non rasterized one.
  • (FIXED) Some CurvyUISpline properties do not get reset properly when resetting the component
  • (FIXED) Spline's level of detail is different between the editor and the build.
  • (FIXED) Extruded shapes become two dimensional if small enough
  • (FIXED) The “Use Cache” parameter in the spline input CG modules is ignored when linked to “Shape Extrusion” or “Rasterize Path” CG modules having “Optimize” set to true.
  • (FIXED) The rasterization resolution in the “Rasterize Path” CG module is modified if the module's Length parameter is modified.
  • (FIXED) Extruded mesh jitters when modifying its path spline's length
  • (FIXED) Wrong name of Rasterize Path in the CG modules list
  • (FIXED, except when building against .NET Core) Curvy doesn't detect custom CG modules and Shapes from other assemblies.
  • (FIXED) The Curvy generator templates list is broken in .Net 4.6
  • (FIXED) In the CG graph, the suggested list of modules to connect with the current module contains modules you can't connect to
  • (FIXED) Spline to Mesh tool generated spline at the wrong position
  • (FIXED) Pools get duplicated if the pooled object's class is in a different assembly from the pool
  • (FIXED) Multiple pools of the same component crash the game
  • (FIXED) Obsolete messages from Unity 2017.3 and newer
  • (FIXED) WebGL application crashes when using a spline having Use Threading set to true

Example scenes:

  • (CHANGE) Set assets serialization mode to Text
  • (CHANGE) Reduced Ressource images size
  • (CHANGE) Various tweaks and enhancements
  • (FIXED) Example scenes do not render properly on WebGL and Mobile
  • Spline to Mesh:
    • (CHANGE) Renamed the “Mesh Export” tool to “Spline to Mesh” to avoid confusion.
    • (CHANGE) Spline to Mesh does no more require the input spline to be on the X/Y plane
    • (FIXED) Spline to Mesh does not open in recent Unity version
    • (FIXED) Spline to Mesh produces wrong values in UV2.y
  • Spline Import/Export wizard:
    • (NEW) Added link to documentation in the spline Import/Export wizard
    • (CHANGE) Spline Import/Export wizard modified to make it more straight forward to use
    • (CHANGE) Modified the field names in the exported spline JSON format, to make it similar to the spline field names in the inspector
    • (FIXED) Spline Import/Export wizard does not open in recent Unity versions
    • (FIXED) “String too long” error when displaying long text in the spline Import/Export wizard TextMeshGenerator Cutting off characters
  • Others:
    • (CHANGE) Replaced the usage of the obsolete UnityEditor.EditorApplication.playmodeStateChanged method with UnityEditor.EditorApplication.playModeStateChanged and UnityEditor.EditorApplication.pauseStateChanged for Unity 2017.2 and above
    • (FIXED) WebGL builds fail
    • (FIXED) Builds that use code stripping fail on Unity 2017.1 and older
    • (FIXED) When synchronizing connected spline handles, moving a handle can invert the others
  • (CHANGE) Modified the UI of the CG module “Create Mesh” to avoid confusion regarding the “Make Static” option.
    • “Make Static” is now not editable in play mode, since its Unity equivalent (GameObject.IsStatic) is an editor only property.
    • When “Make Static” is true, the other options are not editable while in play mode. This is to reflect the behaviour of the “Create Mesh” module, which is to not update the mesh while under those conditions, to avoid overriding the optimizations Unity do to static game objects'meshs.
  • (FIXED) When combining multiple Volumes having different values for the “Generate UV” setting, the created mesh has invalid UVs
  • (FIXED) “Mesh.normals is out of bounds” error when Generating a mesh that has Caps while using the Combine option
  • (FIXED) Convex property, in CG module Create Mesh, not applied on generated mesh collider
  • (FIXED) Negative SwirlTurns are ignored
  • (FIXED) Orientation interpolated the wrong way (Lerping instead of SLerping)
  • (FIXED) Cross's “Reverse Normal” in “Shape Extrusion” module is ignored when a “Volume Hollow” is set
  • (FIXED) Crash on IOS when using code stripping on Unity 2017.2 and above.
  • (OPTIM) Various optimizations, the most important ones are related to “Shape Extrusion”'s normals computations and Orientation computation
  • (API) Added a new GetNearestPointTF overload that also returns the nearestSegment and the nearestSegmentF
  • (API) Made CrossReverseNormals, HollowInset and HollowReverseNormals properties public in BuildShapeExtrusion
  • (NEW) Addressed Unity 2017.3 incompatibilities
  • (NEW) Added a RendererEnabled option to the CreateMesh CG module. Useful if you generate a mesh for collider purposes only
  • (FIXED) Error when using pooling with Unity 2017.2 and above
  • (FIXED) Incompatibility with UWP10 build
  • (FIXED) SceneSwitcher.cs causing issues with the global namespace of Scene Switcher being occupied by the PS4's SDK
  • (FIXED) Curvy crashing when compiled with the -checked compiler option
  • (FIXED) TRSShape CG module not updating properly the shape's normals
  • (FIXED) ReverseNormals not reversing normals in some cases. Note: You might have ticked “Reverse Normals” in some of your Curvy Generators, but didn't notice it because of the bug. Now that the bug is fixed, those accidental “Reverse Normals” will get activated.
  • (FIXED) Split meshes not having the correct normals
  • (CHANGE) Replaced website, documentation and forum URLs with the new ones
  • (OPTIM) Various optimizations, the most important ones are related to mesh generation (UVs, normals and tangents computation)
  • (FIXED) TimeScale affects controller movement when Animate is off
  • (FIXED) Reverse spline movement going wrong under some rare conditions
  • (NEW) Added CreatePathLineRenderer CG module
  • (NEW) Addressed Unity 5.5 incompatibilities
  • (FIXED) SplineController.AdaptOnChange failing under some conditions
  • (FIXED) Selecting a spline while the Shape wizard is open immediately changes it's shape
  • (FIXED) ModifierMixShapes module not generating normals
  • (CHANGE) Changed 20_CGPath example to showcase CreatePathLineRenderer module
  • (NEW) Added CurvySplineBase.GetApproximationPoints
  • (NEW) Added Offsetting and offset speed compensation to CurvyController
  • (FIXED) ImportExport toolbar button ignoring ShowGlobalToolbar option
  • (FIXED) Assigning CGDataReference to VolumeController.Volume and PathController.Path fails at runtime
  • (CHANGE) OrientationModeEnum and OrientationAxisEnum moved from CurvyController to FluffyUnderware.Curvy namespace
  • (CHANGE) ImportExport Wizard now cuts text and logs a warning if larger then allowed by Unity's TextArea
  • (NEW) More options for the Mesh Triangulation wizard
  • (NEW) Improved Spline2Mesh and SplinePolyLine classes for better triangulator support
  • (NEW) BuildVolumeCaps performance heavily improved
  • (NEW) Added preference option to hide _CurvyGlobal_ GameObject
  • (NEW) Import/Export API & wizard for JSON serialization of Splines and Control Points (Catmull-Rom & Bezier) - Experimental
  • (NEW) Added 22_CGClonePrefabs example scene
  • (NEW) Windows Store compatiblity (Universal 8.1, Universal 10)
  • (FIXED) BuildVolumeMesh.KeepAspect not working properly
  • (FIXED) CreateMesh.SaveToScene() not working properly
  • (FIXED) NRE when using CreateMesh module's Mesh export option
  • (FIXED) Spline layer always resets to default spline layer
  • (FIXED) CurvySpline.TFToSegmentIndex returning wrong values
  • (FIXED) SceneSwitcher helper script raise errors at some occasions
  • (CHANGE) Setting CurvyController.Speed will only change movement direction if it had a value of 0 before
  • (CHANGE) Dropped poly2tri in favor of LibTessDotNet for triangulation tasks
  • (CHANGE) Removed all legacy components from Curvy 1.X
  • (CHANGE) New Control Points now use the spline's layer
  • (NEW) Added CurvyGenerator.FindModule<T>()
  • (NEW) Added InputSplineShape.SetManagedShape()
  • (NEW) Added 51_InfiniteTrack example scene
  • (NEW) Added CurvyController.Pause()
  • (NEW) Added CurvyController.Apply()
  • (NEW) Added CurvyController.OnAnimationEnd event
  • (NEW) Added option to select Connection GameObject to Control Point inspector
  • (FIXED) UV2 calculation not working properly
  • (FIXED) CurvyController.IsInitialized becoming true too early
  • (FIXED) Controller Damping not working properly when moving backwards
  • (FIXED) Control Point pool keeps invalid objects after scene load
  • (FIXED) _CurvyGlobal_ frequently causes errors in editor when switching scenes
  • (FIXED) Curve Gizmo drawing allocating memory unnecessarily
  • (FIXED) SplineController allocates memory at some occasions
  • (FIXED) CurvyDefaultEventHandler.UseFollowUp causing Stack Overflow/Unity crashing
  • (FIXED) _CurvyGlobal_ GameObject disappearing by DontDestroyOnLoad bug introduced by Unity 5.3
  • (CHANGE) UITextSplineController resets state when you disable it
  • (CHANGE) CurvyGenerator.OnRefresh() now returns the first changed module in CGEventArgs.Module
  • (CHANGE) Renamed CurvyControlPointEventArgs.AddMode to ModeEnum, changed content to “AddBefore”, “AddAfter”, “Delete”, “None”
  • (NEW) Added Pooling example scene
  • (NEW) Added CurvyGLRenderer.Add() and CurvyGLRenderer.Delete()
  • (FIXED) CG graph not refreshing properly
  • (FIXED) CG module window background rendering transparent under Unity 5.2 at some occasions
  • (FIXED) Precise Movement over connections causing position warps
  • (FIXED) Curvy values resetting to default editor settings on upgrade
  • (FIXED) Control Points not pooled when deleting spline
  • (FIXED) Pushing Control Points to pool at runtime causing error
  • (FIXED) Bezier orientation not updated at all occasions
  • (FIXED) MetaCGOptions: Explicit U unable to influence faces on both sides of hard edges
  • (FIXED) Changed UITextSplineController to use VertexHelper.Dispose() instead of VertexHelper.Clear()
  • (FIXED) CurvySplineSegment.ConnectTo() fails at some occasions
  • (NEW) Added Range option to Input Spline Path and Input Spline Shape modules
  • (NEW) CG editor improvements
  • (NEW) Added more Collider options to Create Mesh module
  • (NEW) Added Renderer options to Create Mesh module
  • (NEW) Added CurvySpline.IsPlanar(CurvyPlane) and CurvySpline.MakePlanar(CurvyPlane)
  • (FIXED) Controller Inspector leaking textures
  • (FIXED) Controllers refreshing when Speed==0
  • (FIXED) VolumeController not using individual faces at all occasions
  • (FIXED) Unity 5.2.1p1 silently introduced breaking changes in IMeshModifier
  • (FIXED) IOS deployment code stripping (link.xml)
  • (CHANGE) CurvyController.OrientationDamping now obsolete!

Initial Curvy 2 release! Existing users, please read the upgrading guide!