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:
parent
0129178376
commit
5ad4ca4e02
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue