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:
authorJoshua Leung <aligorith@gmail.com>2009-04-13 06:57:24 +0400
committerJoshua Leung <aligorith@gmail.com>2009-04-13 06:57:24 +0400
commitb27e240124a89b6ab09eda33b90b457999d566c7 (patch)
treee6cab419383c7d4ba2b12f7020428d1da8821c6e
parentb27436af7c6956be1de46e7903ab96562f080469 (diff)
Further simplified code for defining builtin KeyingSets (i.e. made the macros do more!)
-rw-r--r--source/blender/editors/animation/keyingsets.c77
1 files changed, 45 insertions, 32 deletions
diff --git a/source/blender/editors/animation/keyingsets.c b/source/blender/editors/animation/keyingsets.c
index 513e1bf5b21..63bab10aef3 100644
--- a/source/blender/editors/animation/keyingsets.c
+++ b/source/blender/editors/animation/keyingsets.c
@@ -642,6 +642,8 @@ typedef enum eKS_Contexts {
* Therefore, here we have a system with nice, human-readable statements via macros, and static arrays which
* are linked together using more special macros + struct definitions, allowing for such a generic + simple
* initialisation function (init_builtin_keyingsets()) compared with that of something like the Nodes system.
+ *
+ * -- Joshua Leung, April 2009
*/
/* Struct type for declaring builtin KeyingSets in as entries in static arrays*/
@@ -656,8 +658,12 @@ typedef struct bBuiltinKeyingSet {
*/
/* macro for defining a builtin KeyingSet */
-#define BI_KS_DEFINE(name, keyingflag) \
- {NULL, NULL, {NULL, NULL}, name, KEYINGSET_BUILTIN, keyingflag}
+#define BI_KS_DEFINE_BEGIN(name, keyingflag) \
+ {{NULL, NULL, {NULL, NULL}, name, KEYINGSET_BUILTIN, keyingflag},
+
+/* macro to finish defining a builtin KeyingSet */
+#define BI_KS_DEFINE_END \
+ }
/* macro to start defining paths for a builtin KeyingSet */
#define BI_KS_PATHS_BEGIN(tot) \
@@ -671,6 +677,10 @@ typedef struct bBuiltinKeyingSet {
#define BI_KSP_DEFINE(id_type, templates, prop_path, array_index, flag, groupflag) \
{NULL, NULL, NULL, "", id_type, templates, prop_path, array_index, flag, groupflag}
+/* macro for defining a builtin KeyingSet with no paths (use in place of BI_KS_PAHTS_BEGIN/END block) */
+#define BI_KS_PATHS_NONE \
+ 0, {0}
+
/* ---- */
/* Struct type for finding all the arrays of builtin KeyingSets */
@@ -691,63 +701,66 @@ static bBuiltinKeyingSet def_builtin_keyingsets_v3d[] =
{
/* Simple Keying Sets ************************************* */
/* Keying Set - "Location" ---------- */
- {
- /* KeyingSet Definition */
- BI_KS_DEFINE("Location", 0),
-
- /* Path Definitions */
+ BI_KS_DEFINE_BEGIN("Location", 0)
BI_KS_PATHS_BEGIN(1)
BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN, "location", 0, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_KSNAME)
BI_KS_PATHS_END
- },
+ BI_KS_DEFINE_END,
/* Keying Set - "Rotation" ---------- */
- {
- /* KeyingSet Definition */
- BI_KS_DEFINE("Rotation", 0),
-
- /* Path Definitions */
+ BI_KS_DEFINE_BEGIN("Rotation", 0)
BI_KS_PATHS_BEGIN(1)
BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN, "rotation", 0, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_KSNAME)
BI_KS_PATHS_END
- },
+ BI_KS_DEFINE_END,
/* Keying Set - "Scaling" ---------- */
- {
- /* KeyingSet Definition */
- BI_KS_DEFINE("Scaling", 0),
-
- /* Path Definitions */
+ BI_KS_DEFINE_BEGIN("Scaling", 0)
BI_KS_PATHS_BEGIN(1)
BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN, "scale", 0, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_KSNAME)
BI_KS_PATHS_END
- },
+ BI_KS_DEFINE_END,
/* Compound Keying Sets *********************************** */
/* Keying Set - "LocRot" ---------- */
- {
- /* KeyingSet Definition */
- BI_KS_DEFINE("LocRot", 0),
-
- /* Path Definitions */
+ BI_KS_DEFINE_BEGIN("LocRot", 0)
BI_KS_PATHS_BEGIN(2)
BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN, "location", 0, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_KSNAME),
BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN, "rotation", 0, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_KSNAME)
BI_KS_PATHS_END
- },
+ BI_KS_DEFINE_END,
/* Keying Set - "LocRotScale" ---------- */
- {
- /* KeyingSet Definition */
- BI_KS_DEFINE("LocRotScale", 0),
-
- /* Path Definitions */
+ BI_KS_DEFINE_BEGIN("LocRotScale", 0)
BI_KS_PATHS_BEGIN(2)
BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN, "location", 0, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_KSNAME),
BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN, "rotation", 0, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_KSNAME),
BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN, "scale", 0, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_KSNAME)
BI_KS_PATHS_END
- }
+ BI_KS_DEFINE_END,
+
+ /* Keying Sets with Keying Flags ************************* */
+ /* Keying Set - "VisualLoc" ---------- */
+ BI_KS_DEFINE_BEGIN("VisualLoc", 0)
+ BI_KS_PATHS_BEGIN(1)
+ BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN, "location", INSERTKEY_MATRIX, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_KSNAME)
+ BI_KS_PATHS_END
+ BI_KS_DEFINE_END,
+
+ /* Keying Set - "Rotation" ---------- */
+ BI_KS_DEFINE_BEGIN("VisualRot", 0)
+ BI_KS_PATHS_BEGIN(1)
+ BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN, "rotation", INSERTKEY_MATRIX, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_KSNAME)
+ BI_KS_PATHS_END
+ BI_KS_DEFINE_END,
+
+ /* Keying Set - "VisualLocRot" ---------- */
+ BI_KS_DEFINE_BEGIN("VisualLocRot", 0)
+ BI_KS_PATHS_BEGIN(2)
+ BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN, "location", INSERTKEY_MATRIX, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_KSNAME),
+ BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN, "rotation", INSERTKEY_MATRIX, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_KSNAME)
+ BI_KS_PATHS_END
+ BI_KS_DEFINE_END
};
/* All Builtin KeyingSets ------------------------ */