Using CSGMesh as trail was a quick-win, but it had some shortcomings:
CSGMesh API isn't stable.
CSGMesh shouldn't be used as procedural meshes because it is heavy on processing (wasn't affecting the Demo performance but wasn't a good learning example)
Curve3D API isn't stable too, and sometimes the "up" direction of the curve would break the material UV.
Although SurfaceTool code is much more difficult to read, the code itself is much more stable and performatic, and shows a good usecase to create a procedural mesh.
Using CSGMesh as trail was a quick-win, but it had some shortcomings:
Although SurfaceTool code is much more difficult to read, the code itself is much more stable and performatic, and shows a good usecase to create a procedural mesh.