Blender V4.3
bAnimListElem Struct Reference

#include <ED_anim_api.hh>

Public Attributes

bAnimListElemnext
 
bAnimListElemprev
 
void * data
 
eAnim_ChannelType type
 
int flag
 
int index
 
int32_t slot_handle
 
eAnim_Update_Flags update
 
char tag
 
eAnim_KeyType datatype
 
void * key_data
 
IDid
 
AnimDataadt
 
Mainbmain
 
IDfcurve_owner_id
 
void * owner
 

Detailed Description

This struct defines a structure used for quick and uniform access for channels of animation data.

Definition at line 254 of file ED_anim_api.hh.

Member Data Documentation

◆ adt

◆ bmain

Main* bAnimListElem::bmain

◆ data

void* bAnimListElem::data

source data this elem represents

Definition at line 258 of file ED_anim_api.hh.

Referenced by acf_dsarm_setting_ptr(), acf_dscachefile_setting_ptr(), acf_dscam_setting_ptr(), acf_dscur_icon(), acf_dscur_setting_ptr(), acf_dscurves_setting_ptr(), acf_dsgpencil_setting_ptr(), acf_dslat_setting_ptr(), acf_dslight_setting_ptr(), acf_dslinestyle_setting_ptr(), acf_dsmat_setting_ptr(), acf_dsmball_setting_ptr(), acf_dsmclip_setting_ptr(), acf_dsmesh_setting_ptr(), acf_dsntree_offset(), acf_dsntree_setting_ptr(), acf_dspart_setting_ptr(), acf_dspointcloud_setting_ptr(), acf_dsskey_setting_ptr(), acf_dsspk_setting_ptr(), acf_dstex_setting_ptr(), acf_dsvolume_setting_ptr(), acf_dswor_setting_ptr(), acf_fcurve_channel_color(), acf_fcurve_name(), acf_fcurve_name_prop(), acf_fcurve_setting_ptr(), acf_fillactd_setting_ptr(), acf_filldrivers_setting_ptr(), acf_generic_idblock_name(), acf_generic_idblock_name_prop(), acf_generic_idfill_name_prop(), acf_generic_indentation_flexible(), acf_gpd_setting_ptr_legacy(), acf_gpl_channel_color(), acf_gpl_name_legacy(), acf_gpl_name_prop_legacy(), acf_gpl_setting_ptr_legacy(), acf_group_channel_color(), acf_group_name(), acf_group_name_prop(), acf_group_setting_ptr(), acf_mask_setting_ptr(), acf_masklay_name(), acf_masklay_name_prop(), acf_masklay_setting_ptr(), acf_nla_controls_setting_ptr(), acf_nla_curve_name(), acf_nlaaction_backdrop(), acf_nlaaction_color(), acf_nlaaction_name(), acf_nlaaction_name_prop(), acf_nlatrack_color(), acf_nlatrack_name(), acf_nlatrack_name_prop(), acf_nlatrack_setting_ptr(), acf_nlatrack_setting_valid(), acf_object_icon(), acf_object_name(), acf_object_setting_ptr(), acf_object_setting_valid(), acf_scene_setting_ptr(), acf_shapekey_name(), acf_shapekey_name_prop(), acf_shapekey_setting_ptr(), acf_summary_setting_ptr(), achannel_is_broken(), achannel_is_part_of_disconnected_slot(), achannel_nlatrack_solo_widget_cb(), actkeys_list_element_to_keylist(), actkeys_mselect_channel_only(), actkeys_mselect_single(), ANIM_animchannel_keyframes_loop(), ANIM_channel_draw(), ANIM_channel_draw_widgets(), ANIM_flush_setting_anim_channels(), ANIM_is_active_channel(), ANIM_set_active_channel(), animchan_sync_fcurve(), animchan_sync_fcurve_scene(), animchan_sync_gplayer(), animchan_sync_group(), animchannel_select_range(), box_select_elem(), cachefile_to_keylist(), click_select_channel_action_slot(), click_select_channel_fcurve(), click_select_channel_gpdatablock(), click_select_channel_gplayer(), click_select_channel_grease_pencil_datablock(), click_select_channel_grease_pencil_layer(), click_select_channel_grease_pencil_layer_group(), click_select_channel_group(), click_select_channel_maskdatablock(), click_select_channel_masklayer(), click_select_channel_nlacontrols(), click_select_channel_object(), click_select_channel_scene(), click_select_channel_shapekey(), blender::ed::animation::greasepencil::data_block_setting_ptr(), draw_grease_pencil_layer_widgets(), draw_keyframes(), get_channel_bounds(), graph_fmodifier_copy_exec(), graph_panel_context(), graph_refresh_fcurve_colors(), graphkeys_click_insert_exec(), graphkeys_deselectall_exec(), graphop_active_fcurve_poll(), insert_gpencil_key(), insert_grease_pencil_key(), blender::ed::animation::greasepencil::layer_group_icon(), blender::ed::animation::greasepencil::layer_group_name(), blender::ed::animation::greasepencil::layer_group_setting_ptr(), blender::ed::animation::greasepencil::layer_name(), blender::ed::animation::greasepencil::layer_name_prop(), blender::ed::animation::greasepencil::layer_offset(), blender::ed::animation::greasepencil::layer_setting_ptr(), make_new_animlistelem(), mouse_action_keys(), mouse_nla_strips(), mouse_nla_tracks(), nlaedit_strip_at_region_position(), ob_keyframes_loop(), ob_to_keylist(), paste_animedit_keys(), paste_get_y_offset(), region_select_elem(), rename_anim_channels(), scene_keyframes_loop(), scene_to_keylist(), skip_fcurve_with_name(), blender::animrig::tests::TEST_F(), and blender::animrig::tests::TEST_F().

◆ datatype

◆ fcurve_owner_id

ID* bAnimListElem::fcurve_owner_id

For list elements that correspond to an f-curve, a channel group, or an action slot, this is the ID which owns that data.

For channel groups and action slots, that will always be an Action. For f-curves it's more complicated, because f-curves are sometimes owned by other ID types (e.g. driver f-curves are owned by objects, materials, etc.), so you have to be careful.

NOTE: this is different from id above. The id above will be set to an object if the f-curve is coming from action associated with that object.

TODO: the responsibilities for this are getting overloaded, which makes it difficult to use confidently, and also makes its name misleading. Split off a separate bAction pointer that is simply null when the data isn't owned by an action.

Definition at line 323 of file ED_anim_api.hh.

Referenced by acf_fcurve_name(), acf_fcurve_name_prop(), acf_generic_group_offset(), acf_group_name_prop(), acf_nlaaction_name_prop(), achannel_is_part_of_disconnected_slot(), ANIM_channel_action_get(), click_select_channel_action_slot(), draw_setting_widget(), graph_panel_key_properties(), graph_panel_modifiers(), graph_panel_properties(), insert_fcurve_key(), make_new_animlistelem(), mouse_action_keys(), rename_anim_channels(), and blender::animrig::tests::TEST_F().

◆ flag

int bAnimListElem::flag

copy of elem's flags for quick access

Definition at line 262 of file ED_anim_api.hh.

Referenced by acf_group_color(), make_new_animlistelem(), and blender::animrig::tests::TEST_F().

◆ id

ID* bAnimListElem::id
Note
id here is the "IdAdtTemplate"-style datablock (e.g. Object, Material, Texture, NodeTree) from which evaluation of the RNA-paths takes place. It's used to figure out how deep channels should be nested (e.g. for Textures/NodeTrees) in the tree, and allows property lookups (e.g. for sliders and for inserting keyframes) to work. If we had instead used bAction or something similar, none of this would be possible: although it's trivial to use an IdAdtTemplate type to find the source action a channel (e.g. F-Curve) comes from (i.e. in the AnimEditors, it must be the active action, as only that can be edited), it's impossible to go the other way (i.e. one action may be used in multiple places). ID block that channel is attached to

Definition at line 300 of file ED_anim_api.hh.

Referenced by acf_fcurve_name(), acf_generic_group_offset(), acf_gpl_name_prop_legacy(), acf_masklay_name_prop(), acf_nlatrack_name_prop(), acf_object_name_prop(), acf_shapekey_name_prop(), achannel_nlatrack_solo_widget_cb(), achannel_setting_flush_widget_cb(), ANIM_channel_draw_widgets(), ANIM_flush_setting_anim_channels(), ANIM_is_active_channel(), ANIM_list_elem_update(), animchan_sync_fcurve(), animchan_sync_fcurve_scene(), animchan_sync_group(), cachefile_to_keylist(), clean_fcurve(), click_select_channel_gplayer(), click_select_channel_grease_pencil_layer(), click_select_channel_group(), draw_fcurve(), draw_grease_pencil_layer_widgets(), draw_setting_widget(), get_channel_bounds(), graph_panel_driven_property(), graph_panel_drivers(), graph_panel_drivers_header(), graph_panel_key_properties(), graph_panel_properties(), graphkeys_click_insert_exec(), insert_fcurve_key(), insert_gpencil_key(), insert_grease_pencil_key(), blender::ed::animation::greasepencil::layer_name_prop(), make_new_animlistelem(), mouse_action_keys(), mouse_nla_tracks(), nlatracks_pushdown_exec(), ob_keyframes_loop(), ob_to_keylist(), rename_anim_channels(), scene_keyframes_loop(), scene_to_keylist(), select_pchan_for_action_group(), skip_fcurve_with_name(), tag_update_animation_element(), and blender::animrig::tests::TEST_F().

◆ index

int bAnimListElem::index

for un-named data, the index of the data in its collection

Definition at line 264 of file ED_anim_api.hh.

Referenced by acf_shapekey_name(), and make_new_animlistelem().

◆ key_data

◆ next

◆ owner

void* bAnimListElem::owner

for per-element F-Curves (e.g. NLA Control Curves), the element that this represents (e.g. NlaStrip)

Definition at line 328 of file ED_anim_api.hh.

Referenced by acf_nla_curve_name(), ANIM_channel_draw_widgets(), insert_fcurve_key(), and skip_fcurve_with_name().

◆ prev

bAnimListElem * bAnimListElem::prev

◆ slot_handle

int32_t bAnimListElem::slot_handle

For data that is owned by a specific slot, its handle.

This is not declared as blender::animrig::slot_handle_t to avoid all the users of this header file to get the animrig module as extra dependency (which would spread to the undo system, line-art, etc). It's probably best to split off this struct definition from the rest of this header, as most code that uses this header doesn't need to know the definition of this struct.

TODO: split off into separate header file.

Definition at line 276 of file ED_anim_api.hh.

Referenced by acf_fcurve_name(), achannel_is_part_of_disconnected_slot(), animfilter_fcurves_span(), insert_fcurve_key(), and blender::animrig::tests::TEST_F().

◆ tag

char bAnimListElem::tag

tag the included data. Temporary always

Definition at line 281 of file ED_anim_api.hh.

◆ type

◆ update


The documentation for this struct was generated from the following file: