void BKE_modifier_init(void) { ModifierData *md; /* Initialize modifier types */ modifier_type_init(modifier_types); /* MOD_utils.c */ /* Initialize global cmmon storage used for virtual modifier list */ md = modifier_new(eModifierType_Armature); virtualModifierCommonData.amd = *((ArmatureModifierData *) md); modifier_free(md); md = modifier_new(eModifierType_Curve); virtualModifierCommonData.cmd = *((CurveModifierData *) md); modifier_free(md); md = modifier_new(eModifierType_Lattice); virtualModifierCommonData.lmd = *((LatticeModifierData *) md); modifier_free(md); md = modifier_new(eModifierType_ShapeKey); virtualModifierCommonData.smd = *((ShapeKeyModifierData *) md); modifier_free(md); virtualModifierCommonData.amd.modifier.mode |= eModifierMode_Virtual; virtualModifierCommonData.cmd.modifier.mode |= eModifierMode_Virtual; virtualModifierCommonData.lmd.modifier.mode |= eModifierMode_Virtual; virtualModifierCommonData.smd.modifier.mode |= eModifierMode_Virtual; }
ModifierTypeInfo *modifierType_getInfo(ModifierType type) { static ModifierTypeInfo *types[NUM_MODIFIER_TYPES]= {NULL}; static int types_init = 1; if (types_init) { modifier_type_init(types); /* MOD_utils.c */ types_init= 0; } /* type unsigned, no need to chech < 0 */ if(type < NUM_MODIFIER_TYPES && types[type]->name[0] != '\0') { return types[type]; } else { return NULL; } }