Subsurf: Remove edit mesh modifier callbacks
Those were used for partial updates during edit mode, which will not be possible anymore with OpenSubdiv. Optimization for OpenSubdiv would be to re-use topology refiner if topology does not change. But this is something to be done for both edit and object modes, no need to have separate code paths for those. This commit makes OpenSubdiv to properly work in edit mode.
This commit is contained in:
parent
f1f0666bfc
commit
6e3a9b9313
|
@ -139,35 +139,6 @@ applyModifier_DM_wrapper(applyModifier, applyModifier_DM)
|
|||
|
||||
#endif
|
||||
|
||||
static DerivedMesh *applyModifierEM_DM(
|
||||
ModifierData *md, const ModifierEvalContext *ctx,
|
||||
struct BMEditMesh *UNUSED(editData),
|
||||
DerivedMesh *derivedData)
|
||||
{
|
||||
SubsurfModifierData *smd = (SubsurfModifierData *) md;
|
||||
struct Scene *scene = DEG_get_evaluated_scene(ctx->depsgraph);
|
||||
DerivedMesh *result;
|
||||
/* 'orco' using editmode flags would cause cache to be used twice in editbmesh_calc_modifiers */
|
||||
SubsurfFlags ss_flags = (ctx->flag & MOD_APPLY_ORCO) ? 0 : (SUBSURF_FOR_EDIT_MODE | SUBSURF_IN_EDIT_MODE);
|
||||
|
||||
result = subsurf_make_derived_from_derived(derivedData, smd, scene, NULL, ss_flags);
|
||||
return result;
|
||||
}
|
||||
|
||||
static Mesh *applyModifierEM(
|
||||
struct ModifierData *md, const struct ModifierEvalContext *ctx,
|
||||
struct BMEditMesh *editData,
|
||||
struct Mesh *mesh)
|
||||
{
|
||||
DerivedMesh *dm = CDDM_from_mesh_ex(mesh, CD_REFERENCE, CD_MASK_EVERYTHING);
|
||||
DerivedMesh *ndm = applyModifierEM_DM(md, ctx, editData, dm);
|
||||
if (ndm != dm) {
|
||||
dm->release(dm);
|
||||
}
|
||||
DM_to_mesh(ndm, mesh, ctx->object, CD_MASK_EVERYTHING, true);
|
||||
return mesh;
|
||||
}
|
||||
|
||||
#ifdef WITH_OPENSUBDIV_MODIFIER
|
||||
static int subdiv_levels_for_modifier_get(const SubsurfModifierData *smd,
|
||||
const ModifierEvalContext *ctx)
|
||||
|
@ -307,7 +278,7 @@ ModifierTypeInfo modifierType_Subsurf = {
|
|||
#else
|
||||
/* applyModifier */ applyModifier,
|
||||
#endif
|
||||
/* applyModifierEM */ applyModifierEM,
|
||||
/* applyModifierEM */ NULL,
|
||||
|
||||
/* initData */ initData,
|
||||
/* requiredDataMask */ NULL,
|
||||
|
|
Loading…
Reference in New Issue