[Bf-blender-cvs] [0dc68aeff8e] curve-nodes-modifier: Merge branch 'master' into curve-nodes-modifier
Hans Goudey
noreply at git.blender.org
Tue Jul 13 01:40:44 CEST 2021
Commit: 0dc68aeff8e91b837ce8b769f3016503950e269f
Author: Hans Goudey
Date: Mon Jun 28 21:33:34 2021 -0500
Branches: curve-nodes-modifier
https://developer.blender.org/rB0dc68aeff8e91b837ce8b769f3016503950e269f
Merge branch 'master' into curve-nodes-modifier
===================================================================
===================================================================
diff --cc source/blender/blenkernel/intern/displist.cc
index 3faa1ff99ce,3048795ba45..719a8900aa9
--- a/source/blender/blenkernel/intern/displist.cc
+++ b/source/blender/blenkernel/intern/displist.cc
@@@ -1275,28 -1403,31 +1275,28 @@@ static void evaluate_curve_type_object(
Object *ob,
const bool for_render,
ListBase *r_dispbase,
- Mesh **r_final)
+ GeometrySet *r_geometry_set)
{
- const Curve *cu = (const Curve *)ob->data;
BLI_assert(ELEM(ob->type, OB_CURVE, OB_FONT));
+ const Curve *cu = (const Curve *)ob->data;
- ListBase nubase = {nullptr, nullptr};
-
- BKE_curve_bevelList_free(&ob->runtime.curve_cache->bev);
-
- if (ob->runtime.curve_cache->anim_path_accum_length) {
- MEM_freeN((void *)ob->runtime.curve_cache->anim_path_accum_length);
- }
- ob->runtime.curve_cache->anim_path_accum_length = nullptr;
+ ListBase *deformed_nurbs = &ob->runtime.curve_cache->deformed_nurbs;
if (ob->type == OB_FONT) {
- BKE_vfont_to_curve_nubase(ob, FO_EDIT, &nubase);
+ BKE_vfont_to_curve_nubase(ob, FO_EDIT, deformed_nurbs);
}
else {
- BKE_nurbList_duplicate(&nubase, BKE_curve_nurbs_get(const_cast<Curve *>(cu)));
+ BKE_nurbList_duplicate(deformed_nurbs, BKE_curve_nurbs_get(const_cast<Curve *>(cu)));
}
- bool force_mesh_conversion = BKE_curve_calc_modifiers_pre(
- depsgraph, scene, ob, &nubase, &nubase, for_render);
+ BKE_curve_calc_modifiers_pre(depsgraph, scene, ob, deformed_nurbs, deformed_nurbs, for_render);
+
+ BKE_curve_bevelList_make(ob, deformed_nurbs, for_render);
- BKE_curve_bevelList_make(ob, &nubase, for_render);
+ if ((cu->flag & CU_PATH) ||
+ DEG_get_eval_flags_for_id(depsgraph, &ob->id) & DAG_EVAL_NEED_CURVE_PATH) {
+ BKE_anim_path_calc_data(ob);
+ }
/* If curve has no bevel will return nothing */
ListBase dlbev = BKE_curve_bevel_make(cu);
@@@ -1512,20 -1660,18 +1512,20 @@@ void BKE_displist_make_curveTypes(Depsg
}
void BKE_displist_make_curveTypes_forRender(
- Depsgraph *depsgraph, const Scene *scene, Object *ob, ListBase *dispbase, Mesh **r_final)
+ Depsgraph *depsgraph, const Scene *scene, Object *ob, ListBase *r_dispbase, Mesh **r_final)
{
if (ob->runtime.curve_cache == nullptr) {
- ob->runtime.curve_cache = (CurveCache *)MEM_callocN(sizeof(CurveCache),
- "CurveCache for Curve");
+ ob->runtime.curve_cache = (CurveCache *)MEM_callocN(sizeof(CurveCache), __func__);
}
if (ob->type == OB_SURF) {
- evaluate_surface_object(depsgraph, scene, ob, true, dispbase, r_final);
+ evaluate_surface_object(depsgraph, scene, ob, true, r_dispbase, r_final);
}
else {
- evaluate_curve_type_object(depsgraph, scene, ob, true, r_dispbase, r_final);
+ GeometrySet geometry_set;
- evaluate_curve_type_object(depsgraph, scene, ob, true, dispbase, &geometry_set);
++ evaluate_curve_type_object(depsgraph, scene, ob, true, r_dispbase, &geometry_set);
+ MeshComponent &mesh_component = geometry_set.get_component_for_write<MeshComponent>();
+ *r_final = mesh_component.release();
}
}
More information about the Bf-blender-cvs
mailing list