Blender V4.3
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
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
245typedef struct bPoseChannel_Runtime {
247
248 /* Cached dual quaternion for deformation. */
250
251 /* B-Bone shape data: copy of the segment count for validation. */
253
254 /* Inverse of the total length of the segment polyline. */
256 char _pad1[4];
257
258 /* Rest and posed matrices for segments. */
261
262 /* Delta from rest to pose in matrix and DualQuat form. */
265
266 /* Segment boundaries for curved mode. */
268 void *_pad;
270
271/* ************************************************ */
272/* Poses */
273
274/* PoseChannel ------------------------------------ */
275
282typedef struct bPoseChannel {
284
286
289
293 char name[64];
294
296 short flag;
298 short ikflag;
308 char bboneflag DNA_DEPRECATED;
309 char _pad0[4];
310
312 struct Bone *bone;
317
322
331 struct Object *custom;
339 float custom_scale; /* Deprecated */
344
346 float loc[3];
347 float size[3];
348
354 float eul[3];
356 float quat[4];
358 float rotAxis[3], rotAngle;
360 short rotmode;
361 char _pad[6];
362
369 float chan_mat[4][4];
373 float pose_mat[4][4];
375 float disp_mat[4][4];
377 float disp_tail_mat[4][4];
382 float constinv[4][4];
383
385 float pose_head[3];
387 float pose_tail[3];
388
390 float limitmin[3], limitmax[3];
392 float stiffness[3];
398
403 float roll1, roll2;
406 float ease1, ease2;
407 float scale_in_x DNA_DEPRECATED, scale_in_z DNA_DEPRECATED;
408 float scale_out_x DNA_DEPRECATED, scale_out_z DNA_DEPRECATED;
409 float scale_in[3], scale_out[3];
410
414
416 void *temp;
419
422
423 BoneColor color; /* MUST be named the same as in Bone and EditBone structs. */
424
428
429/* PoseChannel (transform) flags */
430typedef enum ePchan_Flag {
431 /* has transforms */
432 POSE_LOC = (1 << 0),
433 POSE_ROT = (1 << 1),
434 POSE_SIZE = (1 << 2),
435
436 /* old IK/cache stuff
437 * - used to be here from (1 << 3) to (1 << 8)
438 * but has been repurposed since 2.77.2
439 * as they haven't been used in over 10 years
440 */
441
442 /* has BBone deforms */
444
445 /* IK/Pose solving */
446 POSE_CHAIN = (1 << 9),
447 POSE_DONE = (1 << 10),
448 /* visualization */
449 POSE_KEY = (1 << 11),
450 /* POSE_STRIDE = (1 << 12), */ /* UNUSED */
451 /* standard IK solving */
452 POSE_IKTREE = (1 << 13),
453#if 0
454 /* has Spline IK */
455 POSE_HAS_IKS = (1 << 14),
456#endif
457 /* spline IK solving */
458 POSE_IKSPLINE = (1 << 15),
460
461/* PoseChannel constflag (constraint detection) */
462typedef enum ePchan_ConstFlag {
463 PCHAN_HAS_IK = (1 << 0), /* Has IK constraint. */
464 PCHAN_HAS_CONST = (1 << 1), /* Has any constraint. */
465 /* PCHAN_HAS_ACTION = (1 << 2), */ /* UNUSED */
466 PCHAN_HAS_NO_TARGET = (1 << 3), /* Has (spline) IK constraint but no target is set. */
467 /* PCHAN_HAS_STRIDE = (1 << 4), */ /* UNUSED */
468 PCHAN_HAS_SPLINEIK = (1 << 5), /* Has Spline IK constraint. */
469 PCHAN_INFLUENCED_BY_IK = (1 << 6), /* Is part of a (non-spline) IK chain. */
472
473/* PoseChannel->ikflag */
474typedef enum ePchan_IkFlag {
475 BONE_IK_NO_XDOF = (1 << 0),
476 BONE_IK_NO_YDOF = (1 << 1),
477 BONE_IK_NO_ZDOF = (1 << 2),
478
479 BONE_IK_XLIMIT = (1 << 3),
480 BONE_IK_YLIMIT = (1 << 4),
481 BONE_IK_ZLIMIT = (1 << 5),
482
483 BONE_IK_ROTCTL = (1 << 6),
484 BONE_IK_LINCTL = (1 << 7),
485
490
491/* PoseChannel->drawflag */
495
496/* NOTE: It doesn't take custom_scale_xyz into account. */
497#define PCHAN_CUSTOM_BONE_LENGTH(pchan) \
498 (((pchan)->drawflag & PCHAN_DRAW_NO_CUSTOM_BONE_SIZE) ? 1.0f : (pchan)->bone->length)
499
500#ifdef DNA_DEPRECATED_ALLOW
501/* PoseChannel->bboneflag */
502typedef enum ePchan_BBoneFlag {
503 /* Use custom reference bones (for roll and handle alignment), instead of immediate neighbors */
504 PCHAN_BBONE_CUSTOM_HANDLES = (1 << 1),
505 /* Evaluate start handle as being "relative" */
506 PCHAN_BBONE_CUSTOM_START_REL = (1 << 2),
507 /* Evaluate end handle as being "relative" */
508 PCHAN_BBONE_CUSTOM_END_REL = (1 << 3),
509} ePchan_BBoneFlag;
510#endif
511
512/* PoseChannel->rotmode and Object->rotmode */
513typedef enum eRotationModes {
514 /* quaternion rotations (default, and for older Blender versions) */
516 /* euler rotations - keep in sync with enum in BLI_math_rotation.h */
525 /* NOTE: space is reserved here for 18 other possible
526 * euler rotation orders not implemented
527 */
528 /* axis angle rotations */
530
531 ROT_MODE_MIN = ROT_MODE_AXISANGLE, /* sentinel for Py API */
534
535/* Pose ------------------------------------ */
536
537/* Pose-Object.
538 *
539 * It is only found under ob->pose. It is not library data, even
540 * though there is a define for it (hack for the outliner).
541 */
542typedef struct bPose {
547
548 /* Flat array of pose channels. It references pointers from
549 * chanbase. Used for quick pose channel lookup from an index.
550 */
552
553 short flag;
554 char _pad[2];
555
557 float ctime;
559 float stride_offset[3];
561 float cyclic_offset[3];
562
565
571 void *ikdata;
573 void *ikparam;
574
578
579/* Pose->flag */
580typedef enum ePose_Flags {
581 /* results in BKE_pose_rebuild being called */
582 POSE_RECALC = (1 << 0),
583 /* prevents any channel from getting overridden by anim from IPO */
584 POSE_LOCKED = (1 << 1),
585 /* clears the POSE_LOCKED flag for the next time the pose is evaluated */
586 POSE_DO_UNLOCK = (1 << 2),
587 /* pose has constraints which depend on time (used when depsgraph updates for a new frame) */
589 /* recalculate bone paths */
590 /* POSE_RECALCPATHS = (1 << 4), */ /* UNUSED */
591 /* set by BKE_pose_rebuild to give a chance to the IK solver to rebuild IK tree */
593 POSE_FLAG_DEPRECATED = (1 << 6), /* deprecated. */
594 /* pose constraint flags needs to be updated */
596 /* Use auto IK in pose mode */
597 POSE_AUTO_IK = (1 << 8),
598 /* Use x-axis mirror in pose mode */
600 /* Use relative mirroring in mirror mode */
603
604/* IK Solvers ------------------------------------ */
605
606/* bPose->iksolver and bPose->ikparam->iksolver */
611
612/* header for all bPose->ikparam structures */
613typedef struct bIKParam {
616
617/* bPose->ikparam when bPose->iksolver=1 */
618typedef struct bItasc {
621 short numiter;
622 short numstep;
623 float minstep;
624 float maxstep;
625 short solver;
626 short flag;
627 float feedback;
629 float maxvel;
631 float dampmax;
633 float dampeps;
635
636/* bItasc->flag */
648
649/* bItasc->solver */
650typedef enum eItasc_Solver {
651 ITASC_SOLVER_SDLS = 0, /* selective damped least square, suitable for CopyPose constraint */
652 ITASC_SOLVER_DLS = 1, /* damped least square with numerical filtering of damping */
654
655/* ************************************************ */
656/* Action */
657
658/* Groups -------------------------------------- */
659
676typedef struct bActionGroup {
677 struct bActionGroup *next, *prev;
678
686
701
709
711 int flag;
718 char name[64];
719
722
723#ifdef __cplusplus
726#endif
728
729/* Action Group flags */
730typedef enum eActionGroup_Flag {
731 /* group is selected */
732 AGRP_SELECTED = (1 << 0),
733 /* group is 'active' / last selected one */
734 AGRP_ACTIVE = (1 << 1),
735 /* keyframes/channels belonging to it cannot be edited */
736 AGRP_PROTECTED = (1 << 2),
737 /* for UI (DopeSheet), sub-channels are shown */
738 AGRP_EXPANDED = (1 << 3),
739 /* sub-channels are not evaluated */
740 AGRP_MUTED = (1 << 4),
741 /* sub-channels are not visible in Graph Editor */
742 AGRP_NOTVISIBLE = (1 << 5),
743 /* for UI (Graph Editor), sub-channels are shown */
744 AGRP_EXPANDED_G = (1 << 6),
745
746 /* sub channel modifiers off */
748
749 AGRP_TEMP = (1 << 30),
750 AGRP_MOVED = (1u << 31),
752
753/* Actions -------------------------------------- */
754
766typedef struct bAction {
769
770 struct ActionLayer **layer_array; /* Array of 'layer_array_num' layers. */
772 int layer_active_index; /* Index into layer_array, -1 means 'no active'. */
773
774 struct ActionSlot **slot_array; /* Array of 'slot_array_num` slots. */
777
778 /* Storage for the underlying data of strips. Each strip type has its own
779 * array, and strips reference this data with an enum indicating the strip
780 * type and an int containing the index in the array to use. */
783
784 char _pad0[4];
785
786 /* Note about legacy animation data:
787 *
788 * Blender 2.5 introduced a new animation system 'Animato'. This replaced the
789 * IPO ('interpolation') curves with F-Curves. Both are considered 'legacy' at
790 * different levels:
791 *
792 * - Actions with F-Curves in `curves`, as introduced in Blender 2.5, are
793 * considered 'legacy' but still functional in current Blender.
794 * - Pre-2.5 data are deprecated and old files are automatically converted to
795 * the post-2.5 data model.
796 */
797
804
807
809 int flag;
812
818 char _pad1[4];
819
824 float frame_start, frame_end;
825
827
828#ifdef __cplusplus
830 const blender::animrig::Action &wrap() const;
831#endif
833
835typedef enum eAction_Flags {
836 /* flags for displaying in UI */
837 ACT_COLLAPSED = (1 << 0),
838 ACT_SELECTED = (1 << 1),
839
840 /* flags for evaluation/editing */
841 ACT_MUTED = (1 << 9),
842 /* ACT_PROTECTED = (1 << 10), */ /* UNUSED */
843 /* ACT_DISABLED = (1 << 11), */ /* UNUSED */
845 ACT_FRAME_RANGE = (1 << 12),
847 ACT_CYCLIC = (1 << 13),
849
850/* ************************************************ */
851/* Action/Dopesheet Editor */
852
854typedef struct bDopeSheet {
857 /* XXX not used! */
859
863 char searchstr[64];
864
870 int flag;
871
875
878 /* general filtering */
881
882 /* temporary filters */
889
890 /* general filtering */
893
899
900 /* datatype-based filtering */
906 ADS_FILTER_NOCAM = (1 << 10),
907 ADS_FILTER_NOMAT = (1 << 11),
908 ADS_FILTER_NOLAM = (1 << 12),
909 ADS_FILTER_NOCUR = (1 << 13),
910 ADS_FILTER_NOWOR = (1 << 14),
911 ADS_FILTER_NOSCE = (1 << 15),
912 ADS_FILTER_NOPART = (1 << 16),
913 ADS_FILTER_NOMBA = (1 << 17),
914 ADS_FILTER_NOARM = (1 << 18),
916 ADS_FILTER_NOTEX = (1 << 20),
917 ADS_FILTER_NOSPK = (1 << 21),
921 /* NOTE: all new datablock filters will have to go in filterflag2 (see below) */
922
923 /* NLA-specific filters */
926
927 /* general filtering 3 */
932
933#if 0
935 ADS_FILTER_NOOBDATA = (ADS_FILTER_NOCAM | ADS_FILTER_NOMAT | ADS_FILTER_NOLAM |
938#endif
940
941/* DopeSheet filter-flags - Overflow (filterflag2) */
952
953/* DopeSheet general flags */
968
969typedef struct SpaceAction_Runtime {
970 char flag;
971 char _pad0[7];
973
974/* Action Editor Space. This is defined here instead of in DNA_space_types.h */
975typedef struct SpaceAction {
976 struct SpaceLink *next, *prev;
981 char _pad0[6];
982 /* End 'SpaceLink' header. */
983
986
990 char _pad2[4];
991
994
997
998 short flag;
999 /* Editing context */
1000 char mode;
1001 /* Storage for sub-space types. */
1003 /* Snapping now lives on the Scene. */
1004 char autosnap DNA_DEPRECATED;
1007 char _pad1[6];
1008
1011
1012/* SpaceAction flag */
1013typedef enum eSAction_Flag {
1014 /* during transform (only set for TimeSlide) */
1015 SACTION_MOVING = (1 << 0),
1016 /* show sliders */
1018 /* draw time in seconds instead of time in frames */
1020 /* don't filter action channels according to visibility */
1021 // SACTION_NOHIDE = (1 << 3), /* Deprecated, old animation systems. */
1022 /* don't kill overlapping keyframes after transform */
1024 /* don't include keyframes that are out of view */
1025 // SACTION_HORIZOPTIMISEON = (1 << 5), /* Deprecated, old irrelevant trick. */
1026 /* show pose-markers (local to action) in Action Editor mode. */
1028 /* don't draw action channels using group colors (where applicable) */
1029 /* SACTION_NODRAWGCOLORS = (1 << 7), DEPRECATED */
1030 /* SACTION_NODRAWCFRANUM = (1 << 8), DEPRECATED */
1031 /* don't perform realtime updates */
1033 /* move markers as well as keyframes */
1035 /* show interpolation type */
1037 /* show extremes */
1039 /* show markers region */
1042
1048
1066
1067/* Old snapping enum that is only needed because of the versioning code. */
1069 /* snap to 1.0 frame/second intervals */
1071 /* snap to actual frames/seconds (nla-action time) */
1073 /* snap to nearest marker */
1075 /* snap to actual seconds (nla-action time) */
1077 /* snap to 1.0 second increments */
1080
1081/* SAction->cache_display */
1092
1093/* ************************************************ */
1094/* Legacy Data */
1095
1096/* WARNING: Action Channels are now deprecated... they were part of the old animation system!
1097 * (ONLY USED FOR DO_VERSIONS...)
1098 *
1099 * Action Channels belong to Actions. They are linked with an IPO block, and can also own
1100 * Constraint Channels in certain situations.
1101 *
1102 * Action-Channels can only belong to one group at a time, but they still live the Action's
1103 * list of achans (to preserve backwards compatibility, and also minimize the code
1104 * that would need to be recoded). Grouped achans are stored at the start of the list, according
1105 * to the position of the group in the list, and their position within the group.
1106 */
1124
1125/* ************************************************ */
1126/* Layered Animation data-types. */
1127
1131typedef struct ActionLayer {
1133 char name[64]; /* MAX_NAME. */
1134
1135 float influence; /* [0-1] */
1136
1139
1142
1143 uint8_t _pad0[2];
1144
1149 struct ActionStrip **strip_array; /* Array of 'strip_array_num' strips. */
1151
1152 uint8_t _pad1[4];
1153
1154#ifdef __cplusplus
1156 const blender::animrig::Layer &wrap() const;
1157#endif
1159
1163typedef struct ActionSlot {
1170 char name[66]; /* MAX_ID_NAME */
1171 uint8_t _pad0[2];
1172
1178
1191
1194 uint8_t _pad1[3];
1195
1198
1199#ifdef __cplusplus
1201 const blender::animrig::Slot &wrap() const;
1202#endif
1204
1208typedef struct ActionStrip {
1213 uint8_t _pad0[3];
1214
1225
1237
1238 uint8_t _pad1[4];
1239
1240#ifdef __cplusplus
1242 const blender::animrig::Strip &wrap() const;
1243#endif
1245
1262
1266typedef struct ActionChannelBag {
1268
1269 /* Channel groups. These index into the `fcurve_array` below to specify group
1270 * membership of the fcurves.
1271 *
1272 * Note that although the fcurves also have pointers back to the groups they
1273 * belong to, those pointers are not the source of truth. The source of truth
1274 * for membership is the information in the channel groups here.
1275 *
1276 * Invariants:
1277 * 1. The groups are sorted by their `fcurve_range_start` field. In other
1278 * words, they are in the same order as their starting positions in the
1279 * fcurve array.
1280 * 2. The grouped fcurves are tightly packed, starting at the first fcurve and
1281 * having no gaps of ungrouped fcurves between them. Ungrouped fcurves come
1282 * at the end, after all of the grouped fcurves. */
1285
1286 uint8_t _pad[4];
1287
1289 struct FCurve **fcurve_array; /* Array of 'fcurve_array_num' FCurves. */
1290
1291 /* TODO: Design & implement a way to integrate other channel types as well,
1292 * and still have them map to a certain slot */
1293#ifdef __cplusplus
1295 const blender::animrig::ChannelBag &wrap() const;
1296#endif
1298
1299#ifdef __cplusplus
1300/* Some static assertions that things that should have the same type actually do. */
1301static_assert(std::is_same_v<decltype(ActionSlot::handle), decltype(bAction::last_slot_handle)>);
1302static_assert(
1303 std::is_same_v<decltype(ActionSlot::handle), decltype(ActionChannelBag::slot_handle)>);
1304static_assert(
1305 std::is_same_v<decltype(ActionSlot::handle), decltype(SpaceAction::action_slot_handle)>);
1306#endif
#define ENUM_OPERATORS(_type, _max)
ID and Library types, which are fundamental for SDNA.
struct bActionChannel bActionChannel
eDopeSheet_FilterFlag2
@ 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
struct bPoseChannel_BBoneSegmentBoundary bPoseChannel_BBoneSegmentBoundary
eMotionPaths_BakeFlag
@ MOTIONPATH_BAKE_CAMERA_SPACE
@ MOTIONPATH_BAKE_HEADS
@ MOTIONPATH_BAKE_HAS_PATHS
enum eAnimEdit_AutoSnap DNA_DEPRECATED
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_ALL_SLOTS
@ ADS_FILTER_ONLYDRIVERS
@ ADS_FILTER_SELEDIT
@ ADS_FILTER_NOSCE
@ ADS_FILTER_NOLAM
@ 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 bAnimVizSettings bAnimVizSettings
struct ActionChannelBag ActionChannelBag
struct bDopeSheet bDopeSheet
struct bAction bAction
eAction_Flags
@ ACT_FRAME_RANGE
@ ACT_COLLAPSED
@ ACT_MUTED
@ ACT_CYCLIC
@ ACT_SELECTED
eMotionPathVert_Flag
@ MOTIONPATH_VERT_KEY
@ MOTIONPATH_VERT_SEL
enum eMotionPaths_Types eMotionPath_Types
struct bPose bPose
struct bPoseChannelDrawData bPoseChannelDrawData
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
struct bMotionPathVert bMotionPathVert
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
struct bMotionPath bMotionPath
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_NO_CUSTOM_BONE_SIZE
ePchan_Flag
@ POSE_DONE
@ POSE_IKTREE
@ POSE_BBONE_SHAPE
@ POSE_IKSPLINE
@ POSE_ROT
@ POSE_CHAIN
@ POSE_KEY
@ POSE_LOC
@ POSE_SIZE
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
struct bPoseChannel_Runtime bPoseChannel_Runtime
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.
float wrap(float value, float max, float min)
Definition node_math.h:71
signed int int32_t
Definition stdint.h:77
unsigned char uint8_t
Definition stdint.h:78
signed char int8_t
Definition stdint.h:75
struct FCurve ** fcurve_array
struct bActionGroup ** group_array
struct ActionStrip ** strip_array
ActionSlotRuntimeHandle * runtime
struct ActionChannelBag ** channelbag_array
Definition DNA_ID.h:413
View2D v2d DNA_DEPRECATED
int32_t action_slot_handle
char autosnap DNA_DEPRECATED
SpaceAction_Runtime runtime
struct SpaceLink * next
ListBase regionbase
struct bActionChannel * next
bActionGroup * grp
ListBase constraintChannels
ThemeWireColor cs
struct bActionGroup * next
struct ActionChannelBag * channel_bag
struct ActionSlot ** slot_array
ListBase curves
struct ActionStripKeyframeData ** strip_keyframe_data_array
ListBase chanbase DNA_DEPRECATED
int32_t last_slot_handle
struct ActionLayer ** layer_array
int strip_keyframe_data_array_num
int layer_active_index
ListBase groups
PreviewImage * preview
ListBase markers
ListBase chanbase
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
char bboneflag DNA_DEPRECATED
struct bPoseChannel * custom_tx
bMotionPath * mpath
struct ListBase iktree
float chan_mat[4][4]
struct bPoseChannel * bbone_next
struct bPoseChannel * prev
struct bPoseChannel * next
float custom_translation[3]
float constinv[4][4]
float custom_shape_wire_width
struct bPoseChannel_Runtime runtime
float disp_mat[4][4]
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
ListBase chanbase
void * ikdata
void * ikparam
struct GHash * chanhash
ListBase agroups
bAnimVizSettings avs
bPoseChannel ** chan_array