Eventually every use of `BKE_where_on_path` will have to be removed or support will need to be added for the new curves object type, but this task is just about the two constraints that use evaluated positions, tangents, and normals of the first curve at a specific factor.
The eventual idea is to use versioning to change all legacy curve objects to the new curves object type, so this will have to be addressed for that transition. But the change can also make animation workflows more intuitive and consistent with other Blender design.
### Path Animation Settings
{F13122757 size=full}
In order to support the new curves object, the "Path Animation" settings from the legacy curve object will have to be moved to the contraints that support them, because the new curves data-block will not store those specific settings. Any animation on the curve's path animation settings should also be moved to the constraint.
It's not important to make the design for the constraint perfect, since the long term goal is to replace them with a node based system anyway. The path animation constraint will then need these new settings:
- "Frames"
- "Evaluation Time"
- "Clamp"
After the change, the "Path Animation" panel wouldn't exist anymore.
### Parenting
{F13122766 size=full}
The new curves object should **not** support the special parenting behavior for the legacy curve object that uses the path animation settings instead of regular parenting. This behavior will have to be removed with versioning, replaced with a proper follow path constraint, as described above.
### Open Questions
**What happens when there is no evaluated curve**
Previously the constraints used the original curve with some set of the deformation modifiers applied. That was often problematic because what looked like a curve visually in the viewport was actually a mesh, so the constraints wouldn't work. Now we have a more precise definition of the evaluated curves, which is different than before.
This is potentially problematic, because the changes suggested above could introduce regressions. I would suggest using the original curve //without any modifiers// applied in this case. This behavior is still slightly different, but it is simple and easy to predict, and doesn't involve keeping track of a "pre-tesselation point" in the middle of modifier/nodes evaluation, which is basically a non-starter for the new curves object.
### Todo
- [ ] Implement updates to sample curve node (the constraints need to use that internally) (T95443)
- [ ] Update constraints to use the new evaluated curves data
- [ ] Follow path constraint
- [ ] Clamp To constraint
- [ ] Move path animation settings to constraints
- [ ] Remove special parenting behavior by adding follow path constraints