This patch refactors the "Hair" data-block, which will soon be renamed to "Curves".
The larger change is switching from an array of HairCurve to find indices in the
points array to simply storing an array of offsets. Using a single integer instead of
two halves the amount of memory for that particular array. I've also found using
offsets directly works well in CurveEval::control_point_offsets() and
evaluated_point_offsets.
Besides that, there are some other changes in this patch:
- Split the data-structure to a separate CurveGeometry DNA struct so it is usable for grease pencil too.
- Update naming to be more pleasant, and more aligned with newer code and the style guide.
- Add direct access to arrays in RNA
- Radius is now retrieved as a regular attribute.
- HairPoint has been replaced with CurvePoint
- HairCurve has been replaced with CurveSlice
- Add comments to the struct in DNA.
The next steps are renaming Hair -> Curves, and adding support for other
curve types, Bezier, Poly, and NURBS.
Ref T95355