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:
authorCampbell Barton <ideasman42@gmail.com>2019-04-17 07:17:24 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-04-17 07:21:24 +0300
commite12c08e8d170b7ca40f204a5b0423c23a9fbc2c1 (patch)
tree8cf3453d12edb177a218ef8009357518ec6cab6a /source/blender/makesdna/DNA_anim_types.h
parentb3dabc200a4b0399ec6b81f2ff2730d07b44fcaa (diff)
ClangFormat: apply to source, most of intern
Apply clang format as proposed in T53211. For details on usage and instructions for migrating branches without conflicts, see: https://wiki.blender.org/wiki/Tools/ClangFormat
Diffstat (limited to 'source/blender/makesdna/DNA_anim_types.h')
-rw-r--r--source/blender/makesdna/DNA_anim_types.h1420
1 files changed, 701 insertions, 719 deletions
diff --git a/source/blender/makesdna/DNA_anim_types.h b/source/blender/makesdna/DNA_anim_types.h
index 9125d8e6b60..48771410fcc 100644
--- a/source/blender/makesdna/DNA_anim_types.h
+++ b/source/blender/makesdna/DNA_anim_types.h
@@ -45,31 +45,31 @@ extern "C" {
* when evaluating the curve's data at some time (t).
*/
typedef struct FModifier {
- struct FModifier *next, *prev;
-
- /** Containing curve, only used for updates to CYCLES. */
- struct FCurve *curve;
- /** Pointer to modifier data. */
- void *data;
-
- /** User-defined description for the modifier - MAX_ID_NAME-2. */
- char name[64];
- /** Type of f-curve modifier. */
- short type;
- /** Settings for the modifier. */
- short flag;
-
- /** The amount that the modifier should influence the value. */
- float influence;
-
- /** Start frame of restricted frame-range. */
- float sfra;
- /** End frame of restricted frame-range. */
- float efra;
- /** Number of frames from sfra before modifier takes full influence. */
- float blendin;
- /** Number of frames from efra before modifier fades out. */
- float blendout;
+ struct FModifier *next, *prev;
+
+ /** Containing curve, only used for updates to CYCLES. */
+ struct FCurve *curve;
+ /** Pointer to modifier data. */
+ void *data;
+
+ /** User-defined description for the modifier - MAX_ID_NAME-2. */
+ char name[64];
+ /** Type of f-curve modifier. */
+ short type;
+ /** Settings for the modifier. */
+ short flag;
+
+ /** The amount that the modifier should influence the value. */
+ float influence;
+
+ /** Start frame of restricted frame-range. */
+ float sfra;
+ /** End frame of restricted frame-range. */
+ float efra;
+ /** Number of frames from sfra before modifier takes full influence. */
+ float blendin;
+ /** Number of frames from efra before modifier fades out. */
+ float blendout;
} FModifier;
/**
@@ -77,73 +77,71 @@ typedef struct FModifier {
* WARNING: order here is important!
*/
typedef enum eFModifier_Types {
- FMODIFIER_TYPE_NULL = 0,
- FMODIFIER_TYPE_GENERATOR = 1,
- FMODIFIER_TYPE_FN_GENERATOR = 2,
- FMODIFIER_TYPE_ENVELOPE = 3,
- FMODIFIER_TYPE_CYCLES = 4,
- FMODIFIER_TYPE_NOISE = 5,
- /** Unimplemented - for applying: fft, high/low pass filters, etc. */
- FMODIFIER_TYPE_FILTER = 6,
- FMODIFIER_TYPE_PYTHON = 7,
- FMODIFIER_TYPE_LIMITS = 8,
- FMODIFIER_TYPE_STEPPED = 9,
-
- /* NOTE: all new modifiers must be added above this line */
- FMODIFIER_NUM_TYPES,
+ FMODIFIER_TYPE_NULL = 0,
+ FMODIFIER_TYPE_GENERATOR = 1,
+ FMODIFIER_TYPE_FN_GENERATOR = 2,
+ FMODIFIER_TYPE_ENVELOPE = 3,
+ FMODIFIER_TYPE_CYCLES = 4,
+ FMODIFIER_TYPE_NOISE = 5,
+ /** Unimplemented - for applying: fft, high/low pass filters, etc. */
+ FMODIFIER_TYPE_FILTER = 6,
+ FMODIFIER_TYPE_PYTHON = 7,
+ FMODIFIER_TYPE_LIMITS = 8,
+ FMODIFIER_TYPE_STEPPED = 9,
+
+ /* NOTE: all new modifiers must be added above this line */
+ FMODIFIER_NUM_TYPES,
} eFModifier_Types;
/** F-Curve Modifier Settings. */
typedef enum eFModifier_Flags {
- /** Modifier is not able to be evaluated for some reason, and should be skipped (internal). */
- FMODIFIER_FLAG_DISABLED = (1 << 0),
- /** Modifier's data is expanded (in UI). */
- FMODIFIER_FLAG_EXPANDED = (1 << 1),
- /** Modifier is active one (in UI) for editing purposes. */
- FMODIFIER_FLAG_ACTIVE = (1 << 2),
- /** User wants modifier to be skipped. */
- FMODIFIER_FLAG_MUTED = (1 << 3),
- /** Restrict range that F-Modifier can be considered over. */
- FMODIFIER_FLAG_RANGERESTRICT = (1 << 4),
- /** Use influence control. */
- FMODIFIER_FLAG_USEINFLUENCE = (1 << 5),
+ /** Modifier is not able to be evaluated for some reason, and should be skipped (internal). */
+ FMODIFIER_FLAG_DISABLED = (1 << 0),
+ /** Modifier's data is expanded (in UI). */
+ FMODIFIER_FLAG_EXPANDED = (1 << 1),
+ /** Modifier is active one (in UI) for editing purposes. */
+ FMODIFIER_FLAG_ACTIVE = (1 << 2),
+ /** User wants modifier to be skipped. */
+ FMODIFIER_FLAG_MUTED = (1 << 3),
+ /** Restrict range that F-Modifier can be considered over. */
+ FMODIFIER_FLAG_RANGERESTRICT = (1 << 4),
+ /** Use influence control. */
+ FMODIFIER_FLAG_USEINFLUENCE = (1 << 5),
} eFModifier_Flags;
/* --- */
/* Generator modifier data */
typedef struct FMod_Generator {
- /* general generator information */
- /** Coefficients array. */
- float *coefficients;
- /** Size of the coefficients array. */
- unsigned int arraysize;
-
- /** Order of polynomial generated (i.e. 1 for linear, 2 for quadratic). */
- int poly_order;
- /** Which 'generator' to use eFMod_Generator_Modes. */
- int mode;
-
- /** Settings. */
- int flag;
+ /* general generator information */
+ /** Coefficients array. */
+ float *coefficients;
+ /** Size of the coefficients array. */
+ unsigned int arraysize;
+
+ /** Order of polynomial generated (i.e. 1 for linear, 2 for quadratic). */
+ int poly_order;
+ /** Which 'generator' to use eFMod_Generator_Modes. */
+ int mode;
+
+ /** Settings. */
+ int flag;
} FMod_Generator;
/* generator modes */
typedef enum eFMod_Generator_Modes {
- FCM_GENERATOR_POLYNOMIAL = 0,
- FCM_GENERATOR_POLYNOMIAL_FACTORISED = 1,
+ FCM_GENERATOR_POLYNOMIAL = 0,
+ FCM_GENERATOR_POLYNOMIAL_FACTORISED = 1,
} eFMod_Generator_Modes;
-
/* generator flags
* - shared by Generator and Function Generator
*/
typedef enum eFMod_Generator_Flags {
- /* generator works in conjunction with other modifiers (i.e. doesn't replace those before it) */
- FCM_GENERATOR_ADDITIVE = (1 << 0),
+ /* generator works in conjunction with other modifiers (i.e. doesn't replace those before it) */
+ FCM_GENERATOR_ADDITIVE = (1 << 0),
} eFMod_Generator_Flags;
-
/**
* 'Built-In Function' Generator modifier data
*
@@ -154,156 +152,150 @@ typedef enum eFMod_Generator_Flags {
* x is the evaluation 'time', and 'y' is the resultant value
*/
typedef struct FMod_FunctionGenerator {
- /** Coefficients for general equation (as above). */
- float amplitude;
- float phase_multiplier;
- float phase_offset;
- float value_offset;
-
- /* flags */
- /** #eFMod_Generator_Functions. */
- int type;
- /** #eFMod_Generator_flags. */
- int flag;
+ /** Coefficients for general equation (as above). */
+ float amplitude;
+ float phase_multiplier;
+ float phase_offset;
+ float value_offset;
+
+ /* flags */
+ /** #eFMod_Generator_Functions. */
+ int type;
+ /** #eFMod_Generator_flags. */
+ int flag;
} FMod_FunctionGenerator;
/* 'function' generator types */
typedef enum eFMod_Generator_Functions {
- FCM_GENERATOR_FN_SIN = 0,
- FCM_GENERATOR_FN_COS = 1,
- FCM_GENERATOR_FN_TAN = 2,
- FCM_GENERATOR_FN_SQRT = 3,
- FCM_GENERATOR_FN_LN = 4,
- FCM_GENERATOR_FN_SINC = 5,
+ FCM_GENERATOR_FN_SIN = 0,
+ FCM_GENERATOR_FN_COS = 1,
+ FCM_GENERATOR_FN_TAN = 2,
+ FCM_GENERATOR_FN_SQRT = 3,
+ FCM_GENERATOR_FN_LN = 4,
+ FCM_GENERATOR_FN_SINC = 5,
} eFMod_Generator_Functions;
-
/* envelope modifier - envelope data */
typedef struct FCM_EnvelopeData {
- /** Min/max values for envelope at this point (absolute values) . */
- float min, max;
- /** Time for that this sample-point occurs. */
- float time;
-
- /** Settings for 'min' control point. */
- short f1;
- /** Settings for 'max' control point. */
- short f2;
+ /** Min/max values for envelope at this point (absolute values) . */
+ float min, max;
+ /** Time for that this sample-point occurs. */
+ float time;
+
+ /** Settings for 'min' control point. */
+ short f1;
+ /** Settings for 'max' control point. */
+ short f2;
} FCM_EnvelopeData;
/* envelope-like adjustment to values (for fade in/out) */
typedef struct FMod_Envelope {
- /** Data-points defining envelope to apply (array) . */
- FCM_EnvelopeData *data;
- /** Number of envelope points. */
- int totvert;
-
- /** Value that envelope's influence is centered around / based on. */
- float midval;
- /** Distances from 'middle-value' for 1:1 envelope influence. */
- float min, max;
+ /** Data-points defining envelope to apply (array) . */
+ FCM_EnvelopeData *data;
+ /** Number of envelope points. */
+ int totvert;
+
+ /** Value that envelope's influence is centered around / based on. */
+ float midval;
+ /** Distances from 'middle-value' for 1:1 envelope influence. */
+ float min, max;
} FMod_Envelope;
-
/* cycling/repetition modifier data */
// TODO: we can only do complete cycles...
typedef struct FMod_Cycles {
- /** Extrapolation mode to use before first keyframe. */
- short before_mode;
- /** Extrapolation mode to use after last keyframe. */
- short after_mode;
- /** Number of 'cycles' before first keyframe to do. */
- short before_cycles;
- /** Number of 'cycles' after last keyframe to do. */
- short after_cycles;
+ /** Extrapolation mode to use before first keyframe. */
+ short before_mode;
+ /** Extrapolation mode to use after last keyframe. */
+ short after_mode;
+ /** Number of 'cycles' before first keyframe to do. */
+ short before_cycles;
+ /** Number of 'cycles' after last keyframe to do. */
+ short after_cycles;
} FMod_Cycles;
/* cycling modes */
typedef enum eFMod_Cycling_Modes {
- /** don't do anything */
- FCM_EXTRAPOLATE_NONE = 0,
- /** repeat keyframe range as-is */
- FCM_EXTRAPOLATE_CYCLIC,
- /** repeat keyframe range, but with offset based on gradient between values */
- FCM_EXTRAPOLATE_CYCLIC_OFFSET,
- /** alternate between forward and reverse playback of keyframe range */
- FCM_EXTRAPOLATE_MIRROR,
+ /** don't do anything */
+ FCM_EXTRAPOLATE_NONE = 0,
+ /** repeat keyframe range as-is */
+ FCM_EXTRAPOLATE_CYCLIC,
+ /** repeat keyframe range, but with offset based on gradient between values */
+ FCM_EXTRAPOLATE_CYCLIC_OFFSET,
+ /** alternate between forward and reverse playback of keyframe range */
+ FCM_EXTRAPOLATE_MIRROR,
} eFMod_Cycling_Modes;
-
/* Python-script modifier data */
typedef struct FMod_Python {
- /** Text buffer containing script to execute. */
- struct Text *script;
- /** ID-properties to provide 'custom' settings. */
- IDProperty *prop;
+ /** Text buffer containing script to execute. */
+ struct Text *script;
+ /** ID-properties to provide 'custom' settings. */
+ IDProperty *prop;
} FMod_Python;
-
/* limits modifier data */
typedef struct FMod_Limits {
- /** Rect defining the min/max values. */
- rctf rect;
- /** Settings for limiting. */
- int flag;
- char _pad[4];
+ /** Rect defining the min/max values. */
+ rctf rect;
+ /** Settings for limiting. */
+ int flag;
+ char _pad[4];
} FMod_Limits;
/* limiting flags */
typedef enum eFMod_Limit_Flags {
- FCM_LIMIT_XMIN = (1 << 0),
- FCM_LIMIT_XMAX = (1 << 1),
- FCM_LIMIT_YMIN = (1 << 2),
- FCM_LIMIT_YMAX = (1 << 3),
+ FCM_LIMIT_XMIN = (1 << 0),
+ FCM_LIMIT_XMAX = (1 << 1),
+ FCM_LIMIT_YMIN = (1 << 2),
+ FCM_LIMIT_YMAX = (1 << 3),
} eFMod_Limit_Flags;
-
/* noise modifier data */
typedef struct FMod_Noise {
- float size;
- float strength;
- float phase;
- float offset;
+ float size;
+ float strength;
+ float phase;
+ float offset;
- short depth;
- short modification;
+ short depth;
+ short modification;
} FMod_Noise;
/* modification modes */
typedef enum eFMod_Noise_Modifications {
- /** Modify existing curve, matching it's shape. */
- FCM_NOISE_MODIF_REPLACE = 0,
- /** Add noise to the curve. */
- FCM_NOISE_MODIF_ADD,
- /** Subtract noise from the curve. */
- FCM_NOISE_MODIF_SUBTRACT,
- /** Multiply the curve by noise. */
- FCM_NOISE_MODIF_MULTIPLY,
+ /** Modify existing curve, matching it's shape. */
+ FCM_NOISE_MODIF_REPLACE = 0,
+ /** Add noise to the curve. */
+ FCM_NOISE_MODIF_ADD,
+ /** Subtract noise from the curve. */
+ FCM_NOISE_MODIF_SUBTRACT,
+ /** Multiply the curve by noise. */
+ FCM_NOISE_MODIF_MULTIPLY,
} eFMod_Noise_Modifications;
-
/* stepped modifier data */
typedef struct FMod_Stepped {
- /** Number of frames each interpolated value should be held. */
- float step_size;
- /** Reference frame number that stepping starts from. */
- float offset;
-
- /** Start frame of the frame range that modifier works in. */
- float start_frame;
- /** End frame of the frame range that modifier works in. */
- float end_frame;
-
- /** Various settings. */
- int flag;
+ /** Number of frames each interpolated value should be held. */
+ float step_size;
+ /** Reference frame number that stepping starts from. */
+ float offset;
+
+ /** Start frame of the frame range that modifier works in. */
+ float start_frame;
+ /** End frame of the frame range that modifier works in. */
+ float end_frame;
+
+ /** Various settings. */
+ int flag;
} FMod_Stepped;
/* stepped modifier range flags */
typedef enum eFMod_Stepped_Flags {
- /** Don't affect frames before the start frame. */
- FCM_STEPPED_NO_BEFORE = (1 << 0),
- /** Don't affect frames after the end frame. */
- FCM_STEPPED_NO_AFTER = (1 << 1),
+ /** Don't affect frames before the start frame. */
+ FCM_STEPPED_NO_BEFORE = (1 << 0),
+ /** Don't affect frames after the end frame. */
+ FCM_STEPPED_NO_AFTER = (1 << 1),
} eFMod_Stepped_Flags;
/* Drivers -------------------------------------- */
@@ -313,67 +305,66 @@ typedef enum eFMod_Stepped_Flags {
* Defines how to access a dependency needed for a driver variable.
*/
typedef struct DriverTarget {
- /** ID-block which owns the target, no user count. */
- ID *id;
-
- /** RNA path defining the setting to use (for DVAR_TYPE_SINGLE_PROP). */
- char *rna_path;
-
- /**
- * Name of the posebone to use
- * (for vars where DTAR_FLAG_STRUCT_REF is used) - MAX_ID_NAME-2.
- */
- char pchan_name[64];
- /** Transform channel index (for DVAR_TYPE_TRANSFORM_CHAN.)*/
- short transChan;
-
- /**
- * Flags for the validity of the target
- * (NOTE: these get reset every time the types change).
- */
- short flag;
- /** Type of ID-block that this target can use. */
- int idtype;
+ /** ID-block which owns the target, no user count. */
+ ID *id;
+
+ /** RNA path defining the setting to use (for DVAR_TYPE_SINGLE_PROP). */
+ char *rna_path;
+
+ /**
+ * Name of the posebone to use
+ * (for vars where DTAR_FLAG_STRUCT_REF is used) - MAX_ID_NAME-2.
+ */
+ char pchan_name[64];
+ /** Transform channel index (for DVAR_TYPE_TRANSFORM_CHAN.)*/
+ short transChan;
+
+ /**
+ * Flags for the validity of the target
+ * (NOTE: these get reset every time the types change).
+ */
+ short flag;
+ /** Type of ID-block that this target can use. */
+ int idtype;
} DriverTarget;
/** Driver Target flags. */
typedef enum eDriverTarget_Flag {
- /** used for targets that use the pchan_name instead of RNA path
- * (i.e. rotation difference) */
- DTAR_FLAG_STRUCT_REF = (1 << 0),
- /** idtype can only be 'Object' */
- DTAR_FLAG_ID_OB_ONLY = (1 << 1),
-
- /* "localspace" flags */
- /** base flag - basically "pre parent+constraints" */
- DTAR_FLAG_LOCALSPACE = (1 << 2),
- /** include constraints transformed to space including parents */
- DTAR_FLAG_LOCAL_CONSTS = (1 << 3),
-
- /** error flags */
- DTAR_FLAG_INVALID = (1 << 4),
+ /** used for targets that use the pchan_name instead of RNA path
+ * (i.e. rotation difference) */
+ DTAR_FLAG_STRUCT_REF = (1 << 0),
+ /** idtype can only be 'Object' */
+ DTAR_FLAG_ID_OB_ONLY = (1 << 1),
+
+ /* "localspace" flags */
+ /** base flag - basically "pre parent+constraints" */
+ DTAR_FLAG_LOCALSPACE = (1 << 2),
+ /** include constraints transformed to space including parents */
+ DTAR_FLAG_LOCAL_CONSTS = (1 << 3),
+
+ /** error flags */
+ DTAR_FLAG_INVALID = (1 << 4),
} eDriverTarget_Flag;
/* Transform Channels for Driver Targets */
typedef enum eDriverTarget_TransformChannels {
- DTAR_TRANSCHAN_LOCX = 0,
- DTAR_TRANSCHAN_LOCY,
- DTAR_TRANSCHAN_LOCZ,
- DTAR_TRANSCHAN_ROTX,
- DTAR_TRANSCHAN_ROTY,
- DTAR_TRANSCHAN_ROTZ,
- DTAR_TRANSCHAN_SCALEX,
- DTAR_TRANSCHAN_SCALEY,
- DTAR_TRANSCHAN_SCALEZ,
-
- MAX_DTAR_TRANSCHAN_TYPES,
+ DTAR_TRANSCHAN_LOCX = 0,
+ DTAR_TRANSCHAN_LOCY,
+ DTAR_TRANSCHAN_LOCZ,
+ DTAR_TRANSCHAN_ROTX,
+ DTAR_TRANSCHAN_ROTY,
+ DTAR_TRANSCHAN_ROTZ,
+ DTAR_TRANSCHAN_SCALEX,
+ DTAR_TRANSCHAN_SCALEY,
+ DTAR_TRANSCHAN_SCALEZ,
+
+ MAX_DTAR_TRANSCHAN_TYPES,
} eDriverTarget_TransformChannels;
/* --- */
/* maximum number of driver targets per variable */
-#define MAX_DRIVER_TARGETS 8
-
+#define MAX_DRIVER_TARGETS 8
/**
* Driver Variable (dvar)
@@ -384,81 +375,75 @@ typedef enum eDriverTarget_TransformChannels {
* expressions and also Depsgraph building.
*/
typedef struct DriverVar {
- struct DriverVar *next, *prev;
-
- /**
- * Name of the variable to use in py-expression
- * (must be valid python identifier) - MAX_ID_NAME-2.
- */
- char name[64];
-
- /** MAX_DRIVER_TARGETS, target slots. */
- DriverTarget targets[8];
-
- /** Number of targets actually used by this variable. */
- char num_targets;
- /** Type of driver variable (eDriverVar_Types). */
- char type;
-
- /** Validation tags, etc. (eDriverVar_Flags). */
- short flag;
- /** Result of previous evaluation. */
- float curval;
+ struct DriverVar *next, *prev;
+
+ /**
+ * Name of the variable to use in py-expression
+ * (must be valid python identifier) - MAX_ID_NAME-2.
+ */
+ char name[64];
+
+ /** MAX_DRIVER_TARGETS, target slots. */
+ DriverTarget targets[8];
+
+ /** Number of targets actually used by this variable. */
+ char num_targets;
+ /** Type of driver variable (eDriverVar_Types). */
+ char type;
+
+ /** Validation tags, etc. (eDriverVar_Flags). */
+ short flag;
+ /** Result of previous evaluation. */
+ float curval;
} DriverVar;
/** Driver Variable Types.* */
typedef enum eDriverVar_Types {
- /** single RNA property */
- DVAR_TYPE_SINGLE_PROP = 0,
- /** rotation difference (between 2 bones) */
- DVAR_TYPE_ROT_DIFF,
- /** distance between objects/bones */
- DVAR_TYPE_LOC_DIFF,
- /** 'final' transform for object/bones */
- DVAR_TYPE_TRANSFORM_CHAN,
-
- /** Maximum number of variable types.
- *
- * \note This must always be th last item in this list,
- * so add new types above this line.
- */
- MAX_DVAR_TYPES,
+ /** single RNA property */
+ DVAR_TYPE_SINGLE_PROP = 0,
+ /** rotation difference (between 2 bones) */
+ DVAR_TYPE_ROT_DIFF,
+ /** distance between objects/bones */
+ DVAR_TYPE_LOC_DIFF,
+ /** 'final' transform for object/bones */
+ DVAR_TYPE_TRANSFORM_CHAN,
+
+ /** Maximum number of variable types.
+ *
+ * \note This must always be th last item in this list,
+ * so add new types above this line.
+ */
+ MAX_DVAR_TYPES,
} eDriverVar_Types;
/* Driver Variable Flags */
typedef enum eDriverVar_Flags {
- /* variable is not set up correctly */
- DVAR_FLAG_ERROR = (1 << 0),
-
- /* variable name doesn't pass the validation tests */
- DVAR_FLAG_INVALID_NAME = (1 << 1),
- /* name starts with a number */
- DVAR_FLAG_INVALID_START_NUM = (1 << 2),
- /* name starts with a special character (!, $, @, #, _, etc.) */
- DVAR_FLAG_INVALID_START_CHAR = (1 << 3),
- /* name contains a space */
- DVAR_FLAG_INVALID_HAS_SPACE = (1 << 4),
- /* name contains a dot */
- DVAR_FLAG_INVALID_HAS_DOT = (1 << 5),
- /* name contains invalid chars */
- DVAR_FLAG_INVALID_HAS_SPECIAL = (1 << 6),
- /* name is a reserved keyword */
- DVAR_FLAG_INVALID_PY_KEYWORD = (1 << 7),
- /* name is zero-length */
- DVAR_FLAG_INVALID_EMPTY = (1 << 8),
+ /* variable is not set up correctly */
+ DVAR_FLAG_ERROR = (1 << 0),
+
+ /* variable name doesn't pass the validation tests */
+ DVAR_FLAG_INVALID_NAME = (1 << 1),
+ /* name starts with a number */
+ DVAR_FLAG_INVALID_START_NUM = (1 << 2),
+ /* name starts with a special character (!, $, @, #, _, etc.) */
+ DVAR_FLAG_INVALID_START_CHAR = (1 << 3),
+ /* name contains a space */
+ DVAR_FLAG_INVALID_HAS_SPACE = (1 << 4),
+ /* name contains a dot */
+ DVAR_FLAG_INVALID_HAS_DOT = (1 << 5),
+ /* name contains invalid chars */
+ DVAR_FLAG_INVALID_HAS_SPECIAL = (1 << 6),
+ /* name is a reserved keyword */
+ DVAR_FLAG_INVALID_PY_KEYWORD = (1 << 7),
+ /* name is zero-length */
+ DVAR_FLAG_INVALID_EMPTY = (1 << 8),
} eDriverVar_Flags;
/* All invalid dvar name flags */
-#define DVAR_ALL_INVALID_FLAGS ( \
- DVAR_FLAG_INVALID_NAME | \
- DVAR_FLAG_INVALID_START_NUM | \
- DVAR_FLAG_INVALID_START_CHAR | \
- DVAR_FLAG_INVALID_HAS_SPACE | \
- DVAR_FLAG_INVALID_HAS_DOT | \
- DVAR_FLAG_INVALID_HAS_SPECIAL | \
- DVAR_FLAG_INVALID_PY_KEYWORD | \
- DVAR_FLAG_INVALID_EMPTY \
-)
+#define DVAR_ALL_INVALID_FLAGS \
+ (DVAR_FLAG_INVALID_NAME | DVAR_FLAG_INVALID_START_NUM | DVAR_FLAG_INVALID_START_CHAR | \
+ DVAR_FLAG_INVALID_HAS_SPACE | DVAR_FLAG_INVALID_HAS_DOT | DVAR_FLAG_INVALID_HAS_SPECIAL | \
+ DVAR_FLAG_INVALID_PY_KEYWORD | DVAR_FLAG_INVALID_EMPTY)
/* --- */
@@ -475,62 +460,62 @@ typedef enum eDriverVar_Flags {
* evaluated in. This order is set by the Depsgraph's sorting stuff.
*/
typedef struct ChannelDriver {
- /** Targets for this driver (i.e. list of DriverVar). */
- ListBase variables;
-
- /* python expression to execute (may call functions defined in an accessory file)
- * which relates the target 'variables' in some way to yield a single usable value
- */
- /** Expression to compile for evaluation. */
- char expression[256];
- /** PyObject - compiled expression, don't save this. */
- void *expr_comp;
-
- /** Compiled simple arithmetic expression. */
- struct ExprPyLike_Parsed *expr_simple;
-
- /** Result of previous evaluation. */
- float curval;
- // XXX to be implemented... this is like the constraint influence setting
- /** Influence of driver on result. */
- float influence;
-
- /* general settings */
- /** Type of driver. */
- int type;
- /** Settings of driver. */
- int flag;
+ /** Targets for this driver (i.e. list of DriverVar). */
+ ListBase variables;
+
+ /* python expression to execute (may call functions defined in an accessory file)
+ * which relates the target 'variables' in some way to yield a single usable value
+ */
+ /** Expression to compile for evaluation. */
+ char expression[256];
+ /** PyObject - compiled expression, don't save this. */
+ void *expr_comp;
+
+ /** Compiled simple arithmetic expression. */
+ struct ExprPyLike_Parsed *expr_simple;
+
+ /** Result of previous evaluation. */
+ float curval;
+ // XXX to be implemented... this is like the constraint influence setting
+ /** Influence of driver on result. */
+ float influence;
+
+ /* general settings */
+ /** Type of driver. */
+ int type;
+ /** Settings of driver. */
+ int flag;
} ChannelDriver;
/** Driver type. */
typedef enum eDriver_Types {
- /** target values are averaged together. */
- DRIVER_TYPE_AVERAGE = 0,
- /** python expression/function relates targets. */
- DRIVER_TYPE_PYTHON,
- /** sum of all values. */
- DRIVER_TYPE_SUM,
- /** smallest value. */
- DRIVER_TYPE_MIN,
- /** largest value. */
- DRIVER_TYPE_MAX,
+ /** target values are averaged together. */
+ DRIVER_TYPE_AVERAGE = 0,
+ /** python expression/function relates targets. */
+ DRIVER_TYPE_PYTHON,
+ /** sum of all values. */
+ DRIVER_TYPE_SUM,
+ /** smallest value. */
+ DRIVER_TYPE_MIN,
+ /** largest value. */
+ DRIVER_TYPE_MAX,
} eDriver_Types;
/** Driver flags. */
typedef enum eDriver_Flags {
- /** Driver has invalid settings (internal flag) */
- DRIVER_FLAG_INVALID = (1 << 0),
- DRIVER_FLAG_DEPRECATED = (1 << 1),
- /** Driver does replace value, but overrides (for layering of animation over driver) */
- // TODO: this needs to be implemented at some stage or left out...
- //DRIVER_FLAG_LAYERING = (1 << 2),
- /** Use when the expression needs to be recompiled. */
- DRIVER_FLAG_RECOMPILE = (1 << 3),
- /** The names are cached so they don't need have python unicode versions created each time */
- DRIVER_FLAG_RENAMEVAR = (1 << 4),
- // DRIVER_FLAG_UNUSED_5 = (1 << 5),
- /** Include 'self' in the drivers namespace. */
- DRIVER_FLAG_USE_SELF = (1 << 6),
+ /** Driver has invalid settings (internal flag) */
+ DRIVER_FLAG_INVALID = (1 << 0),
+ DRIVER_FLAG_DEPRECATED = (1 << 1),
+ /** Driver does replace value, but overrides (for layering of animation over driver) */
+ // TODO: this needs to be implemented at some stage or left out...
+ //DRIVER_FLAG_LAYERING = (1 << 2),
+ /** Use when the expression needs to be recompiled. */
+ DRIVER_FLAG_RECOMPILE = (1 << 3),
+ /** The names are cached so they don't need have python unicode versions created each time */
+ DRIVER_FLAG_RENAMEVAR = (1 << 4),
+ // DRIVER_FLAG_UNUSED_5 = (1 << 5),
+ /** Include 'self' in the drivers namespace. */
+ DRIVER_FLAG_USE_SELF = (1 << 6),
} eDriver_Flags;
/* F-Curves -------------------------------------- */
@@ -542,121 +527,120 @@ typedef enum eDriver_Flags {
* than using BPoints, which contain a lot of other unnecessary data...
*/
typedef struct FPoint {
- /** Time + value. */
- float vec[2];
- /** Selection info. */
- int flag;
- char _pad[4];
+ /** Time + value. */
+ float vec[2];
+ /** Selection info. */
+ int flag;
+ char _pad[4];
} FPoint;
/* 'Function-Curve' - defines values over time for a given setting (fcu) */
typedef struct FCurve {
- struct FCurve *next, *prev;
-
- /* group */
- /** Group that F-Curve belongs to. */
- bActionGroup *grp;
-
- /* driver settings */
- /** Only valid for drivers (i.e. stored in AnimData not Actions). */
- ChannelDriver *driver;
- /* evaluation settings */
- /** FCurve Modifiers. */
- ListBase modifiers;
-
- /* motion data */
- /** User-editable keyframes (array). */
- BezTriple *bezt;
- /** 'baked/imported' motion samples (array). */
- FPoint *fpt;
- /** Total number of points which define the curve (i.e. size of arrays in FPoints). */
- unsigned int totvert;
-
- /* value cache + settings */
- /** Value stored from last time curve was evaluated (not threadsafe, debug display only!). */
- float curval;
- char _pad2[4];
- /** User-editable settings for this curve. */
- short flag;
- /** Value-extending mode for this curve (does not cover). */
- short extend;
- /** Auto-handle smoothing mode. */
- char auto_smoothing;
-
- char _pad[3];
-
- /* RNA - data link */
- /** If applicable, the index of the RNA-array item to get. */
- int array_index;
- /** RNA-path to resolve data-access. */
- char *rna_path;
-
- /* curve coloring (for editor) */
- /** Coloring method to use (eFCurve_Coloring). */
- int color_mode;
- /** The last-color this curve took. */
- float color[3];
-
- float prev_norm_factor, prev_offset;
+ struct FCurve *next, *prev;
+
+ /* group */
+ /** Group that F-Curve belongs to. */
+ bActionGroup *grp;
+
+ /* driver settings */
+ /** Only valid for drivers (i.e. stored in AnimData not Actions). */
+ ChannelDriver *driver;
+ /* evaluation settings */
+ /** FCurve Modifiers. */
+ ListBase modifiers;
+
+ /* motion data */
+ /** User-editable keyframes (array). */
+ BezTriple *bezt;
+ /** 'baked/imported' motion samples (array). */
+ FPoint *fpt;
+ /** Total number of points which define the curve (i.e. size of arrays in FPoints). */
+ unsigned int totvert;
+
+ /* value cache + settings */
+ /** Value stored from last time curve was evaluated (not threadsafe, debug display only!). */
+ float curval;
+ char _pad2[4];
+ /** User-editable settings for this curve. */
+ short flag;
+ /** Value-extending mode for this curve (does not cover). */
+ short extend;
+ /** Auto-handle smoothing mode. */
+ char auto_smoothing;
+
+ char _pad[3];
+
+ /* RNA - data link */
+ /** If applicable, the index of the RNA-array item to get. */
+ int array_index;
+ /** RNA-path to resolve data-access. */
+ char *rna_path;
+
+ /* curve coloring (for editor) */
+ /** Coloring method to use (eFCurve_Coloring). */
+ int color_mode;
+ /** The last-color this curve took. */
+ float color[3];
+
+ float prev_norm_factor, prev_offset;
} FCurve;
-
/* user-editable flags/settings */
typedef enum eFCurve_Flags {
- /** curve/keyframes are visible in editor */
- FCURVE_VISIBLE = (1 << 0),
- /** curve is selected for editing */
- FCURVE_SELECTED = (1 << 1),
- /** curve is active one */
- FCURVE_ACTIVE = (1 << 2),
- /** keyframes (beztriples) cannot be edited */
- FCURVE_PROTECTED = (1 << 3),
- /** fcurve will not be evaluated for the next round */
- FCURVE_MUTED = (1 << 4),
-
- /** fcurve uses 'auto-handles', which stay horizontal... */
- // DEPRECATED
- FCURVE_AUTO_HANDLES = (1 << 5),
- FCURVE_MOD_OFF = (1 << 6),
- /** skip evaluation, as RNA-path cannot be resolved
- * (similar to muting, but cannot be set by user) */
- FCURVE_DISABLED = (1 << 10),
- /** curve can only have whole-number values (integer types) */
- FCURVE_INT_VALUES = (1 << 11),
- /** curve can only have certain discrete-number values
- * (no interpolation at all, for enums/booleans) */
- FCURVE_DISCRETE_VALUES = (1 << 12),
-
- /** temporary tag for editing */
- FCURVE_TAGGED = (1 << 15),
+ /** curve/keyframes are visible in editor */
+ FCURVE_VISIBLE = (1 << 0),
+ /** curve is selected for editing */
+ FCURVE_SELECTED = (1 << 1),
+ /** curve is active one */
+ FCURVE_ACTIVE = (1 << 2),
+ /** keyframes (beztriples) cannot be edited */
+ FCURVE_PROTECTED = (1 << 3),
+ /** fcurve will not be evaluated for the next round */
+ FCURVE_MUTED = (1 << 4),
+
+ /** fcurve uses 'auto-handles', which stay horizontal... */
+ // DEPRECATED
+ FCURVE_AUTO_HANDLES = (1 << 5),
+ FCURVE_MOD_OFF = (1 << 6),
+ /** skip evaluation, as RNA-path cannot be resolved
+ * (similar to muting, but cannot be set by user) */
+ FCURVE_DISABLED = (1 << 10),
+ /** curve can only have whole-number values (integer types) */
+ FCURVE_INT_VALUES = (1 << 11),
+ /** curve can only have certain discrete-number values
+ * (no interpolation at all, for enums/booleans) */
+ FCURVE_DISCRETE_VALUES = (1 << 12),
+
+ /** temporary tag for editing */
+ FCURVE_TAGGED = (1 << 15),
} eFCurve_Flags;
/* extrapolation modes (only simple value 'extending') */
typedef enum eFCurve_Extend {
- /** just extend min/max keyframe value */
- FCURVE_EXTRAPOLATE_CONSTANT = 0,
- /** just extend gradient of segment between first segment keyframes */
- FCURVE_EXTRAPOLATE_LINEAR,
+ /** just extend min/max keyframe value */
+ FCURVE_EXTRAPOLATE_CONSTANT = 0,
+ /** just extend gradient of segment between first segment keyframes */
+ FCURVE_EXTRAPOLATE_LINEAR,
} eFCurve_Extend;
/* curve coloring modes */
typedef enum eFCurve_Coloring {
- /** automatically determine color using rainbow (calculated at drawtime) */
- FCURVE_COLOR_AUTO_RAINBOW = 0,
- /** automatically determine color using XYZ (array index) <-> RGB */
- FCURVE_COLOR_AUTO_RGB = 1,
- /** automatically determine color where XYZ <-> RGB, but index(X) != 0 */
- FCURVE_COLOR_AUTO_YRGB = 3,
- /** custom color */
- FCURVE_COLOR_CUSTOM = 2,
+ /** automatically determine color using rainbow (calculated at drawtime) */
+ FCURVE_COLOR_AUTO_RAINBOW = 0,
+ /** automatically determine color using XYZ (array index) <-> RGB */
+ FCURVE_COLOR_AUTO_RGB = 1,
+ /** automatically determine color where XYZ <-> RGB, but index(X) != 0 */
+ FCURVE_COLOR_AUTO_YRGB = 3,
+ /** custom color */
+ FCURVE_COLOR_CUSTOM = 2,
} eFCurve_Coloring;
/* curve smoothing modes */
typedef enum eFCurve_Smoothing {
- /** legacy mode: auto handles only consider adjacent points */
- FCURVE_SMOOTH_NONE = 0,
- /** maintain continuity of the acceleration */
- FCURVE_SMOOTH_CONT_ACCEL = 1,
+ /** legacy mode: auto handles only consider adjacent points */
+ FCURVE_SMOOTH_NONE = 0,
+ /** maintain continuity of the acceleration */
+ FCURVE_SMOOTH_CONT_ACCEL = 1,
} eFCurve_Smoothing;
/* ************************************************ */
@@ -666,7 +650,6 @@ typedef enum eFCurve_Smoothing {
* they are not stored here... see DNA_action_types.h instead
*/
-
/* ************************************************ */
/* NLA - Non-Linear Animation */
@@ -679,128 +662,128 @@ typedef enum eFCurve_Smoothing {
* to control the remapping of the Action data to some destination.
*/
typedef struct NlaStrip {
- struct NlaStrip *next, *prev;
-
- /** 'Child' strips (used for 'meta' strips). */
- ListBase strips;
- /** Action that is referenced by this strip (strip is 'user' of the action). */
- bAction *act;
-
- /** F-Curves for controlling this strip's influence and timing */ // TODO: move o.ut?
- ListBase fcurves;
- /** F-Curve modifiers to be applied to the entire strip's referenced F-Curves. */
- ListBase modifiers;
-
- /** User-Visible Identifier for Strip - MAX_ID_NAME-2. */
- char name[64];
-
- /** Influence of strip. */
- float influence;
- /** Current 'time' within action being used (automatically evaluated, but can be overridden). */
- float strip_time;
-
- /** Extents of the strip. */
- float start, end;
- /** Range of the action to use. */
- float actstart, actend;
-
- /** The number of times to repeat the action range (only when no F-Curves). */
- float repeat;
- /** The amount the action range is scaled by (only when no F-Curves). */
- float scale;
-
- /** Strip blending length (only used when there are no F-Curves). */
- float blendin, blendout;
- /** Strip blending mode (layer-based mixing). */
- short blendmode;
-
- /** Strip extrapolation mode (time-based mixing). */
- short extendmode;
- char _pad1[2];
-
- /** Type of NLA strip. */
- short type;
-
- /** Handle for speaker objects. */
- void *speaker_handle;
-
- /** Settings. */
- int flag;
- char _pad2[4];
+ struct NlaStrip *next, *prev;
+
+ /** 'Child' strips (used for 'meta' strips). */
+ ListBase strips;
+ /** Action that is referenced by this strip (strip is 'user' of the action). */
+ bAction *act;
+
+ /** F-Curves for controlling this strip's influence and timing */ // TODO: move o.ut?
+ ListBase fcurves;
+ /** F-Curve modifiers to be applied to the entire strip's referenced F-Curves. */
+ ListBase modifiers;
+
+ /** User-Visible Identifier for Strip - MAX_ID_NAME-2. */
+ char name[64];
+
+ /** Influence of strip. */
+ float influence;
+ /** Current 'time' within action being used (automatically evaluated, but can be overridden). */
+ float strip_time;
+
+ /** Extents of the strip. */
+ float start, end;
+ /** Range of the action to use. */
+ float actstart, actend;
+
+ /** The number of times to repeat the action range (only when no F-Curves). */
+ float repeat;
+ /** The amount the action range is scaled by (only when no F-Curves). */
+ float scale;
+
+ /** Strip blending length (only used when there are no F-Curves). */
+ float blendin, blendout;
+ /** Strip blending mode (layer-based mixing). */
+ short blendmode;
+
+ /** Strip extrapolation mode (time-based mixing). */
+ short extendmode;
+ char _pad1[2];
+
+ /** Type of NLA strip. */
+ short type;
+
+ /** Handle for speaker objects. */
+ void *speaker_handle;
+
+ /** Settings. */
+ int flag;
+ char _pad2[4];
} NlaStrip;
/* NLA Strip Blending Mode */
typedef enum eNlaStrip_Blend_Mode {
- NLASTRIP_MODE_REPLACE = 0,
- NLASTRIP_MODE_ADD,
- NLASTRIP_MODE_SUBTRACT,
- NLASTRIP_MODE_MULTIPLY,
- NLASTRIP_MODE_COMBINE,
+ NLASTRIP_MODE_REPLACE = 0,
+ NLASTRIP_MODE_ADD,
+ NLASTRIP_MODE_SUBTRACT,
+ NLASTRIP_MODE_MULTIPLY,
+ NLASTRIP_MODE_COMBINE,
} eNlaStrip_Blend_Mode;
/** NLA Strip Extrpolation Mode. */
typedef enum eNlaStrip_Extrapolate_Mode {
- /* extend before first frame if no previous strips in track,
- * and always hold+extend last frame */
- NLASTRIP_EXTEND_HOLD = 0,
- /* only hold+extend last frame */
- NLASTRIP_EXTEND_HOLD_FORWARD = 1,
- /* don't contribute at all */
- NLASTRIP_EXTEND_NOTHING = 2,
+ /* extend before first frame if no previous strips in track,
+ * and always hold+extend last frame */
+ NLASTRIP_EXTEND_HOLD = 0,
+ /* only hold+extend last frame */
+ NLASTRIP_EXTEND_HOLD_FORWARD = 1,
+ /* don't contribute at all */
+ NLASTRIP_EXTEND_NOTHING = 2,
} eNlaStrip_Extrapolate_Mode;
/** NLA Strip Settings. */
typedef enum eNlaStrip_Flag {
- /* UI selection flags */
- /** NLA strip is the active one in the track (also indicates if strip is being tweaked) */
- NLASTRIP_FLAG_ACTIVE = (1 << 0),
- /* NLA strip is selected for editing */
- NLASTRIP_FLAG_SELECT = (1 << 1),
- // NLASTRIP_FLAG_SELECT_L = (1 << 2), // left handle selected
- // NLASTRIP_FLAG_SELECT_R = (1 << 3), // right handle selected
-
- /** NLA strip uses the same action that the action being tweaked uses
- * (not set for the tweaking one though). */
- NLASTRIP_FLAG_TWEAKUSER = (1 << 4),
-
- /* controls driven by local F-Curves */
- /** strip influence is controlled by local F-Curve */
- NLASTRIP_FLAG_USR_INFLUENCE = (1 << 5),
- NLASTRIP_FLAG_USR_TIME = (1 << 6),
- NLASTRIP_FLAG_USR_TIME_CYCLIC = (1 << 7),
-
- /** NLA strip length is synced to the length of the referenced action */
- NLASTRIP_FLAG_SYNC_LENGTH = (1 << 9),
-
- /* playback flags (may be overridden by F-Curves) */
- /** NLA strip blendin/out values are set automatically based on overlaps */
- NLASTRIP_FLAG_AUTO_BLENDS = (1 << 10),
- /** NLA strip is played back in reverse order */
- NLASTRIP_FLAG_REVERSE = (1 << 11),
- /** NLA strip is muted (i.e. doesn't contribute in any way) */
- NLASTRIP_FLAG_MUTED = (1 << 12),
- /** NLA Strip is played back in 'ping-pong' style */
- NLASTRIP_FLAG_MIRROR = (1 << 13),
-
- /* temporary editing flags */
- /** NLA strip should ignore frame range and hold settings, and evaluate at global time. */
- NLASTRIP_FLAG_NO_TIME_MAP = (1 << 29),
- /** NLA-Strip is really just a temporary meta used to facilitate easier transform code */
- NLASTRIP_FLAG_TEMP_META = (1 << 30),
- NLASTRIP_FLAG_EDIT_TOUCHED = (1u << 31),
+ /* UI selection flags */
+ /** NLA strip is the active one in the track (also indicates if strip is being tweaked) */
+ NLASTRIP_FLAG_ACTIVE = (1 << 0),
+ /* NLA strip is selected for editing */
+ NLASTRIP_FLAG_SELECT = (1 << 1),
+ // NLASTRIP_FLAG_SELECT_L = (1 << 2), // left handle selected
+ // NLASTRIP_FLAG_SELECT_R = (1 << 3), // right handle selected
+
+ /** NLA strip uses the same action that the action being tweaked uses
+ * (not set for the tweaking one though). */
+ NLASTRIP_FLAG_TWEAKUSER = (1 << 4),
+
+ /* controls driven by local F-Curves */
+ /** strip influence is controlled by local F-Curve */
+ NLASTRIP_FLAG_USR_INFLUENCE = (1 << 5),
+ NLASTRIP_FLAG_USR_TIME = (1 << 6),
+ NLASTRIP_FLAG_USR_TIME_CYCLIC = (1 << 7),
+
+ /** NLA strip length is synced to the length of the referenced action */
+ NLASTRIP_FLAG_SYNC_LENGTH = (1 << 9),
+
+ /* playback flags (may be overridden by F-Curves) */
+ /** NLA strip blendin/out values are set automatically based on overlaps */
+ NLASTRIP_FLAG_AUTO_BLENDS = (1 << 10),
+ /** NLA strip is played back in reverse order */
+ NLASTRIP_FLAG_REVERSE = (1 << 11),
+ /** NLA strip is muted (i.e. doesn't contribute in any way) */
+ NLASTRIP_FLAG_MUTED = (1 << 12),
+ /** NLA Strip is played back in 'ping-pong' style */
+ NLASTRIP_FLAG_MIRROR = (1 << 13),
+
+ /* temporary editing flags */
+ /** NLA strip should ignore frame range and hold settings, and evaluate at global time. */
+ NLASTRIP_FLAG_NO_TIME_MAP = (1 << 29),
+ /** NLA-Strip is really just a temporary meta used to facilitate easier transform code */
+ NLASTRIP_FLAG_TEMP_META = (1 << 30),
+ NLASTRIP_FLAG_EDIT_TOUCHED = (1u << 31),
} eNlaStrip_Flag;
/* NLA Strip Type */
typedef enum eNlaStrip_Type {
- /* 'clip' - references an Action */
- NLASTRIP_TYPE_CLIP = 0,
- /* 'transition' - blends between the adjacent strips */
- NLASTRIP_TYPE_TRANSITION,
- /* 'meta' - a strip which acts as a container for a few others */
- NLASTRIP_TYPE_META,
-
- /* 'emit sound' - a strip which is used for timing when speaker emits sounds */
- NLASTRIP_TYPE_SOUND,
+ /* 'clip' - references an Action */
+ NLASTRIP_TYPE_CLIP = 0,
+ /* 'transition' - blends between the adjacent strips */
+ NLASTRIP_TYPE_TRANSITION,
+ /* 'meta' - a strip which acts as a container for a few others */
+ NLASTRIP_TYPE_META,
+
+ /* 'emit sound' - a strip which is used for timing when speaker emits sounds */
+ NLASTRIP_TYPE_SOUND,
} eNlaStrip_Type;
/* NLA Tracks ------------------------------------- */
@@ -814,41 +797,40 @@ typedef enum eNlaStrip_Type {
* 'rough' blocks of their work.
*/
typedef struct NlaTrack {
- struct NlaTrack *next, *prev;
+ struct NlaTrack *next, *prev;
- /** BActionStrips in this track. */
- ListBase strips;
+ /** BActionStrips in this track. */
+ ListBase strips;
- /** Settings for this track. */
- int flag;
- /** Index of the track in the stack
- * \note not really useful, but we need a '_pad' var anyways! */
- int index;
+ /** Settings for this track. */
+ int flag;
+ /** Index of the track in the stack
+ * \note not really useful, but we need a '_pad' var anyways! */
+ int index;
- /** Short user-description of this track - MAX_ID_NAME-2. */
- char name[64];
+ /** Short user-description of this track - MAX_ID_NAME-2. */
+ char name[64];
} NlaTrack;
/* settings for track */
typedef enum eNlaTrack_Flag {
- /** track is the one that settings can be modified on,
- * also indicates if track is being 'tweaked' */
- NLATRACK_ACTIVE = (1 << 0),
- /** track is selected in UI for relevant editing operations */
- NLATRACK_SELECTED = (1 << 1),
- /** track is not evaluated */
- NLATRACK_MUTED = (1 << 2),
- /** track is the only one evaluated (must be used in conjunction with adt->flag) */
- NLATRACK_SOLO = (1 << 3),
- /** track's settings (and strips) cannot be edited (to guard against unwanted changes) */
- NLATRACK_PROTECTED = (1 << 4),
-
- /** track is not allowed to execute,
- * usually as result of tweaking being enabled (internal flag) */
- NLATRACK_DISABLED = (1 << 10),
+ /** track is the one that settings can be modified on,
+ * also indicates if track is being 'tweaked' */
+ NLATRACK_ACTIVE = (1 << 0),
+ /** track is selected in UI for relevant editing operations */
+ NLATRACK_SELECTED = (1 << 1),
+ /** track is not evaluated */
+ NLATRACK_MUTED = (1 << 2),
+ /** track is the only one evaluated (must be used in conjunction with adt->flag) */
+ NLATRACK_SOLO = (1 << 3),
+ /** track's settings (and strips) cannot be edited (to guard against unwanted changes) */
+ NLATRACK_PROTECTED = (1 << 4),
+
+ /** track is not allowed to execute,
+ * usually as result of tweaking being enabled (internal flag) */
+ NLATRACK_DISABLED = (1 << 10),
} eNlaTrack_Flag;
-
/* ************************************ */
/* KeyingSet Datatypes */
@@ -862,49 +844,49 @@ typedef enum eNlaTrack_Flag {
* replaced with appropriate information from the context).
*/
typedef struct KS_Path {
- struct KS_Path *next, *prev;
-
- /** ID block that keyframes are for. */
- ID *id;
- /** Name of the group to add to - MAX_ID_NAME-2. */
- char group[64];
-
- /** ID-type that path can be used on. */
- int idtype;
-
- /** Group naming (eKSP_Grouping). */
- short groupmode;
- /** Various settings, etc. */
- short flag;
-
- /** Dynamically (or statically in the case of predefined sets) path. */
- char *rna_path;
- /** Index that path affects. */
- int array_index;
-
- /** (eInsertKeyFlags) settings to supply insertkey() with. */
- short keyingflag;
- /** (eInsertKeyFlags) for each flag set, the relevant keyingflag bit overrides the default. */
- short keyingoverride;
+ struct KS_Path *next, *prev;
+
+ /** ID block that keyframes are for. */
+ ID *id;
+ /** Name of the group to add to - MAX_ID_NAME-2. */
+ char group[64];
+
+ /** ID-type that path can be used on. */
+ int idtype;
+
+ /** Group naming (eKSP_Grouping). */
+ short groupmode;
+ /** Various settings, etc. */
+ short flag;
+
+ /** Dynamically (or statically in the case of predefined sets) path. */
+ char *rna_path;
+ /** Index that path affects. */
+ int array_index;
+
+ /** (eInsertKeyFlags) settings to supply insertkey() with. */
+ short keyingflag;
+ /** (eInsertKeyFlags) for each flag set, the relevant keyingflag bit overrides the default. */
+ short keyingoverride;
} KS_Path;
/* KS_Path->flag */
typedef enum eKSP_Settings {
- /* entire array (not just the specified index) gets keyframed */
- KSP_FLAG_WHOLE_ARRAY = (1 << 0),
+ /* entire array (not just the specified index) gets keyframed */
+ KSP_FLAG_WHOLE_ARRAY = (1 << 0),
} eKSP_Settings;
/* KS_Path->groupmode */
typedef enum eKSP_Grouping {
- /** Path should be grouped using group name stored in path. */
- KSP_GROUP_NAMED = 0,
- /** Path should not be grouped at all. */
- KSP_GROUP_NONE,
- /** Path should be grouped using KeyingSet's name. */
- KSP_GROUP_KSNAME,
- /** Path should be grouped using name of inner-most context item from templates
- * - this is most useful for relative KeyingSets only. */
- KSP_GROUP_TEMPLATE_ITEM,
+ /** Path should be grouped using group name stored in path. */
+ KSP_GROUP_NAMED = 0,
+ /** Path should not be grouped at all. */
+ KSP_GROUP_NONE,
+ /** Path should be grouped using KeyingSet's name. */
+ KSP_GROUP_KSNAME,
+ /** Path should be grouped using name of inner-most context item from templates
+ * - this is most useful for relative KeyingSets only. */
+ KSP_GROUP_TEMPLATE_ITEM,
} eKSP_Grouping;
/* ---------------- */
@@ -921,67 +903,67 @@ typedef enum eKSP_Grouping {
* animator without the need to add extra steps to the rigging process.
*/
typedef struct KeyingSet {
- struct KeyingSet *next, *prev;
+ struct KeyingSet *next, *prev;
- /** (KS_Path) paths to keyframe to. */
- ListBase paths;
+ /** (KS_Path) paths to keyframe to. */
+ ListBase paths;
- /** Unique name (for search, etc.) - MAX_ID_NAME-2 . */
- char idname[64];
- /** User-viewable name for KeyingSet (for menus, etc.) - MAX_ID_NAME-2. */
- char name[64];
- /** (RNA_DYN_DESCR_MAX) short help text. */
- char description[240];
- /** Name of the typeinfo data used for the relative paths - MAX_ID_NAME-2. */
- char typeinfo[64];
+ /** Unique name (for search, etc.) - MAX_ID_NAME-2 . */
+ char idname[64];
+ /** User-viewable name for KeyingSet (for menus, etc.) - MAX_ID_NAME-2. */
+ char name[64];
+ /** (RNA_DYN_DESCR_MAX) short help text. */
+ char description[240];
+ /** Name of the typeinfo data used for the relative paths - MAX_ID_NAME-2. */
+ char typeinfo[64];
- /** Index of the active path. */
- int active_path;
+ /** Index of the active path. */
+ int active_path;
- /** Settings for KeyingSet. */
- short flag;
+ /** Settings for KeyingSet. */
+ short flag;
- /** (eInsertKeyFlags) settings to supply insertkey() with. */
- short keyingflag;
- /** (eInsertKeyFlags) for each flag set, the relevant keyingflag bit overrides the default. */
- short keyingoverride;
+ /** (eInsertKeyFlags) settings to supply insertkey() with. */
+ short keyingflag;
+ /** (eInsertKeyFlags) for each flag set, the relevant keyingflag bit overrides the default. */
+ short keyingoverride;
- char _pad[6];
+ char _pad[6];
} KeyingSet;
/* KeyingSet settings */
typedef enum eKS_Settings {
- /** Keyingset cannot be removed (and doesn't need to be freed). */
- KEYINGSET_BUILTIN = (1 << 0),
- /** Keyingset does not depend on context info (i.e. paths are absolute). */
- KEYINGSET_ABSOLUTE = (1 << 1),
+ /** Keyingset cannot be removed (and doesn't need to be freed). */
+ KEYINGSET_BUILTIN = (1 << 0),
+ /** Keyingset does not depend on context info (i.e. paths are absolute). */
+ KEYINGSET_ABSOLUTE = (1 << 1),
} eKS_Settings;
/* Flags for use by keyframe creation/deletion calls */
typedef enum eInsertKeyFlags {
- INSERTKEY_NOFLAGS = 0,
- /** only insert keyframes where they're needed */
- INSERTKEY_NEEDED = (1 << 0),
- /** insert 'visual' keyframes where possible/needed */
- INSERTKEY_MATRIX = (1 << 1),
- /** don't recalculate handles,etc. after adding key */
- INSERTKEY_FAST = (1 << 2),
- /** don't realloc mem (or increase count, as array has already been set out) */
- INSERTKEY_FASTR = (1 << 3),
- /** only replace an existing keyframe (this overrides INSERTKEY_NEEDED) */
- INSERTKEY_REPLACE = (1 << 4),
- /** transform F-Curves should have XYZ->RGB color mode */
- INSERTKEY_XYZ2RGB = (1 << 5),
- /** ignore user-prefs (needed for predictable API use) */
- INSERTKEY_NO_USERPREF = (1 << 6),
- /** Allow to make a full copy of new key into existing one, if any,
- * instead of 'reusing' existing handles.
- * Used by copy/paste code. */
- INSERTKEY_OVERWRITE_FULL = (1 << 7),
- /** for driver FCurves, use driver's "input" value - for easier corrective driver setup */
- INSERTKEY_DRIVER = (1 << 8),
- /** for cyclic FCurves, adjust key timing to preserve the cycle period and flow */
- INSERTKEY_CYCLE_AWARE = (1 << 9),
+ INSERTKEY_NOFLAGS = 0,
+ /** only insert keyframes where they're needed */
+ INSERTKEY_NEEDED = (1 << 0),
+ /** insert 'visual' keyframes where possible/needed */
+ INSERTKEY_MATRIX = (1 << 1),
+ /** don't recalculate handles,etc. after adding key */
+ INSERTKEY_FAST = (1 << 2),
+ /** don't realloc mem (or increase count, as array has already been set out) */
+ INSERTKEY_FASTR = (1 << 3),
+ /** only replace an existing keyframe (this overrides INSERTKEY_NEEDED) */
+ INSERTKEY_REPLACE = (1 << 4),
+ /** transform F-Curves should have XYZ->RGB color mode */
+ INSERTKEY_XYZ2RGB = (1 << 5),
+ /** ignore user-prefs (needed for predictable API use) */
+ INSERTKEY_NO_USERPREF = (1 << 6),
+ /** Allow to make a full copy of new key into existing one, if any,
+ * instead of 'reusing' existing handles.
+ * Used by copy/paste code. */
+ INSERTKEY_OVERWRITE_FULL = (1 << 7),
+ /** for driver FCurves, use driver's "input" value - for easier corrective driver setup */
+ INSERTKEY_DRIVER = (1 << 8),
+ /** for cyclic FCurves, adjust key timing to preserve the cycle period and flow */
+ INSERTKEY_CYCLE_AWARE = (1 << 9),
} eInsertKeyFlags;
/* ************************************************ */
@@ -1000,15 +982,15 @@ typedef enum eInsertKeyFlags {
* evaluated on frame-change now. That situation may change in future.
*/
typedef struct AnimOverride {
- struct AnimOverride *next, *prev;
+ struct AnimOverride *next, *prev;
- /** RNA-path to use to resolve data-access. */
- char *rna_path;
- /** If applicable, the index of the RNA-array item to get. */
- int array_index;
+ /** RNA-path to use to resolve data-access. */
+ char *rna_path;
+ /** If applicable, the index of the RNA-array item to get. */
+ int array_index;
- /** Value to override setting with. */
- float value;
+ /** Value to override setting with. */
+ float value;
} AnimOverride;
/* AnimData ------------------------------------- */
@@ -1028,80 +1010,80 @@ typedef struct AnimOverride {
* See blenkernel/intern/anim_sys.c for details.
*/
typedef struct AnimData {
- /** active action - acts as the 'tweaking track' for the NLA */
- bAction *action;
- /** temp-storage for the 'real' active action (i.e. the one used before the tweaking-action
- * took over to be edited in the Animation Editors)
- */
- bAction *tmpact;
-
- /* nla-tracks */
- ListBase nla_tracks;
- /**
- * Active NLA-track
- * (only set/used during tweaking, so no need to worry about dangling pointers).
- */
- NlaTrack *act_track;
- /**
- * Active NLA-strip
- * (only set/used during tweaking, so no need to worry about dangling pointers).
- */
- NlaStrip *actstrip;
-
- /* 'drivers' for this ID-block's settings - FCurves, but are completely
- * separate from those for animation data
- */
- /** Standard user-created Drivers/Expressions (used as part of a rig). */
- ListBase drivers;
- /** Temp storage (AnimOverride) of values for settings that are animated
- * (but the value hasn't been keyframed). */
- ListBase overrides;
-
- /** Runtime data, for depsgraph evaluation. */
- FCurve **driver_array;
-
- /* settings for animation evaluation */
- /** User-defined settings. */
- int flag;
- char _pad[4];
-
- /* settings for active action evaluation (based on NLA strip settings) */
- /** Accumulation mode for active action. */
- short act_blendmode;
- /** Extrapolation mode for active action. */
- short act_extendmode;
- /** Influence for active action. */
- float act_influence;
+ /** active action - acts as the 'tweaking track' for the NLA */
+ bAction *action;
+ /** temp-storage for the 'real' active action (i.e. the one used before the tweaking-action
+ * took over to be edited in the Animation Editors)
+ */
+ bAction *tmpact;
+
+ /* nla-tracks */
+ ListBase nla_tracks;
+ /**
+ * Active NLA-track
+ * (only set/used during tweaking, so no need to worry about dangling pointers).
+ */
+ NlaTrack *act_track;
+ /**
+ * Active NLA-strip
+ * (only set/used during tweaking, so no need to worry about dangling pointers).
+ */
+ NlaStrip *actstrip;
+
+ /* 'drivers' for this ID-block's settings - FCurves, but are completely
+ * separate from those for animation data
+ */
+ /** Standard user-created Drivers/Expressions (used as part of a rig). */
+ ListBase drivers;
+ /** Temp storage (AnimOverride) of values for settings that are animated
+ * (but the value hasn't been keyframed). */
+ ListBase overrides;
+
+ /** Runtime data, for depsgraph evaluation. */
+ FCurve **driver_array;
+
+ /* settings for animation evaluation */
+ /** User-defined settings. */
+ int flag;
+ char _pad[4];
+
+ /* settings for active action evaluation (based on NLA strip settings) */
+ /** Accumulation mode for active action. */
+ short act_blendmode;
+ /** Extrapolation mode for active action. */
+ short act_extendmode;
+ /** Influence for active action. */
+ float act_influence;
} AnimData;
/* Animation Data settings (mostly for NLA) */
typedef enum eAnimData_Flag {
- /** Only evaluate a single track in the NLA. */
- ADT_NLA_SOLO_TRACK = (1 << 0),
- /** Don't use NLA */
- ADT_NLA_EVAL_OFF = (1 << 1),
- /** NLA is being 'tweaked' (i.e. in EditMode). */
- ADT_NLA_EDIT_ON = (1 << 2),
- /** Active Action for 'tweaking' does not have mapping applied for editing. */
- ADT_NLA_EDIT_NOMAP = (1 << 3),
- /** NLA-Strip F-Curves are expanded in UI. */
- ADT_NLA_SKEYS_COLLAPSED = (1 << 4),
-
- /** Drivers expanded in UI. */
- ADT_DRIVERS_COLLAPSED = (1 << 10),
- /** Don't execute drivers. */
- ADT_DRIVERS_DISABLED = (1 << 11),
-
- /** AnimData block is selected in UI. */
- ADT_UI_SELECTED = (1 << 14),
- /** AnimData block is active in UI. */
- ADT_UI_ACTIVE = (1 << 15),
-
- /** F-Curves from this AnimData block are not visible in the Graph Editor. */
- ADT_CURVES_NOT_VISIBLE = (1 << 16),
-
- /** F-Curves from this AnimData block are always visible. */
- ADT_CURVES_ALWAYS_VISIBLE = (1 << 17),
+ /** Only evaluate a single track in the NLA. */
+ ADT_NLA_SOLO_TRACK = (1 << 0),
+ /** Don't use NLA */
+ ADT_NLA_EVAL_OFF = (1 << 1),
+ /** NLA is being 'tweaked' (i.e. in EditMode). */
+ ADT_NLA_EDIT_ON = (1 << 2),
+ /** Active Action for 'tweaking' does not have mapping applied for editing. */
+ ADT_NLA_EDIT_NOMAP = (1 << 3),
+ /** NLA-Strip F-Curves are expanded in UI. */
+ ADT_NLA_SKEYS_COLLAPSED = (1 << 4),
+
+ /** Drivers expanded in UI. */
+ ADT_DRIVERS_COLLAPSED = (1 << 10),
+ /** Don't execute drivers. */
+ ADT_DRIVERS_DISABLED = (1 << 11),
+
+ /** AnimData block is selected in UI. */
+ ADT_UI_SELECTED = (1 << 14),
+ /** AnimData block is active in UI. */
+ ADT_UI_ACTIVE = (1 << 15),
+
+ /** F-Curves from this AnimData block are not visible in the Graph Editor. */
+ ADT_CURVES_NOT_VISIBLE = (1 << 16),
+
+ /** F-Curves from this AnimData block are always visible. */
+ ADT_CURVES_ALWAYS_VISIBLE = (1 << 17),
} eAnimData_Flag;
/* Base Struct for Anim ------------------------------------- */
@@ -1112,8 +1094,8 @@ typedef enum eAnimData_Flag {
* should have the same arrangement in their structs.
*/
typedef struct IdAdtTemplate {
- ID id;
- AnimData *adt;
+ ID id;
+ AnimData *adt;
} IdAdtTemplate;
/* ************************************************ */