I’ve been playing with splines today in Blueprint and got locked out of my project. It crashes on open. Specifically these lines in SplineComponent.cpp:
float USplineComponent::GetDistanceAlongSplineAtSplinePoint(int32 PointIndex) const
{
const int32 NumPoints = SplineCurves.Position.Points.Num();
const int32 NumSegments = bClosedLoop ? NumPoints : NumPoints - 1;
if ((PointIndex >= 0) && (PointIndex < NumSegments + 1))
{
return SplineCurves.ReparamTable.Points[PointIndex * ReparamStepsPerSegment].InVal;
}
return 0.0f;
}
The cause is that I am measuring points then adding points via AddSplinePointAtIndex with bUpdateSpline as false in blueprint. This is done in a loop. But because bUpdateSpline is false, the SplineCurves.ReparamTable never gets updated.
I’m thinking that
const int32 NumPoints = SplineCurves.Position.Points.Num();
should be
const int32 NumPoints = SplineCurves.ReparamTable.Points.Num();