diff options
author | Daniel Dunbar <daniel@zuster.org> | 2005-07-20 00:14:17 +0400 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2005-07-20 00:14:17 +0400 |
commit | 1df154d14026daf7837f7ed6ea6553145436ae52 (patch) | |
tree | 32eae4e00158f1c9a320ef524b4b53ad7ac4139d /source/blender/makesdna | |
parent | f1763b2f0878096d5ddb5b6aa96bda71aaeb6be1 (diff) |
- split {curve,lattice,armature}_deform_verts out of mesh_deform
- removed mesh_deform (merge into mesh_modifier)
- switch python lattice_apply function to use object_apply_deform,
this isn't exactly equivalent but the python system shouldn't
have been calling that deep into the kernel anyway.
New feature: Modifier stack
- added Object.modifiers (list of ModifierData elements)
- added DNA_modifier_types.h
o contains type definition for the file data for the various
modifier types
- added BKE_modifier.h
o contains modifierType_get_info (access to modifier type registry)
o structs and defines for runtime modifier usage
- updated mesh_calc_modifiers to evaluate modifier stack (note that
for the time being it also evaluates the old style modifiers so files
should load and work as normal).
- add file handling modifier code (todo: don't replicate on object copy)
- add modifier stack UI code (lives in object panel)
Only real new feature at the moment is that you can apply lattices and
curves *after* a subdivision surface which was never possible before.
Todo:
- DEP graph updating does not work correctly yet, so you generally have
to tab cycle to see results.
- editmode calculation does not use modifier stack.
- bug fixes (there must be a few in there somewhere)
Diffstat (limited to 'source/blender/makesdna')
-rw-r--r-- | source/blender/makesdna/DNA_modifier_types.h | 52 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_object_types.h | 1 | ||||
-rw-r--r-- | source/blender/makesdna/intern/makesdna.c | 2 |
3 files changed, 55 insertions, 0 deletions
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h new file mode 100644 index 00000000000..486fc68785c --- /dev/null +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -0,0 +1,52 @@ +/** + * $Id$ + */ + +#ifndef DNA_MODIFIER_TYPES_H +#define DNA_MODIFIER_TYPES_H + +typedef enum ModifierType { + eModifierType_None = 0, + eModifierType_Subsurf, + eModifierType_Lattice, + eModifierType_Curve, + + NUM_MODIFIER_TYPES +} ModifierType; + + /* These numerical values are explicitly chosen so that + * (mode&1) is true for realtime calc and (mode&2) is true + * for render calc. + */ +typedef enum ModifierMode { + eModifierMode_Disabled = 0, + eModifierMode_OnlyRealtime = 1, + eModifierMode_OnlyRender = 2, + eModifierMode_RealtimeAndRender = 3, +} ModifierMode; + +typedef struct ModifierData { + struct ModifierData *next, *prev; + + int type, mode; +} ModifierData; + +typedef struct SubsurfModifierData { + ModifierData modifier; + + short subdivType, levels, renderLevels, pad; +} SubsurfModifierData; + +typedef struct LatticeModifierData { + ModifierData modifier; + + struct Object *object; +} LatticeModifierData; + +typedef struct CurveModifierData { + ModifierData modifier; + + struct Object *object; +} CurveModifierData; + +#endif diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h index 5959f6da594..ee55dcb19fb 100644 --- a/source/blender/makesdna/DNA_object_types.h +++ b/source/blender/makesdna/DNA_object_types.h @@ -103,6 +103,7 @@ typedef struct Object { ListBase network; ListBase disp; ListBase defbase; + ListBase modifiers; /* list of ModifierData structures */ struct Material **mat; /* rot en drot have to be together! (transform('r' en 's')) */ diff --git a/source/blender/makesdna/intern/makesdna.c b/source/blender/makesdna/intern/makesdna.c index 200639cd402..5a8a13f7d50 100644 --- a/source/blender/makesdna/intern/makesdna.c +++ b/source/blender/makesdna/intern/makesdna.c @@ -93,6 +93,7 @@ char *includefiles[] = { "DNA_curve_types.h", "DNA_mesh_types.h", "DNA_meshdata_types.h", + "DNA_modifier_types.h", "DNA_lattice_types.h", "DNA_object_types.h", "DNA_object_force.h", @@ -1107,6 +1108,7 @@ int main(int argc, char ** argv) #include "DNA_curve_types.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" +#include "DNA_modifier_types.h" #include "DNA_lattice_types.h" #include "DNA_object_types.h" #include "DNA_object_force.h" |