Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenkernel/intern/modifier.c
| Show First 20 Lines • Show All 102 Lines • ▼ Show 20 Lines | void BKE_modifier_init(void) | ||||
| virtualModifierCommonData.cmd.modifier.mode |= eModifierMode_Virtual; | virtualModifierCommonData.cmd.modifier.mode |= eModifierMode_Virtual; | ||||
| virtualModifierCommonData.lmd.modifier.mode |= eModifierMode_Virtual; | virtualModifierCommonData.lmd.modifier.mode |= eModifierMode_Virtual; | ||||
| virtualModifierCommonData.smd.modifier.mode |= eModifierMode_Virtual; | virtualModifierCommonData.smd.modifier.mode |= eModifierMode_Virtual; | ||||
| } | } | ||||
| const ModifierTypeInfo *modifierType_getInfo(ModifierType type) | const ModifierTypeInfo *modifierType_getInfo(ModifierType type) | ||||
| { | { | ||||
| /* type unsigned, no need to check < 0 */ | /* type unsigned, no need to check < 0 */ | ||||
| if (type < NUM_MODIFIER_TYPES && modifier_types[type]->name[0] != '\0') { | if (type < NUM_MODIFIER_TYPES && modifier_types[type] && | ||||
| modifier_types[type]->name[0] != '\0') | |||||
| { | |||||
| return modifier_types[type]; | return modifier_types[type]; | ||||
| } | } | ||||
| else { | else { | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| } | } | ||||
| /***/ | /***/ | ||||
| Show All 29 Lines | static void modifier_free_data_id_us_cb(void *UNUSED(userData), | ||||
| ID *id = *idpoin; | ID *id = *idpoin; | ||||
| if (id != NULL && (cb_flag & IDWALK_CB_USER) != 0) { | if (id != NULL && (cb_flag & IDWALK_CB_USER) != 0) { | ||||
| id_us_min(id); | id_us_min(id); | ||||
| } | } | ||||
| } | } | ||||
| void modifier_free_ex(ModifierData *md, const int flag) | void modifier_free_ex(ModifierData *md, const int flag) | ||||
| { | { | ||||
| const ModifierTypeInfo *mti = modifierType_getInfo(md->type); | const ModifierTypeInfo *mti = modifierType_getInfo(md->type); | ||||
campbellbarton: Why is this needed? (should be commented). | |||||
| if ((flag & LIB_ID_CREATE_NO_USER_REFCOUNT) == 0) { | if ((flag & LIB_ID_CREATE_NO_USER_REFCOUNT) == 0) { | ||||
| if (mti->foreachIDLink) { | if (mti->foreachIDLink) { | ||||
| mti->foreachIDLink(md, NULL, modifier_free_data_id_us_cb, NULL); | mti->foreachIDLink(md, NULL, modifier_free_data_id_us_cb, NULL); | ||||
| } | } | ||||
| else if (mti->foreachObjectLink) { | else if (mti->foreachObjectLink) { | ||||
| mti->foreachObjectLink(md, NULL, (ObjectWalkFunc)modifier_free_data_id_us_cb, NULL); | mti->foreachObjectLink(md, NULL, (ObjectWalkFunc)modifier_free_data_id_us_cb, NULL); | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 879 Lines • Show Last 20 Lines | |||||
Why is this needed? (should be commented).