Blender  V2.93
DNA_action_types.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
17  * All rights reserved.
18  */
19 
28 #pragma once
29 
30 #include "DNA_ID.h"
31 #include "DNA_listBase.h"
32 #include "DNA_session_uuid_types.h"
33 #include "DNA_userdef_types.h" /* ThemeWireColor */
34 #include "DNA_vec_types.h"
35 #include "DNA_view2d_types.h"
36 
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40 
41 struct Collection;
42 struct GHash;
43 struct Object;
44 struct SpaceLink;
45 
46 /* ************************************************ */
47 /* Visualization */
48 
49 /* Motion Paths ------------------------------------ */
50 /* (used for Pose Channels and Objects) */
51 
52 /* Data point for motion path (mpv) */
53 typedef struct bMotionPathVert {
55  float co[3];
57  int flag;
59 
60 /* bMotionPathVert->flag */
61 typedef enum eMotionPathVert_Flag {
62  /* vert is selected */
63  MOTIONPATH_VERT_SEL = (1 << 0),
64  MOTIONPATH_VERT_KEY = (1 << 1),
66 
67 /* ........ */
68 
69 /* Motion Path data cache (mpath)
70  * - for elements providing transforms (i.e. Objects or PoseChannels)
71  */
72 typedef struct bMotionPath {
76  int length;
77 
81  int end_frame;
82 
84  float color[3];
88  int flag;
89 
90  /* Used for drawing. */
94  void *_pad;
96 
97 /* bMotionPath->flag */
98 typedef enum eMotionPath_Flag {
99  /* (for bones) path represents the head of the bone */
101  /* motion path is being edited */
103  /* Custom colors */
105  /* Draw lines or only points */
108 
109 /* Visualization General --------------------------- */
110 /* for Objects or Poses (but NOT PoseChannels) */
111 
112 /* Animation Visualization Settings (avs) */
113 typedef struct bAnimVizSettings {
114  /* General Settings ------------------------ */
116  short recalc;
117 
118  /* Motion Path Settings ------------------- */
120  short path_type;
122  short path_step;
123 
128  char _pad[6];
129 
135 
136 /* bAnimVizSettings->recalc */
137 typedef enum eAnimViz_RecalcFlags {
138  /* motionpaths need recalculating */
141 
142 /* bAnimVizSettings->path_type */
143 typedef enum eMotionPaths_Types {
144  /* show the paths along their entire ranges */
146  /* only show the parts of the paths around the current frame */
149 
150 /* bAnimVizSettings->path_viewflag */
151 typedef enum eMotionPaths_ViewFlag {
152  /* show frames on path */
154  /* show keyframes on path */
156  /* show keyframe/frame numbers */
158  /* find keyframes in whole action (instead of just in matching group name) */
160  /* draw lines on path */
161  /* MOTIONPATH_VIEW_LINES = (1 << 4), */ /* UNUSED */
163 
164 /* bAnimVizSettings->path_bakeflag */
165 typedef enum eMotionPaths_BakeFlag {
167  /* MOTIONPATH_BAKE_NEEDS_RECALC = (1 << 0), */ /* UNUSED */
174 
175 /* runtime */
176 #
177 #
178 typedef struct bPoseChannelDrawData {
179  float solid_color[4];
180  float wire_color[4];
181 
183  /* keep last */
184  float bbone_matrix[0][4][4];
186 
187 struct DualQuat;
188 struct Mat4;
189 
190 typedef struct bPoseChannel_Runtime {
192 
193  /* Cached dual quaternion for deformation. */
194  struct DualQuat deform_dual_quat;
195 
196  /* B-Bone shape data: copy of the segment count for validation. */
198 
199  /* Rest and posed matrices for segments. */
202 
203  /* Delta from rest to pose in matrix and DualQuat form. */
207 
208 /* ************************************************ */
209 /* Poses */
210 
211 /* PoseChannel ------------------------------------ */
212 
219 typedef struct bPoseChannel {
220  struct bPoseChannel *next, *prev;
221 
224 
228  char name[64];
229 
231  short flag;
233  short ikflag;
235  short protectflag;
237  short agrp_index;
239  char constflag;
242  char drawflag;
243  char bboneflag DNA_DEPRECATED;
244  char _pad0[4];
245 
247  struct Bone *bone;
252 
254  struct ListBase iktree;
256  struct ListBase siktree;
257 
261  struct Object *custom;
269 
270  char _pad1[4];
271 
273  float loc[3];
274  float size[3];
275 
281  float eul[3];
283  float quat[4];
285  float rotAxis[3], rotAngle;
287  short rotmode;
288  char _pad[2];
289 
294  float chan_mat[4][4];
299  float pose_mat[4][4];
301  float disp_mat[4][4];
303  float disp_tail_mat[4][4];
308  float constinv[4][4];
309 
311  float pose_head[3];
313  float pose_tail[3];
314 
316  float limitmin[3], limitmax[3];
318  float stiffness[3];
319  float ikstretch;
321  float ikrotweight;
323  float iklinweight;
324 
329  float roll1, roll2;
332  float ease1, ease2;
335 
339 
341  void *temp;
344 
347 
351 
352 /* PoseChannel (transform) flags */
353 typedef enum ePchan_Flag {
354  /* has transforms */
355  POSE_LOC = (1 << 0),
356  POSE_ROT = (1 << 1),
357  POSE_SIZE = (1 << 2),
358 
359  /* old IK/cache stuff
360  * - used to be here from (1 << 3) to (1 << 8)
361  * but has been repurposed since 2.77.2
362  * as they haven't been used in over 10 years
363  */
364 
365  /* has BBone deforms */
366  POSE_BBONE_SHAPE = (1 << 3),
367 
368  /* IK/Pose solving */
369  POSE_CHAIN = (1 << 9),
370  POSE_DONE = (1 << 10),
371  /* visualization */
372  POSE_KEY = (1 << 11),
373  /* POSE_STRIDE = (1 << 12), */ /* UNUSED */
374  /* standard IK solving */
375  POSE_IKTREE = (1 << 13),
376 #if 0
377  /* has Spline IK */
378  POSE_HAS_IKS = (1 << 14),
379 #endif
380  /* spline IK solving */
381  POSE_IKSPLINE = (1 << 15),
383 
384 /* PoseChannel constflag (constraint detection) */
385 typedef enum ePchan_ConstFlag {
386  PCHAN_HAS_IK = (1 << 0),
387  PCHAN_HAS_CONST = (1 << 1),
388  /* only used for drawing Posemode, not stored in channel */
389  /* PCHAN_HAS_ACTION = (1 << 2), */ /* UNUSED */
390  PCHAN_HAS_TARGET = (1 << 3),
391  /* only for drawing Posemode too */
392  /* PCHAN_HAS_STRIDE = (1 << 4), */ /* UNUSED */
393  /* spline IK */
394  PCHAN_HAS_SPLINEIK = (1 << 5),
396 
397 /* PoseChannel->ikflag */
398 typedef enum ePchan_IkFlag {
399  BONE_IK_NO_XDOF = (1 << 0),
400  BONE_IK_NO_YDOF = (1 << 1),
401  BONE_IK_NO_ZDOF = (1 << 2),
402 
403  BONE_IK_XLIMIT = (1 << 3),
404  BONE_IK_YLIMIT = (1 << 4),
405  BONE_IK_ZLIMIT = (1 << 5),
406 
407  BONE_IK_ROTCTL = (1 << 6),
408  BONE_IK_LINCTL = (1 << 7),
409 
410  BONE_IK_NO_XDOF_TEMP = (1 << 10),
411  BONE_IK_NO_YDOF_TEMP = (1 << 11),
412  BONE_IK_NO_ZDOF_TEMP = (1 << 12),
414 
415 /* PoseChannel->drawflag */
416 typedef enum ePchan_DrawFlag {
419 
420 #define PCHAN_CUSTOM_DRAW_SIZE(pchan) \
421  (pchan)->custom_scale *( \
422  ((pchan)->drawflag & PCHAN_DRAW_NO_CUSTOM_BONE_SIZE) ? 1.0f : (pchan)->bone->length)
423 
424 #ifdef DNA_DEPRECATED_ALLOW
425 /* PoseChannel->bboneflag */
426 typedef enum ePchan_BBoneFlag {
427  /* Use custom reference bones (for roll and handle alignment), instead of immediate neighbors */
428  PCHAN_BBONE_CUSTOM_HANDLES = (1 << 1),
429  /* Evaluate start handle as being "relative" */
430  PCHAN_BBONE_CUSTOM_START_REL = (1 << 2),
431  /* Evaluate end handle as being "relative" */
432  PCHAN_BBONE_CUSTOM_END_REL = (1 << 3),
433 } ePchan_BBoneFlag;
434 #endif
435 
436 /* PoseChannel->rotmode and Object->rotmode */
437 typedef enum eRotationModes {
438  /* quaternion rotations (default, and for older Blender versions) */
440  /* euler rotations - keep in sync with enum in BLI_math.h */
449  /* NOTE: space is reserved here for 18 other possible
450  * euler rotation orders not implemented
451  */
452  /* axis angle rotations */
454 
455  ROT_MODE_MIN = ROT_MODE_AXISANGLE, /* sentinel for Py API */
458 
459 /* Pose ------------------------------------ */
460 
461 /* Pose-Object.
462  *
463  * It is only found under ob->pose. It is not library data, even
464  * though there is a define for it (hack for the outliner).
465  */
466 typedef struct bPose {
470  struct GHash *chanhash;
471 
472  /* Flat array of pose channels. It references pointers from
473  * chanbase. Used for quick pose channel lookup from an index.
474  */
476 
477  short flag;
478  char _pad[2];
480  unsigned int proxy_layer;
481  char _pad1[4];
482 
484  float ctime;
486  float stride_offset[3];
488  float cyclic_offset[3];
489 
492 
496  int iksolver;
498  void *ikdata;
500  void *ikparam;
501 
505  char proxy_act_bone[64];
507 
508 /* Pose->flag */
509 typedef enum ePose_Flags {
510  /* results in BKE_pose_rebuild being called */
511  POSE_RECALC = (1 << 0),
512  /* prevents any channel from getting overridden by anim from IPO */
513  POSE_LOCKED = (1 << 1),
514  /* clears the POSE_LOCKED flag for the next time the pose is evaluated */
515  POSE_DO_UNLOCK = (1 << 2),
516  /* pose has constraints which depend on time (used when depsgraph updates for a new frame) */
518  /* recalculate bone paths */
519  /* POSE_RECALCPATHS = (1 << 4), */ /* UNUSED */
520  /* set by BKE_pose_rebuild to give a chance to the IK solver to rebuild IK tree */
521  POSE_WAS_REBUILT = (1 << 5),
522  POSE_FLAG_DEPRECATED = (1 << 6), /* deprecated. */
523  /* pose constraint flags needs to be updated */
525  /* Use auto IK in pose mode */
526  POSE_AUTO_IK = (1 << 8),
527  /* Use x-axis mirror in pose mode */
528  POSE_MIRROR_EDIT = (1 << 9),
529  /* Use relative mirroring in mirror mode */
530  POSE_MIRROR_RELATIVE = (1 << 10),
532 
533 /* IK Solvers ------------------------------------ */
534 
535 /* bPose->iksolver and bPose->ikparam->iksolver */
536 typedef enum ePose_IKSolverType {
540 
541 /* header for all bPose->ikparam structures */
542 typedef struct bIKParam {
543  int iksolver;
545 
546 /* bPose->ikparam when bPose->iksolver=1 */
547 typedef struct bItasc {
548  int iksolver;
549  float precision;
550  short numiter;
551  short numstep;
552  float minstep;
553  float maxstep;
554  short solver;
555  short flag;
556  float feedback;
558  float maxvel;
560  float dampmax;
562  float dampeps;
564 
565 /* bItasc->flag */
566 typedef enum eItasc_Flags {
567  ITASC_AUTO_STEP = (1 << 0),
569  ITASC_REITERATION = (1 << 2),
570  ITASC_SIMULATION = (1 << 3),
572 
573 /* bItasc->solver */
574 typedef enum eItasc_Solver {
575  ITASC_SOLVER_SDLS = 0, /* selective damped least square, suitable for CopyPose constraint */
576  ITASC_SOLVER_DLS = 1, /* damped least square with numerical filtering of damping */
578 
579 /* ************************************************ */
580 /* Action */
581 
582 /* Groups -------------------------------------- */
583 
584 /* Action-Channel Group (agrp)
585  *
586  * These are stored as a list per-Action, and are only used to
587  * group that Action's channels in an Animation Editor.
588  *
589  * Even though all FCurves live in a big list per Action, each group they are in also
590  * holds references to the achans within that list which belong to it. Care must be taken to
591  * ensure that action-groups never end up being the sole 'owner' of a channel.
592  *
593  * This is also exploited for bone-groups. Bone-Groups are stored per bPose, and are used
594  * primarily to color bones in the 3d-view. There are other benefits too, but those are mostly
595  * related to Action-Groups.
596  *
597  * Note that these two uses each have their own RNA 'ActionGroup' and 'BoneGroup'.
598  */
599 typedef struct bActionGroup {
600  struct bActionGroup *next, *prev;
601 
607 
609  int flag;
616  char name[64];
617 
621 
622 /* Action Group flags */
623 typedef enum eActionGroup_Flag {
624  /* group is selected */
625  AGRP_SELECTED = (1 << 0),
626  /* group is 'active' / last selected one */
627  AGRP_ACTIVE = (1 << 1),
628  /* keyframes/channels belonging to it cannot be edited */
629  AGRP_PROTECTED = (1 << 2),
630  /* for UI (DopeSheet), sub-channels are shown */
631  AGRP_EXPANDED = (1 << 3),
632  /* sub-channels are not evaluated */
633  AGRP_MUTED = (1 << 4),
634  /* sub-channels are not visible in Graph Editor */
635  AGRP_NOTVISIBLE = (1 << 5),
636  /* for UI (Graph Editor), sub-channels are shown */
637  AGRP_EXPANDED_G = (1 << 6),
638 
639  /* sub channel modifiers off */
640  AGRP_MODIFIERS_OFF = (1 << 7),
641 
642  AGRP_TEMP = (1 << 30),
643  AGRP_MOVED = (1u << 31),
645 
646 /* Actions -------------------------------------- */
647 
648 /* Action - reusable F-Curve 'bag' (act)
649  *
650  * This contains F-Curves that may affect settings from more than one ID blocktype and/or datablock
651  * (i.e. sub-data linked/used directly to the ID block that the animation data is linked to),
652  * but with the restriction that the other unrelated data (i.e. data that is not directly used or
653  * linked to by the source ID block).
654  *
655  * It serves as a 'unit' of reusable animation information (i.e. keyframes/motion data),
656  * that affects a group of related settings (as defined by the user).
657  */
658 typedef struct bAction {
661 
670 
672  int flag;
675 
680  int idroot;
681  char _pad[4];
682 
685 
686 /* Flags for the action */
687 typedef enum eAction_Flags {
688  /* flags for displaying in UI */
689  ACT_COLLAPSED = (1 << 0),
690  ACT_SELECTED = (1 << 1),
691 
692  /* flags for evaluation/editing */
693  ACT_MUTED = (1 << 9),
694  /* ACT_PROTECTED = (1 << 10), */ /* UNUSED */
695  /* ACT_DISABLED = (1 << 11), */ /* UNUSED */
697 
698 /* ************************************************ */
699 /* Action/Dopesheet Editor */
700 
701 /* Storage for Dopesheet/Grease-Pencil Editor data */
702 typedef struct bDopeSheet {
704  ID *source; /* XXX not used! */
707 
711  char searchstr[64];
712 
718  int flag;
719 
723 
724 /* DopeSheet filter-flag */
725 typedef enum eDopeSheet_FilterFlag {
726  /* general filtering */
728  ADS_FILTER_ONLYSEL = (1 << 0),
729 
730  /* temporary filters */
734  ADS_FILTER_ONLYNLA = (1 << 2),
736  ADS_FILTER_SELEDIT = (1 << 3),
737 
738  /* general filtering */
740  ADS_FILTER_SUMMARY = (1 << 4),
741 
742  /* datatype-based filtering */
744  ADS_FILTER_NOMESH = (1 << 7),
746  ADS_FILTER_NOOBJ = (1 << 8),
747  ADS_FILTER_NOLAT = (1 << 9),
748  ADS_FILTER_NOCAM = (1 << 10),
749  ADS_FILTER_NOMAT = (1 << 11),
750  ADS_FILTER_NOLAM = (1 << 12),
751  ADS_FILTER_NOCUR = (1 << 13),
752  ADS_FILTER_NOWOR = (1 << 14),
753  ADS_FILTER_NOSCE = (1 << 15),
754  ADS_FILTER_NOPART = (1 << 16),
755  ADS_FILTER_NOMBA = (1 << 17),
756  ADS_FILTER_NOARM = (1 << 18),
757  ADS_FILTER_NONTREE = (1 << 19),
758  ADS_FILTER_NOTEX = (1 << 20),
759  ADS_FILTER_NOSPK = (1 << 21),
762  ADS_FILTER_NOGPENCIL = (1 << 24),
763  /* NOTE: all new datablock filters will have to go in filterflag2 (see below) */
764 
765  /* NLA-specific filters */
767  ADS_FILTER_NLA_NOACT = (1 << 25),
768 
769  /* general filtering 3 */
774 
775 #if 0
777  ADS_FILTER_NOOBDATA = (ADS_FILTER_NOCAM | ADS_FILTER_NOMAT | ADS_FILTER_NOLAM |
780 #endif
782 
783 /* DopeSheet filter-flags - Overflow (filterflag2) */
787  ADS_FILTER_NOHAIR = (1 << 3),
791 
792 /* DopeSheet general flags */
793 typedef enum eDopeSheet_Flag {
798 
807 
808 typedef struct SpaceAction_Runtime {
809  char flag;
810  char _pad0[7];
812 
813 /* Action Editor Space. This is defined here instead of in DNA_space_types.h */
814 typedef struct SpaceAction {
815  struct SpaceLink *next, *prev;
818  char spacetype;
819  char link_flag;
820  char _pad0[6];
821  /* End 'SpaceLink' header. */
822 
825 
830 
832  float timeslide;
833 
834  short flag;
835  /* Editing context */
836  char mode;
837  /* Storage for sub-space types. */
838  char mode_prev;
840  char autosnap;
843  char _pad1[6];
844 
847 
848 /* SpaceAction flag */
849 typedef enum eSAction_Flag {
850  /* during transform (only set for TimeSlide) */
851  SACTION_MOVING = (1 << 0),
852  /* show sliders */
853  SACTION_SLIDERS = (1 << 1),
854  /* draw time in seconds instead of time in frames */
855  SACTION_DRAWTIME = (1 << 2),
856  /* don't filter action channels according to visibility */
857  // SACTION_NOHIDE = (1 << 3), /* XXX deprecated... old animation systems. */
858  /* don't kill overlapping keyframes after transform */
860  /* don't include keyframes that are out of view */
861  // SACTION_HORIZOPTIMISEON = (1 << 5), // XXX deprecated... old irrelevant trick
862  /* show pose-markers (local to action) in Action Editor mode */
864  /* don't draw action channels using group colors (where applicable) */
865  /* SACTION_NODRAWGCOLORS = (1 << 7), DEPRECATED */
866  /* SACTION_NODRAWCFRANUM = (1 << 8), DEPRECATED */
867  /* don't perform realtime updates */
869  /* move markers as well as keyframes */
870  SACTION_MARKERS_MOVE = (1 << 11),
871  /* show interpolation type */
873  /* show extremes */
875  /* show markers region */
876  SACTION_SHOW_MARKERS = (1 << 14),
878 
879 /* SpaceAction_Runtime.flag */
880 typedef enum eSAction_Runtime_Flag {
884 
885 /* SpaceAction Mode Settings */
886 typedef enum eAnimEdit_Context {
887  /* action on the active object */
889  /* list of all shapekeys on the active object, linked with their F-Curves */
891  /* editing of gpencil data */
893  /* dopesheet (default) */
895  /* mask */
897  /* cache file */
899  /* timeline - replacement for the standalone "timeline editor" */
902 
903 /* SpaceAction AutoSnap Settings (also used by other Animation Editors) */
904 typedef enum eAnimEdit_AutoSnap {
905  /* no auto-snap */
907  /* snap to 1.0 frame/second intervals */
909  /* snap to actual frames/seconds (nla-action time) */
911  /* snap to nearest marker */
913  /* snap to actual seconds (nla-action time) */
915  /* snap to 1.0 second increments */
918 
919 /* SAction->cache_display */
920 typedef enum eTimeline_Cache_Flag {
921  TIME_CACHE_DISPLAY = (1 << 0),
924  TIME_CACHE_CLOTH = (1 << 3),
925  TIME_CACHE_SMOKE = (1 << 4),
929 
930 /* ************************************************ */
931 /* Legacy Data */
932 
933 /* WARNING: Action Channels are now deprecated... they were part of the old animation system!
934  * (ONLY USED FOR DO_VERSIONS...)
935  *
936  * Action Channels belong to Actions. They are linked with an IPO block, and can also own
937  * Constraint Channels in certain situations.
938  *
939  * Action-Channels can only belong to one group at a time, but they still live the Action's
940  * list of achans (to preserve backwards compatibility, and also minimize the code
941  * that would need to be recoded). Grouped achans are stored at the start of the list, according
942  * to the position of the group in the list, and their position within the group.
943  */
944 typedef struct bActionChannel {
948 
950  struct Ipo *ipo;
953 
955  int flag;
957  char name[64];
959  int temp;
961 
962 #ifdef __cplusplus
963 }
964 #endif
ID and Library types, which are fundamental for sdna.
struct bActionChannel bActionChannel
eDopeSheet_FilterFlag2
@ 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_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_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
eAnimEdit_AutoSnap
@ SACTSNAP_OFF
@ SACTSNAP_SECOND
@ SACTSNAP_TSTEP
@ SACTSNAP_MARKER
@ SACTSNAP_STEP
@ SACTSNAP_FRAME
struct bPoseChannel bPoseChannel
struct bAnimVizSettings bAnimVizSettings
struct bDopeSheet bDopeSheet
struct bAction bAction
eAction_Flags
@ ACT_COLLAPSED
@ ACT_MUTED
@ ACT_SELECTED
eMotionPathVert_Flag
@ MOTIONPATH_VERT_KEY
@ MOTIONPATH_VERT_SEL
enum eMotionPaths_Types eMotionPath_Types
struct bPose bPose
struct bPoseChannelDrawData bPoseChannelDrawData
struct SpaceAction SpaceAction
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 SpaceAction_Runtime SpaceAction_Runtime
struct bActionGroup bActionGroup
struct bIKParam bIKParam
eItasc_Flags
@ ITASC_REITERATION
@ ITASC_AUTO_STEP
@ ITASC_SIMULATION
@ ITASC_INITIAL_REITERATION
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_CUSTOM
@ MOTIONPATH_FLAG_EDIT
@ MOTIONPATH_FLAG_BHEAD
ePchan_ConstFlag
@ PCHAN_HAS_CONST
@ PCHAN_HAS_IK
@ PCHAN_HAS_TARGET
@ 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_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
eDopeSheet_Flag
@ ADS_FLAG_SHOW_DBFILTERS
@ ADS_FLAG_SUMMARY_COLLAPSED
@ ADS_FLAG_INVERT_FILTER
@ ADS_FLAG_NO_DB_SORT
@ ADS_FLAG_FUZZY_NAMES
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
These structs are the foundation for all linked lists in the library system.
GPUBatch
Definition: GPU_batch.h:93
struct GPUVertBuf GPUVertBuf
Definition: DNA_ID.h:273
View2D v2d DNA_DEPRECATED
bAction * action
bDopeSheet ads
struct SpaceLink * prev
SpaceAction_Runtime runtime
struct SpaceLink * next
ListBase regionbase
struct bActionChannel * next
bActionGroup * grp
struct Ipo * ipo
ListBase constraintChannels
struct bActionChannel * prev
ThemeWireColor cs
struct bActionGroup * prev
struct bActionGroup * next
ListBase curves
ListBase chanbase DNA_DEPRECATED
ListBase groups
PreviewImage * preview
char _pad[4]
ListBase markers
ListBase chanbase
char searchstr[64]
struct Collection * filter_grp
float minstep
float dampmax
float precision
float dampeps
float feedback
float maxvel
short numstep
short numiter
short solver
float maxstep
struct GPUVertBuf * points_vbo
bMotionPathVert * points
struct GPUBatch * batch_points
struct GPUBatch * batch_line
float color[3]
float bbone_matrix[0][4][4]
struct Mat4 * bbone_deform_mats
struct DualQuat deform_dual_quat
struct DualQuat * bbone_dual_quats
struct Mat4 * bbone_pose_mats
struct Mat4 * bbone_rest_mats
ListBase constraints
IDProperty * prop
bPoseChannelDrawData * draw_data
struct Bone * bone
struct bPoseChannel * parent
char bboneflag DNA_DEPRECATED
struct bPoseChannel * custom_tx
bMotionPath * mpath
float stiffness[3]
struct ListBase iktree
float pose_head[3]
float chan_mat[4][4]
struct bPoseChannel * bbone_next
float pose_tail[3]
struct Object * custom
struct bPoseChannel * prev
struct bPoseChannel * next
float constinv[4][4]
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
char _pad1[4]
void * ikparam
float ctime
unsigned int proxy_layer
struct GHash * chanhash
ListBase agroups
short flag
bAnimVizSettings avs
int active_group
float stride_offset[3]
char proxy_act_bone[64]
bPoseChannel ** chan_array
float cyclic_offset[3]