Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenkernel/intern/modifier.c
| Show First 20 Lines • Show All 772 Lines • ▼ Show 20 Lines | if (md->type == eModifierType_Armature) { | ||||
| return true; | return true; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| return false; | return false; | ||||
| } | } | ||||
| bool modifiers_usesSubsurfFacedots(struct Scene *scene, Object *ob) | bool modifiers_usesSubsurfFacedots(struct Scene *scene, Object *ob, bool on_edit_cage) | ||||
| { | { | ||||
| /* Search (backward) in the modifier stack to find if we have a subsurf modifier (enabled) before | /* Search (backward) in the modifier stack to find if we have a subsurf modifier (enabled) before | ||||
| * the last modifier displayed on cage (or if the subsurf is the last). */ | * the last modifier displayed on cage (or if the subsurf is the last). */ | ||||
| VirtualModifierData virtualModifierData; | VirtualModifierData virtualModifierData; | ||||
| ModifierData *md = modifiers_getVirtualModifierList(ob, &virtualModifierData); | ModifierData *md = modifiers_getVirtualModifierList(ob, &virtualModifierData); | ||||
| ModifierMode mode = eModifierMode_Realtime | eModifierMode_Editmode; | |||||
| if (on_edit_cage) { | |||||
| mode |= eModifierMode_OnCage; | |||||
| } | |||||
| int cage_index = modifiers_getCageIndex(scene, ob, NULL, 1); | int cage_index = modifiers_getCageIndex(scene, ob, NULL, 1); | ||||
| /* Find first modifier enabled on cage. */ | /* Find first modifier enabled on cage. */ | ||||
| for (int i = 0; md && i < cage_index; i++) { | for (int i = 0; md && i < cage_index; i++) { | ||||
| md = md->next; | md = md->next; | ||||
| } | } | ||||
| /* Now from this point, search for subsurf modifier. */ | /* Now from this point, search for subsurf modifier. */ | ||||
| for (; md; md = md->prev) { | for (; md; md = md->prev) { | ||||
| const ModifierTypeInfo *mti = modifierType_getInfo(md->type); | const ModifierTypeInfo *mti = modifierType_getInfo(md->type); | ||||
| if (md->type == eModifierType_Subsurf) { | if (md->type == eModifierType_Subsurf) { | ||||
| ModifierMode mode = eModifierMode_Realtime | eModifierMode_Editmode; | |||||
| if (modifier_isEnabled(scene, md, mode)) { | if (modifier_isEnabled(scene, md, mode)) { | ||||
| return true; | return true; | ||||
| } | } | ||||
| } | } | ||||
| else if (mti->type == eModifierTypeType_OnlyDeform) { | else if (mti->type == eModifierTypeType_OnlyDeform) { | ||||
| /* Theses modifiers do not reset the subdiv flag nor change the topology. | /* Theses modifiers do not reset the subdiv flag nor change the topology. | ||||
| * We can still search for a subsurf modifier. */ | * We can still search for a subsurf modifier. */ | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 221 Lines • Show Last 20 Lines | |||||