modifiers_isCorrectableDeformed now checks a modifier is enabled before returning true,
also check deformMatricesEM callback for modifier_isCorrectableDeformed() rather then checking modifier types.
This commit is contained in:
parent
74828cc609
commit
9794c70f65
|
@ -354,7 +354,7 @@ struct Object *modifiers_isDeformedByArmature(struct Object *ob);
|
|||
struct Object *modifiers_isDeformedByLattice(struct Object *ob);
|
||||
struct Object *modifiers_isDeformedByCurve(struct Object *ob);
|
||||
bool modifiers_usesArmature(struct Object *ob, struct bArmature *arm);
|
||||
bool modifiers_isCorrectableDeformed(struct Object *ob);
|
||||
bool modifiers_isCorrectableDeformed(struct Scene *scene, struct Object *ob);
|
||||
void modifier_freeTemporaryData(struct ModifierData *md);
|
||||
bool modifiers_isPreview(struct Object *ob);
|
||||
|
||||
|
|
|
@ -593,21 +593,21 @@ bool modifiers_usesArmature(Object *ob, bArmature *arm)
|
|||
|
||||
bool modifier_isCorrectableDeformed(ModifierData *md)
|
||||
{
|
||||
if (md->type == eModifierType_Armature)
|
||||
return true;
|
||||
if (md->type == eModifierType_ShapeKey)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
ModifierTypeInfo *mti = modifierType_getInfo(md->type);
|
||||
return (mti->deformMatricesEM != NULL);
|
||||
}
|
||||
|
||||
bool modifiers_isCorrectableDeformed(Object *ob)
|
||||
bool modifiers_isCorrectableDeformed(struct Scene *scene, Object *ob)
|
||||
{
|
||||
VirtualModifierData virtualModifierData;
|
||||
ModifierData *md = modifiers_getVirtualModifierList(ob, &virtualModifierData);
|
||||
int required_mode = eModifierMode_Realtime;
|
||||
|
||||
if (ob->mode == OB_MODE_EDIT)
|
||||
required_mode |= eModifierMode_Editmode;
|
||||
|
||||
for (; md; md = md->next) {
|
||||
if (ob->mode == OB_MODE_EDIT && (md->mode & eModifierMode_Editmode) == 0) {
|
||||
if (!modifier_isEnabled(scene, md, required_mode)) {
|
||||
/* pass */
|
||||
}
|
||||
else if (modifier_isCorrectableDeformed(md)) {
|
||||
|
|
|
@ -2219,7 +2219,7 @@ static void createTransEditVerts(TransInfo *t)
|
|||
/* detect CrazySpace [tm] */
|
||||
if (modifiers_getCageIndex(t->scene, t->obedit, NULL, 1) >= 0) {
|
||||
int totleft = -1;
|
||||
if (modifiers_isCorrectableDeformed(t->obedit)) {
|
||||
if (modifiers_isCorrectableDeformed(t->scene, t->obedit)) {
|
||||
/* check if we can use deform matrices for modifier from the
|
||||
* start up to stack, they are more accurate than quats */
|
||||
totleft = editbmesh_get_first_deform_matrices(t->scene, t->obedit, em, &defmats, &defcos);
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue