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(); } } _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs