CurveEval: Add total_length() and total_control_point_size() methods
Add the following methods to the CurveEval class:
total_length() : returns the total length of the curve without needing to
allocate a new array
total_control_point_size() : returns the total number of control points without
needing to allocate a new array
This commit is contained in:
@@ -580,6 +580,9 @@ struct CurveEval {
|
||||
blender::Array<int> evaluated_point_offsets() const;
|
||||
blender::Array<float> accumulated_spline_lengths() const;
|
||||
|
||||
float total_length() const;
|
||||
int total_control_point_size() const;
|
||||
|
||||
void mark_cache_invalid();
|
||||
|
||||
void assert_valid_point_attributes() const;
|
||||
|
||||
@@ -109,6 +109,24 @@ void CurveEval::bounds_min_max(float3 &min, float3 &max, const bool use_evaluate
|
||||
}
|
||||
}
|
||||
|
||||
float CurveEval::total_length() const
|
||||
{
|
||||
float length = 0.0f;
|
||||
for (const SplinePtr &spline : this->splines()) {
|
||||
length += spline->length();
|
||||
}
|
||||
return length;
|
||||
}
|
||||
|
||||
int CurveEval::total_control_point_size() const
|
||||
{
|
||||
int count = 0;
|
||||
for (const SplinePtr &spline : this->splines()) {
|
||||
count += spline->size();
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the start indices for each of the curve spline's control points, if they were part
|
||||
* of a flattened array. This can be used to facilitate parallelism by avoiding the need to
|
||||
|
||||
Reference in New Issue
Block a user