Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles/blender/blender_curves.cpp')
-rw-r--r--intern/cycles/blender/blender_curves.cpp28
1 files changed, 13 insertions, 15 deletions
diff --git a/intern/cycles/blender/blender_curves.cpp b/intern/cycles/blender/blender_curves.cpp
index 61628aae535..2e9a32f15f2 100644
--- a/intern/cycles/blender/blender_curves.cpp
+++ b/intern/cycles/blender/blender_curves.cpp
@@ -652,11 +652,10 @@ void ExportCurveTriangleGeometry(Mesh *mesh, ParticleCurveData *CData, int inter
void ExportCurveSegments(Mesh *mesh, ParticleCurveData *CData, int interpolation, int segments)
{
- int cks = 0;
- int curs = 0;
- int segs = 0;
+ int num_keys = 0;
+ int num_curves = 0;
- if(!(mesh->curve_segments.empty() && mesh->curve_keys.empty()))
+ if(!(mesh->curves.empty() && mesh->curve_keys.empty()))
return;
Attribute *attr_uv = mesh->curve_attributes.add(ATTR_STD_UV);
@@ -672,6 +671,8 @@ void ExportCurveSegments(Mesh *mesh, ParticleCurveData *CData, int interpolation
if(CData->curve_keynum[curve] <= 1)
continue;
+ size_t num_curve_keys = 0;
+
for( int curvekey = CData->curve_firstkey[curve]; curvekey < CData->curve_firstkey[curve] + CData->curve_keynum[curve] - 1; curvekey++) {
int subv = 1;
@@ -696,26 +697,23 @@ void ExportCurveSegments(Mesh *mesh, ParticleCurveData *CData, int interpolation
mesh->add_curve_key(ickey_loc, radius);
attr_intercept->add(time);
- if(subv != 0) {
- attr_uv->add(CData->curve_uv[curve]);
- mesh->add_curve_segment(cks - 1, cks, CData->psys_shader[sys], curs);
- segs++;
- }
-
- cks++;
+ num_curve_keys++;
}
}
- curs++;
+ mesh->add_curve(num_keys, num_curve_keys, CData->psys_shader[sys]);
+ attr_uv->add(CData->curve_uv[curve]);
+ num_keys += num_curve_keys;
+ num_curves++;
}
}
/* check allocation*/
- if((mesh->curve_keys.size() != cks) || (mesh->curve_segments.size() != segs)) {
+ if((mesh->curve_keys.size() != num_keys) || (mesh->curves.size() != num_curves)) {
/* allocation failed -> clear data */
mesh->curve_keys.clear();
- mesh->curve_segments.clear();
+ mesh->curves.clear();
mesh->curve_attributes.clear();
}
}
@@ -824,7 +822,7 @@ void BlenderSync::sync_curves(Mesh *mesh, BL::Mesh b_mesh, BL::Object b_ob, bool
{
/* Clear stored curve data */
mesh->curve_keys.clear();
- mesh->curve_segments.clear();
+ mesh->curves.clear();
mesh->curve_attributes.clear();
/* obtain general settings */