Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2005-07-20 00:14:17 +0400
committerDaniel Dunbar <daniel@zuster.org>2005-07-20 00:14:17 +0400
commit1df154d14026daf7837f7ed6ea6553145436ae52 (patch)
tree32eae4e00158f1c9a320ef524b4b53ad7ac4139d /source/blender/makesdna
parentf1763b2f0878096d5ddb5b6aa96bda71aaeb6be1 (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.h52
-rw-r--r--source/blender/makesdna/DNA_object_types.h1
-rw-r--r--source/blender/makesdna/intern/makesdna.c2
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"