Blender V5.0
DNA_action_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
12
13#pragma once
14
15#include "DNA_ID.h"
16#include "DNA_armature_types.h"
17#include "DNA_listBase.h"
19#include "DNA_userdef_types.h" /* ThemeWireColor */
20#include "DNA_vec_types.h"
21#include "DNA_view2d_types.h"
22
23#ifdef __cplusplus
24# include <type_traits>
25#endif
26
27struct AnimData;
28struct Collection;
29struct FCurve;
30struct GHash;
31struct Object;
32struct SpaceLink;
33#ifdef __cplusplus
34namespace blender::gpu {
35class VertBuf;
36class Batch;
37} // namespace blender::gpu
38using GPUBatchHandle = blender::gpu::Batch;
40#else
43#endif
44
45/* Forward declarations so the actual declarations can happen top-down. */
46struct ActionLayer;
47struct ActionSlot;
48struct ActionStrip;
49struct ActionChannelbag;
50
51/* Declarations of the C++ wrappers. */
52#ifdef __cplusplus
53namespace blender::animrig {
54class Action;
55class Slot;
56class SlotRuntime;
57class Channelbag;
58class ChannelGroup;
59class Layer;
60class Strip;
61class StripKeyframeData;
62} // namespace blender::animrig
64#else
66#endif
67
68/* ************************************************ */
69/* Visualization */
70
71/* Motion Paths ------------------------------------ */
72/* (used for Pose Channels and Objects) */
73
75typedef struct bMotionPathVert {
77 float co[3];
79 int flag;
81
84 /* vert is selected */
88
89/* ........ */
90
91/* Motion Path data cache (mpath)
92 * - for elements providing transforms (i.e. Objects or PoseChannels)
93 */
120
121/* bMotionPath->flag */
122typedef enum eMotionPath_Flag {
123 /* (for bones) path represents the head of the bone */
125 /* motion path is being edited */
127 /* Custom colors */
129 /* Draw lines or only points */
131 /* Bake to scene camera. */
134
135/* Visualization General --------------------------- */
136/* for Objects or Poses (but NOT PoseChannels) */
137
138/* Animation Visualization Settings (avs) */
139typedef struct bAnimVizSettings {
140 /* General Settings ------------------------ */
142 short recalc;
143
144 /* Motion Path Settings ------------------- */
151
156 char _pad[4];
157
163
164/* bAnimVizSettings->recalc */
166 /* Motion-paths need recalculating. */
169
170/* bAnimVizSettings->path_type */
171typedef enum eMotionPaths_Types {
172 /* show the paths along their entire ranges */
174 /* only show the parts of the paths around the current frame */
177
178/* bAnimVizSettings->path_range */
186
187/* bAnimVizSettings->path_viewflag */
189 /* show frames on path */
191 /* show keyframes on path */
193 /* show keyframe/frame numbers */
195 /* find keyframes in whole action (instead of just in matching group name) */
197 /* draw lines on path */
198 /* MOTIONPATH_VIEW_LINES = (1 << 4), */ /* UNUSED */
200
201/* bAnimVizSettings->path_bakeflag */
204 /* MOTIONPATH_BAKE_NEEDS_RECALC = (1 << 0), */ /* UNUSED */
210 /* Bake the path in camera space. */
213
214/* runtime */
215#
216#
217typedef struct bPoseChannelDrawData {
218 float solid_color[4];
219 float wire_color[4];
220
222 /* keep last */
223 float bbone_matrix[0][4][4];
225
226struct DualQuat;
227struct Mat4;
228
229/* Describes a plane in pose space that delimits B-Bone segments. */
231 /* Boundary data in pose space. */
232 float point[3];
233 float plane_normal[3];
234 /* Dot product of point and plane_normal to speed up distance computation. */
236
244
256 /* Set on bones during selection to tell following code that this bone should be operated on. */
259
260typedef struct bPoseChannel_Runtime {
262
263 /* Cached dual quaternion for deformation. */
265
266 /* B-Bone shape data: copy of the segment count for validation. */
268
269 /* Inverse of the total length of the segment polyline. */
271 /* bPoseChannelRuntimeFlag */
272 uint8_t flag;
273 char _pad1[3];
274
275 /* Rest and posed matrices for segments. */
278
279 /* Delta from rest to pose in matrix and DualQuat form. */
282
283 /* Segment boundaries for curved mode. */
285 void *_pad;
287
288/* ************************************************ */
289/* Poses */
290
291/* PoseChannel ------------------------------------ */
292
299typedef struct bPoseChannel {
301
303
309
318
321 char name[/*MAXBONENAME*/ 64];
322
324 short flag;
326 short ikflag;
335 char selectflag DNA_DEPRECATED;
337 char bboneflag DNA_DEPRECATED;
338 char _pad0[4];
339
341 struct Bone *bone;
346
351
360 struct Object *custom;
368 float custom_scale; /* Deprecated */
373
375 float loc[3];
376 float scale[3];
377
383 float eul[3];
385 float quat[4];
387 float rotAxis[3], rotAngle;
389 short rotmode;
390 char _pad[6];
391
398 float chan_mat[4][4];
402 float pose_mat[4][4];
404 float disp_mat[4][4];
406 float disp_tail_mat[4][4];
411 float constinv[4][4];
412
414 float pose_head[3];
416 float pose_tail[3];
417
419 float limitmin[3], limitmax[3];
421 float stiffness[3];
427
432 float roll1, roll2;
435 float ease1, ease2;
436 float scale_in_x DNA_DEPRECATED, scale_in_z DNA_DEPRECATED;
437 float scale_out_x DNA_DEPRECATED, scale_out_z DNA_DEPRECATED;
438 float scale_in[3], scale_out[3];
439
443
445 void *temp;
448
451
452 BoneColor color; /* MUST be named the same as in Bone and EditBone structs. */
453
454 void *_pad2;
455
459
460/* PoseChannel (transform) flags */
462 /* has transforms */
463 POSE_LOC = (1 << 0),
464 POSE_ROT = (1 << 1),
465 POSE_SCALE = (1 << 2),
466
467 /* old IK/cache stuff
468 * - used to be here from (1 << 3) to (1 << 8)
469 * but has been repurposed since 2.77.2
470 * as they haven't been used in over 10 years
471 */
472
473 /* has BBone deforms */
475 /* When set and bPoseChan.custom_tx is not a nullptr, the gizmo will be drawn at the location and
476 orientation of the custom_tx instead of this bone. */
478 /* When set, transformations will modify the bone as if it was a child of the
479 bPoseChan.custom_tx. The flag only has an effect when `POSE_TRANSFORM_AT_CUSTOM_TX` and
480 `custom_tx` are set. This can be useful for rigs where the deformation is coming from
481 blendshapes in addition to the armature. */
483 POSE_SELECTED = (1 << 6),
484
485 /* IK/Pose solving */
486 POSE_CHAIN = (1 << 9),
487 POSE_DONE = (1 << 10),
488 /* POSE_KEY = (1 << 11) */ /* UNUSED */
489 /* POSE_STRIDE = (1 << 12), */ /* UNUSED */
490 /* standard IK solving */
491 POSE_IKTREE = (1 << 13),
492#if 0
493 /* has Spline IK */
494 POSE_HAS_IKS = (1 << 14),
495#endif
496 /* spline IK solving */
497 POSE_IKSPLINE = (1 << 15),
499
500/* PoseChannel constflag (constraint detection) */
501typedef enum ePchan_ConstFlag {
502 PCHAN_HAS_IK = (1 << 0), /* Has IK constraint. */
503 PCHAN_HAS_CONST = (1 << 1), /* Has any constraint. */
504 /* PCHAN_HAS_ACTION = (1 << 2), */ /* UNUSED */
505 PCHAN_HAS_NO_TARGET = (1 << 3), /* Has (spline) IK constraint but no target is set. */
506 /* PCHAN_HAS_STRIDE = (1 << 4), */ /* UNUSED */
507 PCHAN_HAS_SPLINEIK = (1 << 5), /* Has Spline IK constraint. */
508 PCHAN_INFLUENCED_BY_IK = (1 << 6), /* Is part of a (non-spline) IK chain. */
511
512/* PoseChannel->ikflag */
513typedef enum ePchan_IkFlag {
514 BONE_IK_NO_XDOF = (1 << 0),
515 BONE_IK_NO_YDOF = (1 << 1),
516 BONE_IK_NO_ZDOF = (1 << 2),
517
518 BONE_IK_XLIMIT = (1 << 3),
519 BONE_IK_YLIMIT = (1 << 4),
520 BONE_IK_ZLIMIT = (1 << 5),
521
522 BONE_IK_ROTCTL = (1 << 6),
523 BONE_IK_LINCTL = (1 << 7),
524
529
530/* PoseChannel->drawflag */
535
536/* NOTE: It doesn't take custom_scale_xyz into account. */
537#define PCHAN_CUSTOM_BONE_LENGTH(pchan) \
538 (((pchan)->drawflag & PCHAN_DRAW_NO_CUSTOM_BONE_SIZE) ? 1.0f : (pchan)->bone->length)
539
540#ifdef DNA_DEPRECATED_ALLOW
541/* PoseChannel->bboneflag */
542typedef enum ePchan_BBoneFlag {
543 /* Use custom reference bones (for roll and handle alignment), instead of immediate neighbors */
544 PCHAN_BBONE_CUSTOM_HANDLES = (1 << 1),
545 /* Evaluate start handle as being "relative" */
546 PCHAN_BBONE_CUSTOM_START_REL = (1 << 2),
547 /* Evaluate end handle as being "relative" */
548 PCHAN_BBONE_CUSTOM_END_REL = (1 << 3),
549} ePchan_BBoneFlag;
550#endif
551
552/* PoseChannel->rotmode and Object->rotmode */
553typedef enum eRotationModes {
554 /* quaternion rotations (default, and for older Blender versions) */
556 /* euler rotations - keep in sync with enum in BLI_math_rotation.h */
565 /* NOTE: space is reserved here for 18 other possible
566 * euler rotation orders not implemented
567 */
568 /* axis angle rotations */
570
571 ROT_MODE_MIN = ROT_MODE_AXISANGLE, /* sentinel for Py API */
574
575/* Pose ------------------------------------ */
576
577/* Pose-Object.
578 *
579 * It is only found under ob->pose. It is not library data, even
580 * though there is a define for it (hack for the outliner).
581 */
582typedef struct bPose {
587
588 /* Flat array of pose channels. It references pointers from
589 * chanbase. Used for quick pose channel lookup from an index.
590 */
592
593 short flag;
594 char _pad[2];
595
597 float ctime;
602
605
611 void *ikdata;
613 void *ikparam;
614
618
619/* Pose->flag */
620typedef enum ePose_Flags {
621 /* results in BKE_pose_rebuild being called */
622 POSE_RECALC = (1 << 0),
623 /* prevents any channel from getting overridden by anim from IPO */
624 POSE_LOCKED = (1 << 1),
625 /* clears the POSE_LOCKED flag for the next time the pose is evaluated */
626 POSE_DO_UNLOCK = (1 << 2),
627 /* pose has constraints which depend on time (used when depsgraph updates for a new frame) */
629 /* recalculate bone paths */
630 /* POSE_RECALCPATHS = (1 << 4), */ /* UNUSED */
631 /* set by BKE_pose_rebuild to give a chance to the IK solver to rebuild IK tree */
633 POSE_FLAG_DEPRECATED = (1 << 6), /* deprecated. */
634 /* pose constraint flags needs to be updated */
636 /* Use auto IK in pose mode */
637 POSE_AUTO_IK = (1 << 8),
638 /* Use x-axis mirror in pose mode */
640 /* Use relative mirroring in mirror mode */
643
644/* IK Solvers ------------------------------------ */
645
646/* bPose->iksolver and bPose->ikparam->iksolver */
651
652/* header for all bPose->ikparam structures */
653typedef struct bIKParam {
656
657/* bPose->ikparam when bPose->iksolver=1 */
658typedef struct bItasc {
661 short numiter;
662 short numstep;
663 float minstep;
664 float maxstep;
665 short solver;
666 short flag;
667 float feedback;
669 float maxvel;
671 float dampmax;
673 float dampeps;
675
676/* bItasc->flag */
688
689/* bItasc->solver */
690typedef enum eItasc_Solver {
691 ITASC_SOLVER_SDLS = 0, /* selective damped least square, suitable for CopyPose constraint */
692 ITASC_SOLVER_DLS = 1, /* damped least square with numerical filtering of damping */
694
695/* ************************************************ */
696/* Action */
697
698/* Groups -------------------------------------- */
699
768
769/* Action Group flags */
770typedef enum eActionGroup_Flag {
771 /* group is selected */
772 AGRP_SELECTED = (1 << 0),
773 /* group is 'active' / last selected one */
774 AGRP_ACTIVE = (1 << 1),
775 /* keyframes/channels belonging to it cannot be edited */
776 AGRP_PROTECTED = (1 << 2),
777 /* for UI (DopeSheet), sub-channels are shown */
778 AGRP_EXPANDED = (1 << 3),
779 /* sub-channels are not evaluated */
780 AGRP_MUTED = (1 << 4),
781 /* sub-channels are not visible in Graph Editor */
782 AGRP_NOTVISIBLE = (1 << 5),
783 /* for UI (Graph Editor), sub-channels are shown */
784 AGRP_EXPANDED_G = (1 << 6),
785
786 /* sub channel modifiers off */
788
789 AGRP_TEMP = (1 << 30),
790 AGRP_MOVED = (1u << 31),
792
793/* Actions -------------------------------------- */
794
800typedef struct bAction {
801#ifdef __cplusplus
803 static constexpr ID_Type id_type = ID_AC;
804#endif
805
808
812 int layer_active_index; /* Index into layer_array, -1 means 'no active'. */
813
818
819 /* Storage for the underlying data of strips. Each strip type has its own
820 * array, and strips reference this data with an enum indicating the strip
821 * type and an int containing the index in the array to use.
822 *
823 * NOTE: when adding new strip data arrays, also update `duplicate_slot()`. */
826
827 char _pad0[4];
828
829 /* Note about legacy animation data:
830 *
831 * Blender 2.5 introduced a new animation system 'Animato'. This replaced the
832 * IPO ('interpolation') curves with F-Curves. Both are considered 'legacy' at
833 * different levels:
834 *
835 * - Actions with F-Curves in `curves`, as introduced in Blender 2.5, are
836 * considered 'legacy' but still functional in current Blender.
837 * - Pre-2.5 data are deprecated and old files are automatically converted to
838 * the post-2.5 data model.
839 */
840
845
848
850 int flag;
853
859 char _pad1[4];
860
866
868
869#ifdef __cplusplus
871 const blender::animrig::Action &wrap() const;
872#endif
874
876typedef enum eAction_Flags {
877 /* flags for displaying in UI */
878 ACT_COLLAPSED = (1 << 0),
879 ACT_SELECTED = (1 << 1),
880
881 /* flags for evaluation/editing */
882 ACT_MUTED = (1 << 9),
883 /* ACT_PROTECTED = (1 << 10), */ /* UNUSED */
884 /* ACT_DISABLED = (1 << 11), */ /* UNUSED */
886 ACT_FRAME_RANGE = (1 << 12),
888 ACT_CYCLIC = (1 << 13),
890
891/* ************************************************ */
892/* Action/Dope-sheet Editor */
893
895typedef struct bDopeSheet {
897 ID *source; /* XXX not used! */
900
904 char searchstr[64];
905
911 int flag;
912
916
919 /* general filtering */
922
923 /* temporary filters */
930
931 /* general filtering */
934
940
941 /* datatype-based filtering */
947 ADS_FILTER_NOCAM = (1 << 10),
948 ADS_FILTER_NOMAT = (1 << 11),
949 ADS_FILTER_NOLAM = (1 << 12),
950 ADS_FILTER_NOCUR = (1 << 13),
951 ADS_FILTER_NOWOR = (1 << 14),
952 ADS_FILTER_NOSCE = (1 << 15),
953 ADS_FILTER_NOPART = (1 << 16),
954 ADS_FILTER_NOMBA = (1 << 17),
955 ADS_FILTER_NOARM = (1 << 18),
957 ADS_FILTER_NOTEX = (1 << 20),
958 ADS_FILTER_NOSPK = (1 << 21),
962 /* NOTE: all new datablock filters will have to go in filterflag2 (see below) */
963
964 /* NLA-specific filters */
967
968 /* general filtering 3 */
973
974#if 0
976 ADS_FILTER_NOOBDATA = (ADS_FILTER_NOCAM | ADS_FILTER_NOMAT | ADS_FILTER_NOLAM |
979#endif
982
983/* DopeSheet filter-flags - Overflow (filterflag2) */
997
998/* DopeSheet general flags */
1013
1018
1023
1029
1030/* Action Editor Space. This is defined here instead of in DNA_space_types.h */
1031typedef struct SpaceAction {
1037 char _pad0[6];
1038 /* End 'SpaceLink' header. */
1039
1042
1045
1048
1051
1052 short flag;
1053 /* Editing context */
1054 char mode;
1055 /* Storage for sub-space types. */
1057 /* Snapping now lives on the Scene. */
1058 char autosnap DNA_DEPRECATED;
1061 char _pad1[6];
1062
1064
1067
1068/* SpaceAction flag */
1069typedef enum eSAction_Flag {
1070 /* during transform (only set for TimeSlide) */
1071 SACTION_MOVING = (1 << 0),
1072 /* show sliders */
1074 /* draw time in seconds instead of time in frames */
1076 /* don't filter action channels according to visibility */
1077 // SACTION_NOHIDE = (1 << 3), /* Deprecated, old animation systems. */
1078 /* don't kill overlapping keyframes after transform */
1080 /* don't include keyframes that are out of view */
1081 // SACTION_HORIZOPTIMISEON = (1 << 5), /* Deprecated, old irrelevant trick. */
1082 /* show pose-markers (local to action) in Action Editor mode. */
1084 /* don't draw action channels using group colors (where applicable) */
1085 /* SACTION_NODRAWGCOLORS = (1 << 7), DEPRECATED */
1086 /* SACTION_NODRAWCFRANUM = (1 << 8), DEPRECATED */
1087 /* don't perform realtime updates */
1089 /* move markers as well as keyframes */
1091 /* show interpolation type */
1093 /* show extremes */
1095 /* show markers region */
1098
1104
1122
1123/* Old snapping enum that is only needed because of the versioning code. */
1125 /* snap to 1.0 frame/second intervals */
1127 /* snap to actual frames/seconds (nla-action time) */
1129 /* snap to nearest marker */
1131 /* snap to actual seconds (nla-action time) */
1133 /* snap to 1.0 second increments */
1136
1137/* SAction->cache_display */
1148
1149/* ************************************************ */
1150/* Layered Animation data-types. */
1151
1155typedef struct ActionLayer {
1157 char name[/*MAX_NAME*/ 64];
1158
1159 float influence; /* [0-1] */
1160
1163
1166
1167 uint8_t _pad0[2];
1168
1173 struct ActionStrip **strip_array; /* Array of 'strip_array_num' strips. */
1175
1176 uint8_t _pad1[4];
1177
1178#ifdef __cplusplus
1180 const blender::animrig::Layer &wrap() const;
1181#endif
1183
1187typedef struct ActionSlot {
1201 char identifier[/*MAX_ID_NAME*/ 258];
1202
1208 int16_t idtype;
1209
1228
1231 uint8_t _pad1[7];
1232
1235
1236#ifdef __cplusplus
1238 const blender::animrig::Slot &wrap() const;
1239#endif
1241
1245typedef struct ActionStrip {
1250 uint8_t _pad0[3];
1251
1262
1265
1274
1275 uint8_t _pad1[4];
1276
1277#ifdef __cplusplus
1279 const blender::animrig::Strip &wrap() const;
1280#endif
1282
1299
1303typedef struct ActionChannelbag {
1305
1306 /* Channel groups. These index into the `fcurve_array` below to specify group
1307 * membership of the fcurves.
1308 *
1309 * Note that although the fcurves also have pointers back to the groups they
1310 * belong to, those pointers are not the source of truth. The source of truth
1311 * for membership is the information in the channel groups here.
1312 *
1313 * Invariants:
1314 * 1. The groups are sorted by their `fcurve_range_start` field. In other
1315 * words, they are in the same order as their starting positions in the
1316 * fcurve array.
1317 * 2. The grouped fcurves are tightly packed, starting at the first fcurve and
1318 * having no gaps of ungrouped fcurves between them. Ungrouped fcurves come
1319 * at the end, after all of the grouped fcurves. */
1322
1323 uint8_t _pad[4];
1324
1326 struct FCurve **fcurve_array; /* Array of 'fcurve_array_num' FCurves. */
1327
1328 /* TODO: Design & implement a way to integrate other channel types as well,
1329 * and still have them map to a certain slot */
1330#ifdef __cplusplus
1332 const blender::animrig::Channelbag &wrap() const;
1333#endif
1335
1336#ifdef __cplusplus
1337/* Some static assertions that things that should have the same type actually do. */
1338static_assert(std::is_same_v<decltype(ActionSlot::handle), decltype(bAction::last_slot_handle)>);
1339static_assert(
1340 std::is_same_v<decltype(ActionSlot::handle), decltype(ActionChannelbag::slot_handle)>);
1341#endif
#define ENUM_OPERATORS(_type, _max)
ID and Library types, which are fundamental for SDNA.
ID_Type
@ ID_AC
eDopeSheet_FilterFlag2
@ ADS_FILTER_NOLIGHTPROBE
@ ADS_FILTER_DRIVER_FALLBACK_AS_ERROR
@ ADS_FILTER_NOMOVIECLIPS
@ ADS_FILTER_NOVOLUME
@ ADS_FILTER_NOHAIR
@ ADS_FILTER_NOCACHEFILES
@ ADS_FILTER_NOPOINTCLOUD
eItasc_Solver
@ ITASC_SOLVER_SDLS
@ ITASC_SOLVER_DLS
eMotionPaths_BakeFlag
@ MOTIONPATH_BAKE_CAMERA_SPACE
@ MOTIONPATH_BAKE_HEADS
@ MOTIONPATH_BAKE_HAS_PATHS
struct SpaceActionOverlays SpaceActionOverlays
eMotionPaths_Types
@ MOTIONPATH_TYPE_ACFRA
@ MOTIONPATH_TYPE_RANGE
ePose_IKSolverType
@ IKSOLVER_STANDARD
@ IKSOLVER_ITASC
struct bItasc bItasc
eDopeSheet_FilterFlag
@ ADS_FILTER_ONLYSEL
@ ADS_FILTER_NOARM
@ ADS_FILTER_NLA_NOACT
@ ADS_FILTER_NOMAT
@ ADS_FILTER_NONTREE
@ ADS_FILTER_NOCAM
@ ADS_FILTER_NOSHAPEKEYS
@ ADS_FILTER_NOTEX
@ ADS_FILTER_ONLYNLA
@ ADS_FILTER_ONLY_ERRORS
@ ADS_FILTER_ONLYDRIVERS
@ ADS_FILTER_SELEDIT
@ ADS_FILTER_NOSCE
@ ADS_FILTER_NOLAM
@ ADS_FILTER_ONLY_SLOTS_OF_ACTIVE
@ ADS_FILTER_NOMODIFIERS
@ ADS_FILTER_NOLINESTYLE
@ ADS_FILTER_SUMMARY
@ ADS_FILTER_NOGPENCIL
@ ADS_FILTER_NOOBJ
@ ADS_FILTER_NOCUR
@ ADS_FILTER_NOPART
@ ADS_FILTER_NOSPK
@ ADS_FILTER_NOMESH
@ ADS_FILTER_NOWOR
@ ADS_FILTER_INCL_HIDDEN
@ ADS_FILTER_NOMBA
@ ADS_FILTER_NOLAT
eActionGroup_Flag
@ AGRP_TEMP
@ AGRP_ACTIVE
@ AGRP_SELECTED
@ AGRP_EXPANDED_G
@ AGRP_EXPANDED
@ AGRP_PROTECTED
@ AGRP_MOVED
@ AGRP_MODIFIERS_OFF
@ AGRP_MUTED
@ AGRP_NOTVISIBLE
struct GPUVertBufHandle GPUVertBufHandle
eAnimEdit_AutoSnap
@ SACTSNAP_SECOND
@ SACTSNAP_TSTEP
@ SACTSNAP_MARKER
@ SACTSNAP_STEP
@ SACTSNAP_FRAME
struct bDopeSheet bDopeSheet
struct bAction bAction
bPoseChannelRuntimeFlag
@ POSE_RUNTIME_IN_SELECTION_AREA
@ POSE_RUNTIME_TRANSFORM
@ POSE_RUNTIME_HINGE_CHILD_TRANSFORM
@ POSE_RUNTIME_TRANSFORM_CHILD
eAction_Flags
@ ACT_FRAME_RANGE
@ ACT_COLLAPSED
@ ACT_MUTED
@ ACT_CYCLIC
@ ACT_SELECTED
eMotionPathVert_Flag
@ MOTIONPATH_VERT_KEY
@ MOTIONPATH_VERT_SEL
struct ActionChannelbag ActionChannelbag
enum eMotionPaths_Types eMotionPath_Types
struct bPose bPose
struct SpaceAction SpaceAction
struct ActionLayer ActionLayer
eMotionPaths_ViewFlag
@ MOTIONPATH_VIEW_KFACT
@ MOTIONPATH_VIEW_KFNOS
@ MOTIONPATH_VIEW_FNUMS
@ MOTIONPATH_VIEW_KFRAS
eRotationModes
@ ROT_MODE_XZY
@ ROT_MODE_QUAT
@ ROT_MODE_ZXY
@ ROT_MODE_MAX
@ ROT_MODE_AXISANGLE
@ ROT_MODE_MIN
@ ROT_MODE_EUL
@ ROT_MODE_ZYX
@ ROT_MODE_XYZ
@ ROT_MODE_YXZ
@ ROT_MODE_YZX
struct ActionStrip ActionStrip
struct SpaceAction_Runtime SpaceAction_Runtime
struct ActionSlotRuntimeHandle ActionSlotRuntimeHandle
struct bActionGroup bActionGroup
struct ActionStripKeyframeData ActionStripKeyframeData
struct bIKParam bIKParam
eItasc_Flags
@ ITASC_REITERATION
@ ITASC_AUTO_STEP
@ ITASC_TRANSLATE_ROOT_BONES
@ ITASC_SIMULATION
@ ITASC_INITIAL_REITERATION
eMotionPath_Ranges
@ MOTIONPATH_RANGE_KEYS_ALL
@ MOTIONPATH_RANGE_KEYS_SELECTED
@ MOTIONPATH_RANGE_SCENE
@ MOTIONPATH_RANGE_MANUAL
eAnimViz_RecalcFlags
@ ANIMVIZ_RECALC_PATHS
ePchan_IkFlag
@ BONE_IK_ZLIMIT
@ BONE_IK_NO_YDOF_TEMP
@ BONE_IK_XLIMIT
@ BONE_IK_NO_XDOF_TEMP
@ BONE_IK_NO_ZDOF
@ BONE_IK_ROTCTL
@ BONE_IK_NO_ZDOF_TEMP
@ BONE_IK_YLIMIT
@ BONE_IK_NO_YDOF
@ BONE_IK_LINCTL
@ BONE_IK_NO_XDOF
eMotionPath_Flag
@ MOTIONPATH_FLAG_LINES
@ MOTIONPATH_FLAG_BAKE_CAMERA
@ MOTIONPATH_FLAG_CUSTOM
@ MOTIONPATH_FLAG_EDIT
@ MOTIONPATH_FLAG_BHEAD
ePchan_ConstFlag
@ PCHAN_INFLUENCED_BY_IK
@ PCHAN_HAS_CONST
@ PCHAN_HAS_NO_TARGET
@ PCHAN_HAS_IK
@ PCHAN_HAS_SPLINEIK
SpaceActionOverlays_Flag
@ ADS_SHOW_SCENE_STRIP_FRAME_RANGE
@ ADS_OVERLAY_SHOW_OVERLAYS
eTimeline_Cache_Flag
@ TIME_CACHE_PARTICLES
@ TIME_CACHE_RIGIDBODY
@ TIME_CACHE_DYNAMICPAINT
@ TIME_CACHE_SOFTBODY
@ TIME_CACHE_DISPLAY
@ TIME_CACHE_SIMULATION_NODES
@ TIME_CACHE_CLOTH
@ TIME_CACHE_SMOKE
ePchan_DrawFlag
@ PCHAN_DRAW_HIDDEN
@ PCHAN_DRAW_NO_CUSTOM_BONE_SIZE
ePchan_Flag
@ POSE_DONE
@ POSE_SCALE
@ POSE_IKTREE
@ POSE_BBONE_SHAPE
@ POSE_IKSPLINE
@ POSE_SELECTED
@ POSE_ROT
@ POSE_CHAIN
@ POSE_TRANSFORM_AT_CUSTOM_TX
@ POSE_TRANSFORM_AROUND_CUSTOM_TX
@ POSE_LOC
struct GPUBatchHandle GPUBatchHandle
eDopeSheet_Flag
@ ADS_FLAG_SHOW_DBFILTERS
@ ADS_FLAG_SUMMARY_COLLAPSED
@ ADS_FLAG_INVERT_FILTER
@ ADS_FLAG_NO_DB_SORT
@ ADS_FLAG_FUZZY_NAMES
struct ActionSlot ActionSlot
enum eMotionPaths_BakeFlag eMotionPath_BakeFlag
enum eMotionPaths_ViewFlag eMotionPath_ViewFlag
ePose_Flags
@ POSE_LOCKED
@ POSE_DO_UNLOCK
@ POSE_FLAG_DEPRECATED
@ POSE_CONSTRAINTS_NEED_UPDATE_FLAGS
@ POSE_WAS_REBUILT
@ POSE_AUTO_IK
@ POSE_RECALC
@ POSE_CONSTRAINTS_TIMEDEPEND
@ POSE_MIRROR_EDIT
@ POSE_MIRROR_RELATIVE
eAnimEdit_Context
@ SACTCONT_GPENCIL
@ SACTCONT_ACTION
@ SACTCONT_TIMELINE
@ SACTCONT_DOPESHEET
@ SACTCONT_SHAPEKEY
@ SACTCONT_MASK
@ SACTCONT_CACHEFILE
eSAction_Runtime_Flag
@ SACTION_RUNTIME_FLAG_NEED_CHAN_SYNC
eSAction_Flag
@ SACTION_NOTRANSKEYCULL
@ SACTION_POSEMARKERS_SHOW
@ SACTION_SHOW_INTERPOLATION
@ SACTION_SHOW_EXTREMES
@ SACTION_SHOW_MARKERS
@ SACTION_SLIDERS
@ SACTION_MOVING
@ SACTION_MARKERS_MOVE
@ SACTION_NOREALTIMEUPDATES
@ SACTION_DRAWTIME
#define DNA_DEFINE_CXX_METHODS(class_name)
Definition DNA_defs.h:66
These structs are the foundation for all linked lists in the library system.
#define typedef
float wrap(float value, float max, float min)
Definition node_math.h:103
struct bActionGroup ** group_array
struct FCurve ** fcurve_array
struct ActionStrip ** strip_array
char identifier[258]
uint8_t _pad1[7]
ActionSlotRuntimeHandle * runtime
struct ActionChannelbag ** channelbag_array
Definition DNA_ID.h:414
View2D v2d DNA_DEPRECATED
struct SpaceLink * prev
SpaceActionOverlays overlays
SpaceAction_Runtime runtime
struct SpaceLink * next
ThemeWireColor cs
struct bActionGroup * prev
struct bActionGroup * next
struct ActionChannelbag * channelbag
struct ActionSlot ** slot_array
ListBase curves
struct ActionStripKeyframeData ** strip_keyframe_data_array
char _pad1[4]
int32_t last_slot_handle
float frame_start
struct ActionLayer ** layer_array
int strip_keyframe_data_array_num
int layer_active_index
ListBase groups
PreviewImage * preview
char _pad0[4]
ListBase markers
ListBase chanbase
char searchstr[64]
struct Collection * filter_grp
float precision
GPUBatchHandle * batch_line
bMotionPathVert * points
float color_post[3]
GPUVertBufHandle * points_vbo
GPUBatchHandle * batch_points
float bbone_matrix[0][4][4]
struct Mat4 * bbone_deform_mats
struct DualQuat deform_dual_quat
struct bPoseChannel_BBoneSegmentBoundary * bbone_segment_boundaries
struct DualQuat * bbone_dual_quats
struct Mat4 * bbone_pose_mats
struct Mat4 * bbone_rest_mats
IDProperty * prop
float custom_scale_xyz[3]
bPoseChannelDrawData * draw_data
float custom_rotation_euler[3]
struct Bone * bone
struct bPoseChannel * parent
struct bPoseChannel * custom_tx
bMotionPath * mpath
struct ListBase iktree
float chan_mat[4][4]
struct bPoseChannel * bbone_next
struct Object * custom
struct bPoseChannel * prev
struct bPoseChannel * next
float custom_translation[3]
float constinv[4][4]
float custom_shape_wire_width
IDProperty * system_properties
struct bPoseChannel_Runtime runtime
float disp_mat[4][4]
char selectflag DNA_DEPRECATED
struct bPoseChannel * orig_pchan
float disp_tail_mat[4][4]
struct bPoseChannel * bbone_prev
float pose_mat[4][4]
struct bPoseChannel * child
struct ListBase siktree
char _pad[2]
ListBase chanbase
void * ikdata
void * ikparam
struct GHash * chanhash
ListBase agroups
bAnimVizSettings avs
float stride_offset[3]
bPoseChannel ** chan_array
float cyclic_offset[3]