Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Input Spline Shape @ Runtime
#1
How do I assign an InputSplineShape at runtime?  I want to have a road that contains 2 lines with a yellow line running down the middle.  Now I want to expand it to a divided highway.  To do this, I need to change the shape and the texture.  How do I assign/reassign the shape, because this doesn't work as I expected it to.  Do I need to use a method instead?  if so what?

                        InputSplineShape SHAPE = GENERATOR.AddModule<InputSplineShape>();
                        SHAPE.FreeForm = true;
                        SHAPE.Shape = Road[0];

Where Road[0] is a CurvySpline and the two lane road shape and Road[1] is the divided highway shape.

                        var RECTANGLE = SHAPE.SetManagedShape<CSRectangle>();
                        RECTANGLE.Width = 40;
                        RECTANGLE.Height = 25;

This code gives me a rectangle and the shape is as I expected.  So, how do I assign/reassign the shape at runtime?

Thanks,
El
Reply
#2
For others ... took a while, but I figure this out too.  You create a Generator in the editor and put all your shapes into the editor.  Then create an attribute:

    public InputSplineShape[] Roads;
    
That has a reference to each of the shapes you created in the ditor.

During runtime, after you've constructed the generator, you copy the appropriate shape to the generator for the shape of the road.
    
    var GENERATOR = CurvyGenerator.Create();
    var SHAPE = Roads[0].CopyTo(GENERATOR);

As for the materials, simply assign it to the volume:

    var VOLUME = GENERATOR.AddModule<BuildVolumeMesh>();
    VOLUME.SetMaterial(0,RoadMaterials[0]);


Jake, any other comments/suggestions?
Reply
#3
Setting InputSplineShape.Shape at runtime should be fine. Note that you need to call CurvyGenerator.Refresh() manually if you want to use the results immediately. Otherwise changes are applied in the next frame's Update() loop.
Reply
#4
Still refuses to work:

Code:
var GENERATOR = CurvyGenerator.Create();
var SHAPE = GENERATOR.AddModule<InputSplineShape>();
SHAPE.Shape = CurvySpline.Create(Rails[0].Shape);
SHAPE.Initialize();

// Other initialization code (see other thread)

GENERATOR.Refresh(true);
GameObject NEW_MESH = aMesh.SaveToScene();

// NEW_MESH is null
Reply
#5
Hello?
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
Smile Constant speed along a spline? tfishell 1 41 11-13-2025, 11:32 AM
Last Post: _Aka_
  SplineController Ignores Follow-Up and Chooses Wrong Spline Josenildo 7 3,175 07-29-2025, 09:15 PM
Last Post: _Aka_
  Curvy Line Renderer for UI Spline? gekido 7 4,531 07-13-2025, 07:11 PM
Last Post: _Aka_
  Is there a way to get the position of each ControlPoint in spline by API? Chanon 1 1,676 06-07-2025, 09:44 AM
Last Post: _Aka_

Forum Jump: