- Edited
Catapult Have you tested this? Looks like it may work but beware because this approach could introduce floating point precision bugs. You're searching for the exact point coordinates by value. For some numbers it can result in a miss even if point coordinates seemingly match, due to nature of floating point roundoff. It's generally not a good idea to compare float number using ==
operator.
So you should test this excessively before using it in published code.
Btw, splitting curves is pretty straightforward:
func split_curve(curve: Curve2D):
var out_sub_curves = []
for i in curve.point_count-1:
var sub_curve = Curve2D.new()
sub_curve.add_point(curve.get_point_position(i), curve.get_point_in(i), curve.get_point_out(i) )
sub_curve.add_point(curve.get_point_position(i+1), curve.get_point_in(i+1), curve.get_point_out(i+1) )
out_sub_curves.push_back(sub_curve)
return out_sub_curves