Blender V5.0
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 282 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 286 of file ED_anim_api.hh.

Referenced by acf_action_slot_idtype_icon(), acf_action_slot_name(), acf_action_slot_name_prop(), acf_action_slot_setting_ptr(), 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_dslightprobe_icon(), acf_dslightprobe_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_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(), animdata_filter_animchan(), box_select_elem(), cachefile_to_keylist(), click_select_channel_action_slot(), click_select_channel_fcurve(), 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(), ED_anim_ale_fcurve_delete(), 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_channel_color(), 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(), blender::ed::animation::pastebuf_find_matching_copybuf_item(), 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 351 of file ED_anim_api.hh.

Referenced by acf_action_slot_name_prop(), 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(), ED_anim_ale_fcurve_delete(), graph_panel_key_properties(), graph_panel_modifiers(), graph_panel_properties(), insert_fcurve_key(), make_new_animlistelem(), mouse_action_keys(), blender::ed::animation::pastebuf_find_matching_copybuf_item(), rename_anim_channels(), and blender::animrig::tests::TEST_F().

◆ flag

int bAnimListElem::flag

copy of elem's flags for quick access

Definition at line 290 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 328 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(), actkeys_list_element_to_keylist(), 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(), animdata_filter_animchan(), cachefile_to_keylist(), clean_fcurve(), click_select_channel_gplayer(), click_select_channel_grease_pencil_layer(), click_select_channel_group(), click_select_channel_shapekey(), draw_fcurve(), draw_grease_pencil_layer_widgets(), draw_setting_widget(), ED_add_action_channel(), ED_add_action_group_channel(), ED_add_action_layered_channel(), ED_add_action_slot_channel(), ED_add_fcurve_channel(), ED_add_grease_pencil_datablock_channel(), 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(), is_animating_bone(), 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 292 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 356 of file ED_anim_api.hh.

Referenced by acf_nla_curve_name(), ANIM_channel_draw_widgets(), ED_anim_ale_fcurve_delete(), 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 304 of file ED_anim_api.hh.

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

◆ tag

char bAnimListElem::tag

tag the included data. Temporary always

Definition at line 309 of file ED_anim_api.hh.

◆ type

◆ update


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