re-arrange modifier and blenkernel to overcome some linking problems that stopped modifiers being able to build when using some blender-kernel defined stuff

This commit is contained in:
Campbell Barton 2010-04-25 01:10:03 +00:00
parent 2cec60e2eb
commit b37ae4a375
5 changed files with 54 additions and 45 deletions

@ -54,50 +54,8 @@ ModifierTypeInfo *modifierType_getInfo(ModifierType type)
static int types_init = 1; static int types_init = 1;
if (types_init) { if (types_init) {
memset(types, 0, sizeof(types)); modifier_type_init(types, type); /* MOD_utils.c */
types_init= 0;
#define INIT_TYPE(typeName) \
(types[eModifierType_##typeName] = &modifierType_##typeName)
INIT_TYPE(None);
INIT_TYPE(Curve);
INIT_TYPE(Lattice);
INIT_TYPE(Subsurf);
INIT_TYPE(Build);
INIT_TYPE(Array);
INIT_TYPE(Mirror);
INIT_TYPE(EdgeSplit);
INIT_TYPE(Bevel);
INIT_TYPE(Displace);
INIT_TYPE(UVProject);
INIT_TYPE(Decimate);
INIT_TYPE(Smooth);
INIT_TYPE(Cast);
INIT_TYPE(Wave);
INIT_TYPE(Armature);
INIT_TYPE(Hook);
INIT_TYPE(Softbody);
INIT_TYPE(Cloth);
INIT_TYPE(Collision);
INIT_TYPE(Boolean);
INIT_TYPE(MeshDeform);
INIT_TYPE(ParticleSystem);
INIT_TYPE(ParticleInstance);
INIT_TYPE(Explode);
INIT_TYPE(Shrinkwrap);
INIT_TYPE(Fluidsim);
INIT_TYPE(Mask);
INIT_TYPE(SimpleDeform);
INIT_TYPE(Multires);
INIT_TYPE(Surface);
INIT_TYPE(Smoke);
INIT_TYPE(ShapeKey);
INIT_TYPE(Solidify);
INIT_TYPE(Screw);
types_init = 0;
#undef INIT_TYPE
} }
if(type >= 0 && type < NUM_MODIFIER_TYPES && if(type >= 0 && type < NUM_MODIFIER_TYPES &&

@ -68,4 +68,7 @@ extern ModifierTypeInfo modifierType_ShapeKey;
extern ModifierTypeInfo modifierType_Solidify; extern ModifierTypeInfo modifierType_Solidify;
extern ModifierTypeInfo modifierType_Screw; extern ModifierTypeInfo modifierType_Screw;
/* MOD_util.c */
void modifier_type_init(ModifierTypeInfo *types[], ModifierType type);
#endif //MOD_MODIFIERTYPES_H #endif //MOD_MODIFIERTYPES_H

@ -40,8 +40,10 @@
#include "BKE_mesh.h" #include "BKE_mesh.h"
#include "BKE_displist.h" #include "BKE_displist.h"
#include "BKE_utildefines.h" #include "BKE_utildefines.h"
#include "BKE_modifier.h"
#include "MOD_util.h" #include "MOD_util.h"
#include "MOD_modifiertypes.h"
#include "MEM_guardedalloc.h" #include "MEM_guardedalloc.h"
@ -165,3 +167,46 @@ DerivedMesh *get_dm(struct Scene *scene, Object *ob, struct EditMesh *em, Derive
return dm; return dm;
} }
/* only called by BKE_modifier.h/modifier.c */
void modifier_type_init(ModifierTypeInfo *types[], ModifierType type)
{
memset(types, 0, sizeof(types));
#define INIT_TYPE(typeName) (types[eModifierType_##typeName] = &modifierType_##typeName)
INIT_TYPE(None);
INIT_TYPE(Curve);
INIT_TYPE(Lattice);
INIT_TYPE(Subsurf);
INIT_TYPE(Build);
INIT_TYPE(Array);
INIT_TYPE(Mirror);
INIT_TYPE(EdgeSplit);
INIT_TYPE(Bevel);
INIT_TYPE(Displace);
INIT_TYPE(UVProject);
INIT_TYPE(Decimate);
INIT_TYPE(Smooth);
INIT_TYPE(Cast);
INIT_TYPE(Wave);
INIT_TYPE(Armature);
INIT_TYPE(Hook);
INIT_TYPE(Softbody);
INIT_TYPE(Cloth);
INIT_TYPE(Collision);
INIT_TYPE(Boolean);
INIT_TYPE(MeshDeform);
INIT_TYPE(ParticleSystem);
INIT_TYPE(ParticleInstance);
INIT_TYPE(Explode);
INIT_TYPE(Shrinkwrap);
INIT_TYPE(Fluidsim);
INIT_TYPE(Mask);
INIT_TYPE(SimpleDeform);
INIT_TYPE(Multires);
INIT_TYPE(Surface);
INIT_TYPE(Smoke);
INIT_TYPE(ShapeKey);
INIT_TYPE(Solidify);
INIT_TYPE(Screw);
#undef INIT_TYPE
}

@ -42,4 +42,7 @@ void modifier_vgroup_cache(struct ModifierData *md, float (*vertexCos)[3]);
void validate_layer_name(const struct CustomData *data, int type, char *name, char *outname); void validate_layer_name(const struct CustomData *data, int type, char *name, char *outname);
struct DerivedMesh *get_cddm(struct Scene *scene, struct Object *ob, struct EditMesh *em, struct DerivedMesh *dm, float (*vertexCos)[3]); struct DerivedMesh *get_cddm(struct Scene *scene, struct Object *ob, struct EditMesh *em, struct DerivedMesh *dm, float (*vertexCos)[3]);
struct DerivedMesh *get_dm(struct Scene *scene, struct Object *ob, struct EditMesh *em, struct DerivedMesh *dm, float (*vertexCos)[3], int orco); struct DerivedMesh *get_dm(struct Scene *scene, struct Object *ob, struct EditMesh *em, struct DerivedMesh *dm, float (*vertexCos)[3], int orco);
void modifier_type_init(struct ModifierTypeInfo *types[], ModifierType type);
#endif /* MOD_UTIL_H */ #endif /* MOD_UTIL_H */

@ -369,8 +369,8 @@ ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
bf_python bf_python
bf_gen_python bf_gen_python
bf_ikplugin bf_ikplugin
bf_blenkernel
bf_modifiers bf_modifiers
bf_blenkernel
bf_nodes bf_nodes
bf_gpu bf_gpu
bf_blenloader bf_blenloader