Blender V4.5
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
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
297
300 char name[/*MAXBONENAME*/ 64];
301
303 short flag;
305 short ikflag;
315 char bboneflag DNA_DEPRECATED;
316 char _pad0[4];
317
319 struct Bone *bone;
324
329
338 struct Object *custom;
346 float custom_scale; /* Deprecated */
351
353 float loc[3];
354 float scale[3];
355
361 float eul[3];
363 float quat[4];
365 float rotAxis[3], rotAngle;
367 short rotmode;
368 char _pad[6];
369
376 float chan_mat[4][4];
380 float pose_mat[4][4];
382 float disp_mat[4][4];
384 float disp_tail_mat[4][4];
389 float constinv[4][4];
390
392 float pose_head[3];
394 float pose_tail[3];
395
397 float limitmin[3], limitmax[3];
399 float stiffness[3];
405
410 float roll1, roll2;
413 float ease1, ease2;
414 float scale_in_x DNA_DEPRECATED, scale_in_z DNA_DEPRECATED;
415 float scale_out_x DNA_DEPRECATED, scale_out_z DNA_DEPRECATED;
416 float scale_in[3], scale_out[3];
417
421
423 void *temp;
426
429
430 BoneColor color; /* MUST be named the same as in Bone and EditBone structs. */
431
432 void *_pad2;
433
437
438/* PoseChannel (transform) flags */
440 /* has transforms */
441 POSE_LOC = (1 << 0),
442 POSE_ROT = (1 << 1),
443 POSE_SCALE = (1 << 2),
444
445 /* old IK/cache stuff
446 * - used to be here from (1 << 3) to (1 << 8)
447 * but has been repurposed since 2.77.2
448 * as they haven't been used in over 10 years
449 */
450
451 /* has BBone deforms */
453
454 /* IK/Pose solving */
455 POSE_CHAIN = (1 << 9),
456 POSE_DONE = (1 << 10),
457 /* visualization */
458 POSE_KEY = (1 << 11),
459 /* POSE_STRIDE = (1 << 12), */ /* UNUSED */
460 /* standard IK solving */
461 POSE_IKTREE = (1 << 13),
462#if 0
463 /* has Spline IK */
464 POSE_HAS_IKS = (1 << 14),
465#endif
466 /* spline IK solving */
467 POSE_IKSPLINE = (1 << 15),
469
470/* PoseChannel constflag (constraint detection) */
471typedef enum ePchan_ConstFlag {
472 PCHAN_HAS_IK = (1 << 0), /* Has IK constraint. */
473 PCHAN_HAS_CONST = (1 << 1), /* Has any constraint. */
474 /* PCHAN_HAS_ACTION = (1 << 2), */ /* UNUSED */
475 PCHAN_HAS_NO_TARGET = (1 << 3), /* Has (spline) IK constraint but no target is set. */
476 /* PCHAN_HAS_STRIDE = (1 << 4), */ /* UNUSED */
477 PCHAN_HAS_SPLINEIK = (1 << 5), /* Has Spline IK constraint. */
478 PCHAN_INFLUENCED_BY_IK = (1 << 6), /* Is part of a (non-spline) IK chain. */
481
482/* PoseChannel->ikflag */
483typedef enum ePchan_IkFlag {
484 BONE_IK_NO_XDOF = (1 << 0),
485 BONE_IK_NO_YDOF = (1 << 1),
486 BONE_IK_NO_ZDOF = (1 << 2),
487
488 BONE_IK_XLIMIT = (1 << 3),
489 BONE_IK_YLIMIT = (1 << 4),
490 BONE_IK_ZLIMIT = (1 << 5),
491
492 BONE_IK_ROTCTL = (1 << 6),
493 BONE_IK_LINCTL = (1 << 7),
494
499
500/* PoseChannel->drawflag */
504
505/* NOTE: It doesn't take custom_scale_xyz into account. */
506#define PCHAN_CUSTOM_BONE_LENGTH(pchan) \
507 (((pchan)->drawflag & PCHAN_DRAW_NO_CUSTOM_BONE_SIZE) ? 1.0f : (pchan)->bone->length)
508
509#ifdef DNA_DEPRECATED_ALLOW
510/* PoseChannel->bboneflag */
511typedef enum ePchan_BBoneFlag {
512 /* Use custom reference bones (for roll and handle alignment), instead of immediate neighbors */
513 PCHAN_BBONE_CUSTOM_HANDLES = (1 << 1),
514 /* Evaluate start handle as being "relative" */
515 PCHAN_BBONE_CUSTOM_START_REL = (1 << 2),
516 /* Evaluate end handle as being "relative" */
517 PCHAN_BBONE_CUSTOM_END_REL = (1 << 3),
518} ePchan_BBoneFlag;
519#endif
520
521/* PoseChannel->rotmode and Object->rotmode */
522typedef enum eRotationModes {
523 /* quaternion rotations (default, and for older Blender versions) */
525 /* euler rotations - keep in sync with enum in BLI_math_rotation.h */
534 /* NOTE: space is reserved here for 18 other possible
535 * euler rotation orders not implemented
536 */
537 /* axis angle rotations */
539
540 ROT_MODE_MIN = ROT_MODE_AXISANGLE, /* sentinel for Py API */
543
544/* Pose ------------------------------------ */
545
546/* Pose-Object.
547 *
548 * It is only found under ob->pose. It is not library data, even
549 * though there is a define for it (hack for the outliner).
550 */
551typedef struct bPose {
556
557 /* Flat array of pose channels. It references pointers from
558 * chanbase. Used for quick pose channel lookup from an index.
559 */
561
562 short flag;
563 char _pad[2];
564
566 float ctime;
571
574
580 void *ikdata;
582 void *ikparam;
583
587
588/* Pose->flag */
589typedef enum ePose_Flags {
590 /* results in BKE_pose_rebuild being called */
591 POSE_RECALC = (1 << 0),
592 /* prevents any channel from getting overridden by anim from IPO */
593 POSE_LOCKED = (1 << 1),
594 /* clears the POSE_LOCKED flag for the next time the pose is evaluated */
595 POSE_DO_UNLOCK = (1 << 2),
596 /* pose has constraints which depend on time (used when depsgraph updates for a new frame) */
598 /* recalculate bone paths */
599 /* POSE_RECALCPATHS = (1 << 4), */ /* UNUSED */
600 /* set by BKE_pose_rebuild to give a chance to the IK solver to rebuild IK tree */
602 POSE_FLAG_DEPRECATED = (1 << 6), /* deprecated. */
603 /* pose constraint flags needs to be updated */
605 /* Use auto IK in pose mode */
606 POSE_AUTO_IK = (1 << 8),
607 /* Use x-axis mirror in pose mode */
609 /* Use relative mirroring in mirror mode */
612
613/* IK Solvers ------------------------------------ */
614
615/* bPose->iksolver and bPose->ikparam->iksolver */
620
621/* header for all bPose->ikparam structures */
622typedef struct bIKParam {
625
626/* bPose->ikparam when bPose->iksolver=1 */
627typedef struct bItasc {
630 short numiter;
631 short numstep;
632 float minstep;
633 float maxstep;
634 short solver;
635 short flag;
636 float feedback;
638 float maxvel;
640 float dampmax;
642 float dampeps;
644
645/* bItasc->flag */
657
658/* bItasc->solver */
659typedef enum eItasc_Solver {
660 ITASC_SOLVER_SDLS = 0, /* selective damped least square, suitable for CopyPose constraint */
661 ITASC_SOLVER_DLS = 1, /* damped least square with numerical filtering of damping */
663
664/* ************************************************ */
665/* Action */
666
667/* Groups -------------------------------------- */
668
737
738/* Action Group flags */
739typedef enum eActionGroup_Flag {
740 /* group is selected */
741 AGRP_SELECTED = (1 << 0),
742 /* group is 'active' / last selected one */
743 AGRP_ACTIVE = (1 << 1),
744 /* keyframes/channels belonging to it cannot be edited */
745 AGRP_PROTECTED = (1 << 2),
746 /* for UI (DopeSheet), sub-channels are shown */
747 AGRP_EXPANDED = (1 << 3),
748 /* sub-channels are not evaluated */
749 AGRP_MUTED = (1 << 4),
750 /* sub-channels are not visible in Graph Editor */
751 AGRP_NOTVISIBLE = (1 << 5),
752 /* for UI (Graph Editor), sub-channels are shown */
753 AGRP_EXPANDED_G = (1 << 6),
754
755 /* sub channel modifiers off */
757
758 AGRP_TEMP = (1 << 30),
759 AGRP_MOVED = (1u << 31),
761
762/* Actions -------------------------------------- */
763
769typedef struct bAction {
770#ifdef __cplusplus
772 static constexpr ID_Type id_type = ID_AC;
773#endif
774
777
778 struct ActionLayer **layer_array; /* Array of 'layer_array_num' layers. */
780 int layer_active_index; /* Index into layer_array, -1 means 'no active'. */
781
782 struct ActionSlot **slot_array; /* Array of 'slot_array_num` slots. */
785
786 /* Storage for the underlying data of strips. Each strip type has its own
787 * array, and strips reference this data with an enum indicating the strip
788 * type and an int containing the index in the array to use.
789 *
790 * NOTE: when adding new strip data arrays, also update `duplicate_slot()`. */
793
794 char _pad0[4];
795
796 /* Note about legacy animation data:
797 *
798 * Blender 2.5 introduced a new animation system 'Animato'. This replaced the
799 * IPO ('interpolation') curves with F-Curves. Both are considered 'legacy' at
800 * different levels:
801 *
802 * - Actions with F-Curves in `curves`, as introduced in Blender 2.5, are
803 * considered 'legacy' but still functional in current Blender.
804 * - Pre-2.5 data are deprecated and old files are automatically converted to
805 * the post-2.5 data model.
806 */
807
814
817
819 int flag;
822
828 char _pad1[4];
829
835
837
838#ifdef __cplusplus
840 const blender::animrig::Action &wrap() const;
841#endif
843
845typedef enum eAction_Flags {
846 /* flags for displaying in UI */
847 ACT_COLLAPSED = (1 << 0),
848 ACT_SELECTED = (1 << 1),
849
850 /* flags for evaluation/editing */
851 ACT_MUTED = (1 << 9),
852 /* ACT_PROTECTED = (1 << 10), */ /* UNUSED */
853 /* ACT_DISABLED = (1 << 11), */ /* UNUSED */
855 ACT_FRAME_RANGE = (1 << 12),
857 ACT_CYCLIC = (1 << 13),
859
860/* ************************************************ */
861/* Action/Dope-sheet Editor */
862
864typedef struct bDopeSheet {
866 ID *source; /* XXX not used! */
869
873 char searchstr[64];
874
880 int flag;
881
885
888 /* general filtering */
891
892 /* temporary filters */
899
900 /* general filtering */
903
909
910 /* datatype-based filtering */
916 ADS_FILTER_NOCAM = (1 << 10),
917 ADS_FILTER_NOMAT = (1 << 11),
918 ADS_FILTER_NOLAM = (1 << 12),
919 ADS_FILTER_NOCUR = (1 << 13),
920 ADS_FILTER_NOWOR = (1 << 14),
921 ADS_FILTER_NOSCE = (1 << 15),
922 ADS_FILTER_NOPART = (1 << 16),
923 ADS_FILTER_NOMBA = (1 << 17),
924 ADS_FILTER_NOARM = (1 << 18),
926 ADS_FILTER_NOTEX = (1 << 20),
927 ADS_FILTER_NOSPK = (1 << 21),
931 /* NOTE: all new datablock filters will have to go in filterflag2 (see below) */
932
933 /* NLA-specific filters */
936
937 /* general filtering 3 */
942
943#if 0
945 ADS_FILTER_NOOBDATA = (ADS_FILTER_NOCAM | ADS_FILTER_NOMAT | ADS_FILTER_NOLAM |
948#endif
950
951/* DopeSheet filter-flags - Overflow (filterflag2) */
964
965/* DopeSheet general flags */
980
985
986/* Action Editor Space. This is defined here instead of in DNA_space_types.h */
987typedef struct SpaceAction {
988 struct SpaceLink *next, *prev;
993 char _pad0[6];
994 /* End 'SpaceLink' header. */
995
998
1002 char _pad2[4];
1003
1006
1009
1010 short flag;
1011 /* Editing context */
1012 char mode;
1013 /* Storage for sub-space types. */
1015 /* Snapping now lives on the Scene. */
1016 char autosnap DNA_DEPRECATED;
1019 char _pad1[6];
1020
1023
1024/* SpaceAction flag */
1025typedef enum eSAction_Flag {
1026 /* during transform (only set for TimeSlide) */
1027 SACTION_MOVING = (1 << 0),
1028 /* show sliders */
1030 /* draw time in seconds instead of time in frames */
1032 /* don't filter action channels according to visibility */
1033 // SACTION_NOHIDE = (1 << 3), /* Deprecated, old animation systems. */
1034 /* don't kill overlapping keyframes after transform */
1036 /* don't include keyframes that are out of view */
1037 // SACTION_HORIZOPTIMISEON = (1 << 5), /* Deprecated, old irrelevant trick. */
1038 /* show pose-markers (local to action) in Action Editor mode. */
1040 /* don't draw action channels using group colors (where applicable) */
1041 /* SACTION_NODRAWGCOLORS = (1 << 7), DEPRECATED */
1042 /* SACTION_NODRAWCFRANUM = (1 << 8), DEPRECATED */
1043 /* don't perform realtime updates */
1045 /* move markers as well as keyframes */
1047 /* show interpolation type */
1049 /* show extremes */
1051 /* show markers region */
1054
1060
1078
1079/* Old snapping enum that is only needed because of the versioning code. */
1081 /* snap to 1.0 frame/second intervals */
1083 /* snap to actual frames/seconds (nla-action time) */
1085 /* snap to nearest marker */
1087 /* snap to actual seconds (nla-action time) */
1089 /* snap to 1.0 second increments */
1092
1093/* SAction->cache_display */
1104
1105/* ************************************************ */
1106/* Legacy Data */
1107
1108/* WARNING: Action Channels are now deprecated... they were part of the old animation system!
1109 * (ONLY USED FOR DO_VERSIONS...)
1110 *
1111 * Action Channels belong to Actions. They are linked with an IPO block, and can also own
1112 * Constraint Channels in certain situations.
1113 *
1114 * Action-Channels can only belong to one group at a time, but they still live the Action's
1115 * list of achans (to preserve backwards compatibility, and also minimize the code
1116 * that would need to be recoded). Grouped achans are stored at the start of the list, according
1117 * to the position of the group in the list, and their position within the group.
1118 */
1136
1137/* ************************************************ */
1138/* Layered Animation data-types. */
1139
1143typedef struct ActionLayer {
1145 char name[/*MAX_NAME*/ 64];
1146
1147 float influence; /* [0-1] */
1148
1151
1154
1155 uint8_t _pad0[2];
1156
1161 struct ActionStrip **strip_array; /* Array of 'strip_array_num' strips. */
1163
1164 uint8_t _pad1[4];
1165
1166#ifdef __cplusplus
1168 const blender::animrig::Layer &wrap() const;
1169#endif
1171
1175typedef struct ActionSlot {
1189 char identifier[/*MAX_ID_NAME*/ 66];
1190
1196 int16_t idtype;
1197
1216
1219 uint8_t _pad1[7];
1220
1223
1224#ifdef __cplusplus
1226 const blender::animrig::Slot &wrap() const;
1227#endif
1229
1233typedef struct ActionStrip {
1238 uint8_t _pad0[3];
1239
1250
1253
1262
1263 uint8_t _pad1[4];
1264
1265#ifdef __cplusplus
1267 const blender::animrig::Strip &wrap() const;
1268#endif
1270
1287
1291typedef struct ActionChannelbag {
1293
1294 /* Channel groups. These index into the `fcurve_array` below to specify group
1295 * membership of the fcurves.
1296 *
1297 * Note that although the fcurves also have pointers back to the groups they
1298 * belong to, those pointers are not the source of truth. The source of truth
1299 * for membership is the information in the channel groups here.
1300 *
1301 * Invariants:
1302 * 1. The groups are sorted by their `fcurve_range_start` field. In other
1303 * words, they are in the same order as their starting positions in the
1304 * fcurve array.
1305 * 2. The grouped fcurves are tightly packed, starting at the first fcurve and
1306 * having no gaps of ungrouped fcurves between them. Ungrouped fcurves come
1307 * at the end, after all of the grouped fcurves. */
1310
1311 uint8_t _pad[4];
1312
1314 struct FCurve **fcurve_array; /* Array of 'fcurve_array_num' FCurves. */
1315
1316 /* TODO: Design & implement a way to integrate other channel types as well,
1317 * and still have them map to a certain slot */
1318#ifdef __cplusplus
1320 const blender::animrig::Channelbag &wrap() const;
1321#endif
1323
1324#ifdef __cplusplus
1325/* Some static assertions that things that should have the same type actually do. */
1326static_assert(std::is_same_v<decltype(ActionSlot::handle), decltype(bAction::last_slot_handle)>);
1327static_assert(
1328 std::is_same_v<decltype(ActionSlot::handle), decltype(ActionChannelbag::slot_handle)>);
1329static_assert(
1330 std::is_same_v<decltype(ActionSlot::handle), decltype(SpaceAction::action_slot_handle)>);
1331#endif
#define ENUM_OPERATORS(_type, _max)
ID and Library types, which are fundamental for SDNA.
ID_Type
@ ID_AC
struct bActionChannel bActionChannel
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
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
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
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_SCALE
@ POSE_IKTREE
@ POSE_BBONE_SHAPE
@ POSE_IKSPLINE
@ POSE_ROT
@ POSE_CHAIN
@ POSE_KEY
@ 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
These structs are the foundation for all linked lists in the library system.
#define typedef
#define DNA_DEFINE_CXX_METHODS(class_name)
float wrap(float value, float max, float min)
Definition node_math.h:71
struct bActionGroup ** group_array
struct FCurve ** fcurve_array
struct ActionStrip ** strip_array
uint8_t _pad1[7]
char identifier[66]
ActionSlotRuntimeHandle * runtime
struct ActionChannelbag ** channelbag_array
Definition DNA_ID.h:404
View2D v2d DNA_DEPRECATED
int32_t action_slot_handle
struct SpaceLink * prev
SpaceAction_Runtime runtime
struct SpaceLink * next
ListBase regionbase
struct bActionChannel * next
bActionGroup * grp
ListBase constraintChannels
struct bActionChannel * prev
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]
ListBase chanbase DNA_DEPRECATED
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
char bboneflag DNA_DEPRECATED
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]
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]