Merge branch 'master' into blende2.8
[blender.git] / source / blender / makesdna / DNA_constraint_types.h
index 424c3ed7dd0047fb66a1eaf81d965220ddd94260..b68ba8d9a8917a112e7902012bf283b85b1d5d7e 100644 (file)
@@ -58,14 +58,14 @@ typedef struct bConstraint {
        short           type;           /* Constraint type      */
        short           flag;           /* Flag - General Settings      */
 
        short           type;           /* Constraint type      */
        short           flag;           /* Flag - General Settings      */
 
-       char            ownspace;       /* Space that owner should be evaluated in      */
+       char            ownspace;       /* Space that owner should be evaluated in */
        char            tarspace;       /* Space that target should be evaluated in (only used if 1 target) */
 
        char            name[64];       /* Constraint name, MAX_NAME */
 
        short           pad;
 
        char            tarspace;       /* Space that target should be evaluated in (only used if 1 target) */
 
        char            name[64];       /* Constraint name, MAX_NAME */
 
        short           pad;
 
-       float           enforce;        /*      Amount of influence exherted by constraint (0.0-1.0) */
+       float           enforce;        /* Amount of influence exherted by constraint (0.0-1.0) */
        float           headtail;       /* Point along subtarget bone where the actual target is. 0=head (default for all), 1=tail*/
 
        struct Ipo *ipo    DNA_DEPRECATED;              /* local influence ipo or driver */  /* old animation system, deprecated for 2.5 */
        float           headtail;       /* Point along subtarget bone where the actual target is. 0=head (default for all), 1=tail*/
 
        struct Ipo *ipo    DNA_DEPRECATED;              /* local influence ipo or driver */  /* old animation system, deprecated for 2.5 */
@@ -94,6 +94,8 @@ typedef struct bConstraintTarget {
        short flag;                             /* runtime settings (for editor, etc.) */
        short type;                             /* type of target (eConstraintObType) */
        short rotOrder;                 /* rotation order for target (as defined in BLI_math.h) */
        short flag;                             /* runtime settings (for editor, etc.) */
        short type;                             /* type of target (eConstraintObType) */
        short rotOrder;                 /* rotation order for target (as defined in BLI_math.h) */
+       float weight;                   /* weight for armature deform */
+       char pad[4];
 } bConstraintTarget;
 
 /* bConstraintTarget -> flag */
 } bConstraintTarget;
 
 /* bConstraintTarget -> flag */
@@ -180,6 +182,13 @@ typedef struct bSplineIKConstraint {
        float           bulge_smooth;
 } bSplineIKConstraint;
 
        float           bulge_smooth;
 } bSplineIKConstraint;
 
+/* Armature Constraint */
+typedef struct bArmatureConstraint {
+       int flag;                       /* general settings/state indicators accessed by bitmapping */
+       char pad[4];
+
+       ListBase targets;               /* a list of targets that this constraint has (bConstraintTarget-s) */
+} bArmatureConstraint;
 
 /* Single-target subobject constraints ---------------------  */
 
 
 /* Single-target subobject constraints ---------------------  */
 
@@ -345,19 +354,19 @@ typedef struct bTransformConstraint {
        char            map[3];                 /* defines which target-axis deform is copied by each owner-axis */
        char            expo;                   /* extrapolate motion? if 0, confine to ranges */
 
        char            map[3];                 /* defines which target-axis deform is copied by each owner-axis */
        char            expo;                   /* extrapolate motion? if 0, confine to ranges */
 
-       float           from_min[3];    /* from_min/max defines range of target transform       */
-       float           from_max[3];    /*      to map on to to_min/max range.                  */
+       float           from_min[3];    /* from_min/max defines range of target transform */
+       float           from_max[3];    /* to map on to to_min/max range. */
        float           to_min[3];              /* range of motion on owner caused by target  */
        float           to_max[3];
 
        float           to_min[3];              /* range of motion on owner caused by target  */
        float           to_max[3];
 
-       float           from_min_rot[3];        /* from_min/max defines range of target transform       */
-       float           from_max_rot[3];        /*      to map on to to_min/max range.                  */
+       float           from_min_rot[3];        /* from_min/max defines range of target transform */
+       float           from_max_rot[3];        /* to map on to to_min/max range. */
        float           to_min_rot[3];          /* range of motion on owner caused by target  */
        float           to_max_rot[3];
 
        float           to_min_rot[3];          /* range of motion on owner caused by target  */
        float           to_max_rot[3];
 
-       float           from_min_scale[3];      /* from_min/max defines range of target transform       */
-       float           from_max_scale[3];      /*      to map on to to_min/max range.                  */
-       float           to_min_scale[3];                /* range of motion on owner caused by target  */
+       float           from_min_scale[3];      /* from_min/max defines range of target transform */
+       float           from_max_scale[3];      /* to map on to to_min/max range. */
+       float           to_min_scale[3];        /* range of motion on owner caused by target  */
        float           to_max_scale[3];
 } bTransformConstraint;
 
        float           to_max_scale[3];
 } bTransformConstraint;
 
@@ -428,7 +437,10 @@ typedef struct bShrinkwrapConstraint {
        char            projAxis;               /* axis to project/constrain */
        char            projAxisSpace;  /* space to project axis in */
        float           projLimit;              /* distance to search */
        char            projAxis;               /* axis to project/constrain */
        char            projAxisSpace;  /* space to project axis in */
        float           projLimit;              /* distance to search */
-       char            pad[4];
+       char            shrinkMode;             /* inside/outside/on surface (see MOD shrinkwrap) */
+       char            flag;                   /* options */
+       char            trackAxis;              /* axis to align to normal */
+       char            pad;
 } bShrinkwrapConstraint;
 
 /* Follow Track constraints */
 } bShrinkwrapConstraint;
 
 /* Follow Track constraints */
@@ -488,7 +500,7 @@ typedef enum eBConstraint_Types {
        CONSTRAINT_TYPE_DISTLIMIT = 14,                 /* limit distance */
        CONSTRAINT_TYPE_STRETCHTO = 15,                 /* claiming this to be mine :) is in tuhopuu bjornmose */
        CONSTRAINT_TYPE_MINMAX = 16,                    /* floor constraint */
        CONSTRAINT_TYPE_DISTLIMIT = 14,                 /* limit distance */
        CONSTRAINT_TYPE_STRETCHTO = 15,                 /* claiming this to be mine :) is in tuhopuu bjornmose */
        CONSTRAINT_TYPE_MINMAX = 16,                    /* floor constraint */
-       CONSTRAINT_TYPE_RIGIDBODYJOINT = 17,            /* rigidbody constraint */
+       /* CONSTRAINT_TYPE_DEPRECATED = 17 */
        CONSTRAINT_TYPE_CLAMPTO = 18,                   /* clampto constraint */
        CONSTRAINT_TYPE_TRANSFORM = 19,                 /* transformation (loc/rot/size -> loc/rot/size) constraint */
        CONSTRAINT_TYPE_SHRINKWRAP = 20,                /* shrinkwrap (loc/rot) constraint */
        CONSTRAINT_TYPE_CLAMPTO = 18,                   /* clampto constraint */
        CONSTRAINT_TYPE_TRANSFORM = 19,                 /* transformation (loc/rot/size -> loc/rot/size) constraint */
        CONSTRAINT_TYPE_SHRINKWRAP = 20,                /* shrinkwrap (loc/rot) constraint */
@@ -501,6 +513,7 @@ typedef enum eBConstraint_Types {
        CONSTRAINT_TYPE_CAMERASOLVER = 27,              /* Camera Solver Constraint */
        CONSTRAINT_TYPE_OBJECTSOLVER = 28,              /* Object Solver Constraint */
        CONSTRAINT_TYPE_TRANSFORM_CACHE = 29,   /* Transform Cache Constraint */
        CONSTRAINT_TYPE_CAMERASOLVER = 27,              /* Camera Solver Constraint */
        CONSTRAINT_TYPE_OBJECTSOLVER = 28,              /* Object Solver Constraint */
        CONSTRAINT_TYPE_TRANSFORM_CACHE = 29,   /* Transform Cache Constraint */
+       CONSTRAINT_TYPE_ARMATURE = 30,                  /* Armature Deform Constraint */
 
        /* NOTE: no constraints are allowed to be added after this */
        NUM_CONSTRAINT_TYPES
 
        /* NOTE: no constraints are allowed to be added after this */
        NUM_CONSTRAINT_TYPES
@@ -524,8 +537,12 @@ typedef enum eBConstraint_Flags {
        CONSTRAINT_PROXY_LOCAL = (1<<8),
                /* indicates that constraint is temporarily disabled (only used in GE) */
        CONSTRAINT_OFF = (1<<9),
        CONSTRAINT_PROXY_LOCAL = (1<<8),
                /* indicates that constraint is temporarily disabled (only used in GE) */
        CONSTRAINT_OFF = (1<<9),
-               /* use bbone curve shape when calculating headtail values */
+               /* use bbone curve shape when calculating headtail values (also used by dependency graph!) */
        CONSTRAINT_BBONE_SHAPE = (1<<10),
        CONSTRAINT_BBONE_SHAPE = (1<<10),
+               /* That constraint has been inserted in local override (i.e. it can be fully edited!). */
+       CONSTRAINT_STATICOVERRIDE_LOCAL = (1 << 11),
+               /* use full transformation (not just segment locations) - only set at runtime  */
+       CONSTRAINT_BBONE_SHAPE_FULL = (1 << 12),
 } eBConstraint_Flags;
 
 /* bConstraint->ownspace/tarspace */
 } eBConstraint_Flags;
 
 /* bConstraint->ownspace/tarspace */
@@ -582,7 +599,8 @@ typedef enum eCopyScale_Flags {
        SIZELIKE_X              = (1<<0),
        SIZELIKE_Y              = (1<<1),
        SIZELIKE_Z              = (1<<2),
        SIZELIKE_X              = (1<<0),
        SIZELIKE_Y              = (1<<1),
        SIZELIKE_Z              = (1<<2),
-       SIZELIKE_OFFSET = (1<<3)
+       SIZELIKE_OFFSET = (1<<3),
+       SIZELIKE_MULTIPLY = (1<<4),
 } eCopyScale_Flags;
 
 /* bTransformConstraint.to/from */
 } eCopyScale_Flags;
 
 /* bTransformConstraint.to/from */
@@ -629,6 +647,23 @@ typedef enum eTrackToAxis_Modes {
        TRACK_nZ        = 5
 } eTrackToAxis_Modes;
 
        TRACK_nZ        = 5
 } eTrackToAxis_Modes;
 
+/* Shrinkwrap flags */
+typedef enum eShrinkwrap_Flags {
+       /* Also raycast in the opposite direction. */
+       CON_SHRINKWRAP_PROJECT_OPPOSITE         = (1 << 0),
+       /* Invert the cull mode when projecting opposite. */
+       CON_SHRINKWRAP_PROJECT_INVERT_CULL      = (1 << 1),
+       /* Align the specified axis to the target normal. */
+       CON_SHRINKWRAP_TRACK_NORMAL             = (1 << 2),
+
+       /* Ignore front faces in project; same value as MOD_SHRINKWRAP_CULL_TARGET_FRONTFACE */
+       CON_SHRINKWRAP_PROJECT_CULL_FRONTFACE   = (1 << 3),
+       /* Ignore back faces in project; same value as MOD_SHRINKWRAP_CULL_TARGET_BACKFACE */
+       CON_SHRINKWRAP_PROJECT_CULL_BACKFACE    = (1 << 4),
+} eShrinkwrap_Flags;
+
+#define CON_SHRINKWRAP_PROJECT_CULL_MASK (CON_SHRINKWRAP_PROJECT_CULL_FRONTFACE | CON_SHRINKWRAP_PROJECT_CULL_BACKFACE)
+
 /* FollowPath flags */
 typedef enum eFollowPath_Flags {
        FOLLOWPATH_FOLLOW       = (1<<0),
 /* FollowPath flags */
 typedef enum eFollowPath_Flags {
        FOLLOWPATH_FOLLOW       = (1<<0),
@@ -722,6 +757,13 @@ typedef enum eSplineIK_XZScaleModes {
        CONSTRAINT_SPLINEIK_XZS_VOLUMETRIC              = 3
 } eSplineIK_XZScaleModes;
 
        CONSTRAINT_SPLINEIK_XZS_VOLUMETRIC              = 3
 } eSplineIK_XZScaleModes;
 
+/* bArmatureConstraint -> flag */
+typedef enum eArmature_Flags {
+       CONSTRAINT_ARMATURE_QUATERNION          = (1<<0),       /* use dual quaternion blending */
+       CONSTRAINT_ARMATURE_ENVELOPE            = (1<<1),       /* use envelopes */
+       CONSTRAINT_ARMATURE_CUR_LOCATION        = (1<<2),       /* use current bone location */
+} eArmature_Flags;
+
 /* MinMax (floor) flags */
 typedef enum eFloor_Flags {
        MINMAX_STICKY   = (1<<0),
 /* MinMax (floor) flags */
 typedef enum eFloor_Flags {
        MINMAX_STICKY   = (1<<0),
@@ -841,10 +883,6 @@ typedef enum eObjectSolver_Flags {
        OBJECTSOLVER_ACTIVECLIP = (1<<0)
 } eObjectSolver_Flags;
 
        OBJECTSOLVER_ACTIVECLIP = (1<<0)
 } eObjectSolver_Flags;
 
-/* Rigid-Body Constraint */
-#define CONSTRAINT_DRAW_PIVOT (1 << 6)
-#define CONSTRAINT_DISABLE_LINKED_COLLISION (1 << 7)
-
 /* ObjectSolver Constraint -> flag */
 typedef enum eStretchTo_Flags {
        STRETCHTOCON_USE_BULGE_MIN = (1 << 0),
 /* ObjectSolver Constraint -> flag */
 typedef enum eStretchTo_Flags {
        STRETCHTOCON_USE_BULGE_MIN = (1 << 0),