This commit changes `CurveComponent` to store the new curve
type by adding conversions to and from `CurveEval` in everymost nodes.
This will temporarily make performance of curves in geometry nodes
much worse, but as functionality is implemented for the new type
and it is used in more places, performance will improvebecome better than before.
We still use `CurveEval` for drawing curves, because the new structure`Curves`
data-block has no evaluated points yet,yet. existing cSo the `Curve types aren't supported for` ID is still generated
drawfor rendering in the viewport,same way as before. and we need a `Curve` ID toIt's also still needed for draw curve editing
mode selections at the moment anywaycurve object edit mode overlays.
The old curve component isn't removed yet, because it had specialis still used to
implementations for some attributes like position (also moving theprovide the attribute API used to implement the conversions back and
handles) that will be implemented differently in the near futureforth.
TODO:A few more attributes are added to make this possible:
- Bezier handle types- `nurbs_weight`: The weight for each control point on NURBS curves (D12004)
- NURBS knots information`nurbs_order`: The order of the NURBS curve
- `knots_mode`: This is less defined at the moment, but still necessary for conversion.
- `handle_type_{left/right}`: An 8 bit integer attribute.