Blender V5.0
DNA_constraint_types.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
9
10#pragma once
11
12#include "DNA_ID.h"
13#include "DNA_defs.h"
14#include "DNA_listBase.h"
15
16struct Text;
17
19typedef struct bConstraint {
21
23 void *data;
25 short type;
27 short flag;
28
33
34 /* An "expand" bit for each of the constraint's (sub)panels (uiPanelDataExpansion). */
36
40 char space_subtarget[/*MAX_NAME*/ 64];
41
43 char name[/*MAX_NAME*/ 64];
44
46 float enforce;
48 float headtail;
49
50 /* Below are read-only fields that are set at runtime
51 * by the solver for use in the GE (only IK at the moment). */
53 float lin_error;
55 float rot_error;
57
58/* Multiple-target constraints --------------------- */
59
60/* This struct defines a constraint target.
61 * It is used during constraint solving regardless of how many targets the
62 * constraint has.
63 */
64typedef struct bConstraintTarget {
66
68 struct Object *tar;
70 char subtarget[/*MAX_NAME*/ 64];
71
73 float matrix[4][4];
74
76 short space;
78 short flag;
80 short type;
82 short rotOrder;
84 float weight;
85 char _pad[4];
87
88/* bConstraintTarget -> flag */
95
96/* bConstraintTarget/bConstraintOb -> type */
97typedef enum eConstraintObType {
105 /* CONSTRAINT_OBTYPE_CV = 4, */ /* UNUSED */
107
108/* Inverse-Kinematics (IK) constraint
109 * This constraint supports a variety of mode determine by the type field
110 * according to eConstraint_IK_Type.
111 * Some fields are used by all types, some are specific to some types
112 * This is indicated in the comments for each field
113 */
114typedef struct bKinematicConstraint {
116 struct Object *tar;
120 short flag;
122 short rootbone;
126 char subtarget[/*MAX_NAME*/ 64];
130 char polesubtarget[/*MAX_NAME*/ 64];
134 float weight;
138 float grabtarget[3];
140 short type;
142 short mode;
144 float dist;
146
153
154/* Spline IK Constraint
155 * Aligns 'n' bones to the curvature defined by the curve,
156 * with the chain ending on the bone that owns this constraint,
157 * and starting on the nth parent.
158 */
159typedef struct bSplineIKConstraint {
160 /* target(s) */
162 struct Object *tar;
163
164 /* binding details */
169 float *points;
173 short chainlen;
174
175 /* settings */
177 short flag;
182 short _pad[3];
183
184 /* volume preservation settings */
185 float bulge;
190
191/* Armature Constraint */
200
201/* Single-target sub-object constraints --------------------- */
202
203/* Track To Constraint */
204typedef struct bTrackToConstraint {
205 struct Object *tar;
213 int flags;
214 char _pad[4];
215 char subtarget[/*MAX_NAME*/ 64];
217
218/* Copy Rotation Constraint */
219typedef struct bRotateLikeConstraint {
220 struct Object *tar;
221 int flag;
224 char _pad[2];
225 char subtarget[/*MAX_NAME*/ 64];
227
228/* Copy Location Constraint */
229typedef struct bLocateLikeConstraint {
230 struct Object *tar;
231 int flag;
233 char subtarget[/*MAX_NAME*/ 64];
235
236/* Copy Scale Constraint */
237typedef struct bSizeLikeConstraint {
238 struct Object *tar;
239 int flag;
240 float power;
241 char subtarget[/*MAX_NAME*/ 64];
243
244/* Maintain Volume Constraint */
251
252/* Copy Transform Constraint */
253typedef struct bTransLikeConstraint {
254 struct Object *tar;
255 int flag;
257 char _pad[3];
258 char subtarget[/*MAX_NAME*/ 64];
260
261/* Floor Constraint */
262typedef struct bMinMaxConstraint {
263 struct Object *tar;
265 float offset;
266 int flag;
267 char subtarget[/*MAX_NAME*/ 64];
268 int _pad;
270
271/* Action Constraint */
272typedef struct bActionConstraint {
273 struct Object *tar;
275 short type;
277 short local;
279 int start;
281 int end;
283 float min;
285 float max;
286 int flag;
288 char _pad[3];
289 float eval_time; /* Only used when flag ACTCON_USE_EVAL_TIME is set. */
290 struct bAction *act;
292 char last_slot_identifier[/*MAX_ID_NAME*/ 258];
293 char _pad1[2];
294 char subtarget[/*MAX_NAME*/ 64];
296
297/* Locked Axis Tracking constraint */
298typedef struct bLockTrackConstraint {
299 struct Object *tar;
302 char subtarget[/*MAX_NAME*/ 64];
304
305/* Damped Tracking constraint */
306typedef struct bDampTrackConstraint {
307 struct Object *tar;
309 char _pad[4];
310 char subtarget[/*MAX_NAME*/ 64];
312
313/* Follow Path constraints */
328
329/* Stretch to constraint */
330typedef struct bStretchToConstraint {
331 struct Object *tar;
332 int flag;
334 int plane;
336 float bulge;
340 char subtarget[/*MAX_NAME*/ 64];
342
343/* DEPRECATED: Rigid Body constraint */
345 struct Object *tar;
346 struct Object *child;
347 int type;
348 float pivX;
349 float pivY;
350 float pivZ;
351 float axX;
352 float axY;
353 float axZ;
354 float minLimit[6];
355 float maxLimit[6];
356 float extraFz;
357 short flag;
358 char _pad[6];
360
361/* Clamp-To Constraint */
370
371/* Child Of Constraint */
372typedef struct bChildOfConstraint {
374 struct Object *tar;
376 int flag;
377 char _pad[4];
379 float invmat[4][4];
381 char subtarget[/*MAX_NAME*/ 64];
383
384/* Generic Transform->Transform Constraint */
385typedef struct bTransformConstraint {
387 struct Object *tar;
388 char subtarget[/*MAX_NAME*/ 64];
389
391 short from, to;
393 char map[3];
395 char expo;
396
401
406
407 char _pad[3];
408
410 float from_min[3];
412 float from_max[3];
414 float to_min[3];
415 float to_max[3];
416
418 float from_min_rot[3];
420 float from_max_rot[3];
422 float to_min_rot[3];
423 float to_max_rot[3];
424
430 float to_min_scale[3];
431 float to_max_scale[3];
433
434/* Pivot Constraint */
435typedef struct bPivotConstraint {
436 /* Pivot Point:
437 * Either target object + offset, or just offset is used
438 */
440 struct Object *tar;
442 char subtarget[/*MAX_NAME*/ 64];
444 float offset[3];
445
446 /* Rotation-driven activation:
447 * This option provides easier one-stop setups for foot-rolls.
448 */
450 short rotAxis;
451
452 /* General flags */
454 short flag;
456
457/* transform limiting constraints - zero target ---------------------------- */
458/* Limit Location Constraint */
459typedef struct bLocLimitConstraint {
460 float xmin, xmax;
461 float ymin, ymax;
462 float zmin, zmax;
463 short flag;
464 short flag2;
466
467/* Limit Rotation Constraint */
468typedef struct bRotLimitConstraint {
469 float xmin, xmax;
470 float ymin, ymax;
471 float zmin, zmax;
472 short flag;
473 short flag2;
475 char _pad[3];
477
478/* Limit Scale Constraint */
486
487/* Limit Distance Constraint */
488typedef struct bDistLimitConstraint {
489 struct Object *tar;
490 char subtarget[/*MAX_NAME*/ 64];
491
493 float dist;
495 float soft;
496
498 short flag;
500 short mode;
501 char _pad[4];
503
504/* ShrinkWrap Constraint */
525
526/* Follow Track constraints */
529 char track[/*MAX_NAME*/ 64];
530 int flag;
532 char object[/*MAX_NAME*/ 64];
533 struct Object *camera;
536
537/* Camera Solver constraints */
543
544/* Camera Solver constraints */
547 int flag;
548 char _pad[4];
549 char object[/*MAX_NAME*/ 64];
551 float invmat[4][4];
552 struct Object *camera;
554
555/* Transform matrix cache constraint */
558 char object_path[/*FILE_MAX*/ 1024];
559
560 /* Runtime. */
562 char reader_object_path[/*FILE_MAX*/ 1024];
564
565/* bGeometryAttributeConstraint->flag */
572
573/* Geometry Attribute Constraint */
575 struct Object *target;
579 uint8_t mix_mode;
580 /* #Attribute_Domain */
581 uint8_t domain;
582 /* #Attribute_Data_Type */
583 uint8_t data_type;
584 /* #eGeometryAttributeConstraint_Flags */
585 uint8_t flags;
586 char _pad0[7];
588
589/* Atrtibute Domain */
598
599/* Atrtibute Data Type*/
605
607typedef enum Attribute_MixMode {
608 /* Replace rotation channel values. */
610 /* Multiply the copied transformation on the left, handling loc/rot/scale separately. */
612 /* Multiply the copied transformation on the right, handling loc/rot/scale separately. */
614 /* Multiply the copied transformation on the left, using simple matrix multiplication. */
616 /* Multiply the copied transformation on the right, using simple matrix multiplication. */
619
620/* ------------------------------------------ */
621
622/* bConstraint->type
623 * - Do not ever change the order of these, or else files could get
624 * broken as their correct value cannot be resolved
625 */
670
671/* bConstraint->flag */
672/* flags 0x2 (1 << 1) and 0x8 (1 << 3) were used in past */
673/* flag 0x20 (1 << 5) was used to indicate that a constraint was evaluated
674 * using a 'local' hack for pose-bones only. */
675typedef enum eBConstraint_Flags {
676#ifdef DNA_DEPRECATED_ALLOW
677 /* Expansion for old box constraint layouts. Just for versioning. */
678 CONSTRAINT_EXPAND_DEPRECATED = (1 << 0),
679#endif
680 /* Constraint is disabled because it is considered invalid. `is_valid` in RNA. */
682 /* to indicate which Ipo should be shown, maybe for 3d access later too */
684 /* to indicate that the owner's space should only be changed into ownspace, but not out of it */
686 /* influence ipo is on constraint itself, not in action channel */
688 /* Constraint is disabled by the user or the animation system (eye icon in the interface). */
689 CONSTRAINT_OFF = (1 << 9),
690 /* use bbone curve shape when calculating headtail values (also used by dependency graph!) */
692 /* That constraint has been inserted in local override (i.e. it can be fully edited!). */
694 /* use full transformation (not just segment locations) - only set at runtime. */
697
698/* bConstraint->ownspace/tarspace */
718
719/* Common enum for constraints that support override. */
732
733/* -------------------------------------- */
734
737 ROTLIKE_X = (1 << 0),
738 ROTLIKE_Y = (1 << 1),
739 ROTLIKE_Z = (1 << 2),
743#ifdef DNA_DEPRECATED_ALLOW
744 ROTLIKE_OFFSET = (1 << 7),
745#endif
747
750 /* Replace rotation channel values. */
752 /* Legacy Offset mode - don't use. */
754 /* Add Euler components together. */
756 /* Multiply the copied rotation on the left. */
758 /* Multiply the copied rotation on the right. */
761
764 LOCLIKE_X = (1 << 0),
765 LOCLIKE_Y = (1 << 1),
766 LOCLIKE_Z = (1 << 2),
768 LOCLIKE_TIP = (1 << 3),
772 LOCLIKE_OFFSET = (1 << 7),
774
776typedef enum eCopyScale_Flags {
777 SIZELIKE_X = (1 << 0),
778 SIZELIKE_Y = (1 << 1),
779 SIZELIKE_Z = (1 << 2),
780 SIZELIKE_OFFSET = (1 << 3),
784
787 /* Remove shear from the target matrix. */
790
793 /* Replace rotation channel values. */
795 /* Multiply the copied transformation on the left, with anti-shear scale handling. */
797 /* Multiply the copied transformation on the right, with anti-shear scale handling. */
799 /* Multiply the copied transformation on the left, handling loc/rot/scale separately. */
801 /* Multiply the copied transformation on the right, handling loc/rot/scale separately. */
803 /* Multiply the copied transformation on the left, using simple matrix multiplication. */
805 /* Multiply the copied transformation on the right, using simple matrix multiplication. */
808
809/* bTransformConstraint.to/from */
815
818 /* Add component values together (default). */
820 /* Replace component values. */
823
826 /* Add component values together (default). */
828 /* Replace component values. */
830 /* Multiply the generated rotation on the left. */
832 /* Multiply the generated rotation on the right. */
835
838 /* Replace component values (default). */
840 /* Multiply component values together. */
843
850
852typedef enum eSameVolume_Mode {
853 /* Strictly maintain the volume, overriding non-free axis scale. */
855 /* Maintain the volume when scale is uniform, pass non-uniform other axis scale through. */
857 /* Maintain the volume when scaled only on the free axis, pass other axis scale through. */
860
863 /* Bones use "object" part of target action, instead of "same bone name" part */
865 /* Ignore the transform of 'tar' and use 'eval_time' instead: */
868
871 /* Replace the input transformation. */
873 /* Multiply the action transformation on the right. */
875 /* Multiply the action transformation on the left. */
877 /* Multiply the action transformation on the right, with anti-shear scale handling. */
879 /* Multiply the action transformation on the left, with anti-shear scale handling. */
881 /* Separately combine Translation, Rotation and Scale, with rotation on the right. */
883 /* Separately combine Translation, Rotation and Scale, with rotation on the left. */
886
887/* Locked-Axis Values (Locked Track) */
893
894/* Up-Axis Values (TrackTo and Locked Track) */
900
901/* Tracking axis (TrackTo, Locked Track, Damped Track) and minmax (floor) constraint */
910
911/* Shrinkwrap flags */
912typedef enum eShrinkwrap_Flags {
913 /* Also ray-cast in the opposite direction. */
915 /* Invert the cull mode when projecting opposite. */
917 /* Align the specified axis to the target normal. */
919
920 /* Ignore front faces in project; same value as MOD_SHRINKWRAP_CULL_TARGET_FRONTFACE */
922 /* Ignore back faces in project; same value as MOD_SHRINKWRAP_CULL_TARGET_BACKFACE */
925
926#define CON_SHRINKWRAP_PROJECT_CULL_MASK \
927 (CON_SHRINKWRAP_PROJECT_CULL_FRONTFACE | CON_SHRINKWRAP_PROJECT_CULL_BACKFACE)
928
929/* FollowPath flags */
935
936/* bTrackToConstraint->flags */
940
941/* Stretch To Constraint -> volmode */
948
949/* Stretch To Constraint -> plane mode */
955
956/* Clamp-To Constraint ->flag */
963
964/* ClampTo Constraint ->flag2 */
968
969/* bKinematicConstraint->flag */
970typedef enum eKinematic_Flags {
973 /* targetless */
975 /* autoik */
981 /* limit axis */
988 /* axis relative to target */
991
993typedef enum eSplineIK_Flags {
998#ifdef DNA_DEPRECATED_ALLOW
1000 CONSTRAINT_SPLINEIK_SCALE_LIMITED = (1 << 2),
1001#endif
1006
1010
1014
1026
1036
1046
1047/* MinMax (floor) flags */
1048typedef enum eFloor_Flags {
1049 /* MINMAX_STICKY = (1 << 0), */ /* Deprecated. */
1050 /* MINMAX_STUCK = (1 << 1), */ /* Deprecated. */
1051 MINMAX_USEROT = (1 << 2),
1053
1054/* transform limiting constraints -> flag2 */
1056 /* not used anymore - for older Limit Location constraints only */
1057 /* LIMIT_NOPARENT = (1 << 0), */ /* UNUSED */
1058 /* for all Limit constraints - allow to be used during transform? */
1061
1062/* transform limiting constraints -> flag. */
1064 LIMIT_XMIN = (1 << 0),
1065 LIMIT_XMAX = (1 << 1),
1066 LIMIT_YMIN = (1 << 2),
1067 LIMIT_YMAX = (1 << 3),
1068 LIMIT_ZMIN = (1 << 4),
1069 LIMIT_ZMAX = (1 << 5),
1071
1072/* limit rotation constraint -> flag. */
1073typedef enum eRotLimit_Flags {
1074 LIMIT_XROT = (1 << 0),
1075 LIMIT_YROT = (1 << 1),
1076 LIMIT_ZROT = (1 << 2),
1077
1078 /* Use the legacy behavior of the Limit Rotation constraint. See the
1079 * implementation of `rotlimit_evaluate()` in constraint.cc for more
1080 * details. */
1083
1084/* distance limit constraint */
1085/* bDistLimitConstraint->flag */
1086typedef enum eDistLimit_Flag {
1087 /* "soft" cushion effect when reaching the limit sphere */ /* NOT IMPLEMENTED! */
1089 /* as for all Limit constraints - allow to be used during transform? */
1092
1093/* bDistLimitConstraint->mode */
1099
1100/* ChildOf Constraint -> flag */
1101typedef enum eChildOf_Flags {
1102 CHILDOF_LOCX = (1 << 0),
1103 CHILDOF_LOCY = (1 << 1),
1104 CHILDOF_LOCZ = (1 << 2),
1105 CHILDOF_ROTX = (1 << 3),
1106 CHILDOF_ROTY = (1 << 4),
1107 CHILDOF_ROTZ = (1 << 5),
1108 CHILDOF_SIZEX = (1 << 6),
1109 CHILDOF_SIZEY = (1 << 7),
1110 CHILDOF_SIZEZ = (1 << 8),
1112 /* Temporary flag used by the Set Inverse operator. */
1115
1139
1140/* settings for Pivot Constraint in general */
1142 /* offset is to be interpreted as being a fixed-point in space */
1144 /* rotation-based activation uses negative rotation to drive result */
1147
1153
1159
1160/* CameraSolver Constraint -> flag */
1164
1165/* ObjectSolver Constraint -> flag */
1168 /* Temporary flag used by the Set Inverse operator. */
1171
1172/* ObjectSolver Constraint -> flag */
ID and Library types, which are fundamental for SDNA.
@ CONSTRAINT_BBONE_SHAPE
@ CONSTRAINT_OFF
@ CONSTRAINT_OVERRIDE_LIBRARY_LOCAL
@ CONSTRAINT_SPACEONCE
@ CONSTRAINT_ACTIVE
@ CONSTRAINT_DISABLE
@ CONSTRAINT_OWN_IPO
@ CONSTRAINT_BBONE_SHAPE_FULL
@ SIZELIKE_MULTIPLY
@ SIZELIKE_UNIFORM
@ SIZELIKE_OFFSET
@ CONSTRAINT_IK_ROT
@ CONSTRAINT_IK_NO_ROT_X
@ CONSTRAINT_IK_TARGETAXIS
@ CONSTRAINT_IK_NO_POS_Z
@ CONSTRAINT_IK_GETANGLE
@ CONSTRAINT_IK_TEMP
@ CONSTRAINT_IK_NO_POS_Y
@ CONSTRAINT_IK_SETANGLE
@ CONSTRAINT_IK_NO_ROT_Y
@ CONSTRAINT_IK_POS
@ CONSTRAINT_IK_NO_POS_X
@ CONSTRAINT_IK_NO_ROT_Z
@ CONSTRAINT_IK_AUTO
@ CONSTRAINT_IK_STRETCH
@ CONSTRAINT_IK_TIP
eConstraintTargetFlag
@ CONSTRAINT_TAR_TEMP
@ CONSTRAINT_TAR_CUSTOM_SPACE
eCopyRotation_MixMode
@ ROTLIKE_MIX_OFFSET
@ ROTLIKE_MIX_BEFORE
@ ROTLIKE_MIX_AFTER
@ ROTLIKE_MIX_REPLACE
@ ROTLIKE_MIX_ADD
@ CONSTRAINT_TYPE_TRACKTO
@ CONSTRAINT_TYPE_PIVOT
@ CONSTRAINT_TYPE_CHILDOF
@ CONSTRAINT_TYPE_TRANSFORM
@ CONSTRAINT_TYPE_FOLLOWTRACK
@ CONSTRAINT_TYPE_OBJECTSOLVER
@ CONSTRAINT_TYPE_ARMATURE
@ CONSTRAINT_TYPE_LOCLIKE
@ CONSTRAINT_TYPE_SHRINKWRAP
@ CONSTRAINT_TYPE_MINMAX
@ CONSTRAINT_TYPE_ROTLIMIT
@ CONSTRAINT_TYPE_CAMERASOLVER
@ CONSTRAINT_TYPE_GEOMETRY_ATTRIBUTE
@ CONSTRAINT_TYPE_ROTLIKE
@ CONSTRAINT_TYPE_SPLINEIK
@ CONSTRAINT_TYPE_KINEMATIC
@ CONSTRAINT_TYPE_NULL
@ NUM_CONSTRAINT_TYPES
@ CONSTRAINT_TYPE_DISTLIMIT
@ CONSTRAINT_TYPE_TRANSLIKE
@ CONSTRAINT_TYPE_LOCLIMIT
@ CONSTRAINT_TYPE_CLAMPTO
@ CONSTRAINT_TYPE_LOCKTRACK
@ CONSTRAINT_TYPE_SIZELIMIT
@ CONSTRAINT_TYPE_ACTION
@ CONSTRAINT_TYPE_FOLLOWPATH
@ CONSTRAINT_TYPE_STRETCHTO
@ CONSTRAINT_TYPE_SIZELIKE
@ CONSTRAINT_TYPE_SAMEVOL
@ CONSTRAINT_TYPE_DAMPTRACK
@ CONSTRAINT_TYPE_TRANSFORM_CACHE
eConstraintObType
@ CONSTRAINT_OBTYPE_OBJECT
@ CONSTRAINT_OBTYPE_BONE
@ CONSTRAINT_OBTYPE_VERT
Attribute_Data_Type
@ CON_ATTRIBUTE_QUATERNION
@ CON_ATTRIBUTE_4X4MATRIX
@ CON_ATTRIBUTE_VECTOR
@ LIMITDIST_INSIDE
@ LIMITDIST_OUTSIDE
@ LIMITDIST_ONSURFACE
@ CONSTRAINT_ARMATURE_QUATERNION
@ CONSTRAINT_ARMATURE_ENVELOPE
@ CONSTRAINT_ARMATURE_CUR_LOCATION
@ CAMERASOLVER_ACTIVECLIP
@ FOLLOWTRACK_USE_UNDISTORTION
@ FOLLOWTRACK_USE_3D_POSITION
@ FOLLOWTRACK_ACTIVECLIP
eGeometryAttributeConstraint_Flags
@ APPLY_TARGET_TRANSFORM
eActionConstraint_Flags
@ ACTCON_BONE_USE_OBJECT_ACTION
@ ACTCON_USE_EVAL_TIME
@ LIMIT_ROT_LEGACY_BEHAVIOR
eTransform_MixModeScale
@ TRANS_MIXSCALE_MULTIPLY
@ TRANS_MIXSCALE_REPLACE
eSplineIK_YScaleModes
@ CONSTRAINT_SPLINEIK_YS_NONE
@ CONSTRAINT_SPLINEIK_YS_FIT_CURVE
@ CONSTRAINT_SPLINEIK_YS_ORIGINAL
eTransform_MixModeLoc
@ TRANS_MIXLOC_ADD
@ TRANS_MIXLOC_REPLACE
eBConstraint_SpaceTypes
@ CONSTRAINT_SPACE_CUSTOM
@ CONSTRAINT_SPACE_INVALID
@ CONSTRAINT_SPACE_POSE
@ CONSTRAINT_SPACE_WORLD
@ CONSTRAINT_SPACE_OWNLOCAL
@ CONSTRAINT_SPACE_LOCAL
@ CONSTRAINT_SPACE_PARLOCAL
@ CON_ATTRIBUTE_DOMAIN_EDGE
@ CON_ATTRIBUTE_DOMAIN_POINT
@ CON_ATTRIBUTE_DOMAIN_CURVE
@ CON_ATTRIBUTE_DOMAIN_FACE_CORNER
@ CON_ATTRIBUTE_DOMAIN_FACE
@ CON_ATTRIBUTE_DOMAIN_INSTANCE
eActionConstraint_MixMode
@ ACTCON_MIX_BEFORE
@ ACTCON_MIX_REPLACE
@ ACTCON_MIX_BEFORE_SPLIT
@ ACTCON_MIX_BEFORE_FULL
@ ACTCON_MIX_AFTER_FULL
@ ACTCON_MIX_AFTER_SPLIT
@ ACTCON_MIX_AFTER
@ FOLLOWPATH_FOLLOW
@ FOLLOWPATH_RADIUS
@ FOLLOWPATH_STATIC
eTransformLimits_Flags2
@ LIMIT_TRANSFORM
@ CON_ATTRIBUTE_MIX_AFTER_FULL
@ CON_ATTRIBUTE_MIX_AFTER_SPLIT
@ CON_ATTRIBUTE_MIX_BEFORE_SPLIT
@ CON_ATTRIBUTE_MIX_BEFORE_FULL
@ CON_ATTRIBUTE_MIX_REPLACE
eTransformLimits_Flags
@ CONSTRAINT_SPLINEIK_EVENSPLITS
@ CONSTRAINT_SPLINEIK_USE_BULGE_MAX
@ CONSTRAINT_SPLINEIK_USE_ORIGINAL_SCALE
@ CONSTRAINT_SPLINEIK_USE_BULGE_MIN
@ CONSTRAINT_SPLINEIK_BOUND
@ CONSTRAINT_SPLINEIK_NO_CURVERAD
@ CONSTRAINT_SPLINEIK_NO_ROOT
eCopyTransforms_MixMode
@ TRANSLIKE_MIX_AFTER
@ TRANSLIKE_MIX_AFTER_FULL
@ TRANSLIKE_MIX_BEFORE
@ TRANSLIKE_MIX_BEFORE_SPLIT
@ TRANSLIKE_MIX_REPLACE
@ TRANSLIKE_MIX_BEFORE_FULL
@ TRANSLIKE_MIX_AFTER_SPLIT
@ OBJECTSOLVER_ACTIVECLIP
@ OBJECTSOLVER_SET_INVERSE
@ CON_SHRINKWRAP_PROJECT_INVERT_CULL
@ CON_SHRINKWRAP_PROJECT_OPPOSITE
@ CON_SHRINKWRAP_PROJECT_CULL_FRONTFACE
@ CON_SHRINKWRAP_PROJECT_CULL_BACKFACE
@ CON_SHRINKWRAP_TRACK_NORMAL
@ CLAMPTO_CYCLIC
eConstraint_IK_Type
@ CONSTRAINT_IK_COPYPOSE
@ CONSTRAINT_IK_DISTANCE
ePivotConstraint_Axis
@ PIVOTCON_AXIS_X_NEG
@ PIVOTCON_AXIS_X
@ PIVOTCON_AXIS_Z
@ PIVOTCON_AXIS_Z_NEG
@ PIVOTCON_AXIS_Y
@ PIVOTCON_AXIS_NONE
@ PIVOTCON_AXIS_Y_NEG
@ SAMEVOL_SINGLE_AXIS
@ SAMEVOL_STRICT
@ SAMEVOL_UNIFORM
ePivotConstraint_Flag
@ PIVOTCON_FLAG_OFFSET_ABS
@ PIVOTCON_FLAG_ROTACT_NEG
eConstraint_EulerOrder
@ CONSTRAINT_EULER_XZY
@ CONSTRAINT_EULER_YXZ
@ CONSTRAINT_EULER_ZYX
@ CONSTRAINT_EULER_AUTO
@ CONSTRAINT_EULER_ZXY
@ CONSTRAINT_EULER_YZX
@ CONSTRAINT_EULER_XYZ
eCopyTransforms_Flags
@ TRANSLIKE_REMOVE_TARGET_SHEAR
@ LIMITDIST_TRANSFORM
@ LIMITDIST_USESOFT
@ STRETCHTOCON_USE_BULGE_MAX
@ STRETCHTOCON_USE_BULGE_MIN
eCopyRotation_Flags
@ ROTLIKE_Y_INVERT
@ ROTLIKE_Z_INVERT
@ ROTLIKE_X_INVERT
eCopyLocation_Flags
@ LOCLIKE_Z_INVERT
@ LOCLIKE_Y_INVERT
@ LOCLIKE_OFFSET
@ LOCLIKE_X_INVERT
eStretchTo_PlaneMode
@ CHILDOF_SET_INVERSE
eSplineIK_XZScaleModes
@ CONSTRAINT_SPLINEIK_XZS_VOLUMETRIC
@ CONSTRAINT_SPLINEIK_XZS_ORIGINAL
@ CONSTRAINT_SPLINEIK_XZS_NONE
@ CONSTRAINT_SPLINEIK_XZS_INVERSE
@ TRANS_ROTATION
@ TRANS_LOCATION
eTransform_MixModeRot
@ TRANS_MIXROT_REPLACE
@ TRANS_MIXROT_ADD
@ TRANS_MIXROT_BEFORE
@ TRANS_MIXROT_AFTER
eFollowTrack_FrameMethod
@ FOLLOWTRACK_FRAME_CROP
@ FOLLOWTRACK_FRAME_FIT
@ FOLLOWTRACK_FRAME_STRETCH
These structs are the foundation for all linked lists in the library system.
struct bConstraintTarget * prev
struct bConstraintTarget * next
struct Object * space_object
struct bConstraint * prev
struct bConstraint * next