67 if (adt->
action !=
nullptr) {
126 ID *owner_id = ale->
id;
131 if (
ELEM(
nullptr, agrp, owner_id)) {
159 if (*active_agrp ==
nullptr) {
182 ID *owner_id = ale->
id;
184 Scene *scene =
reinterpret_cast<Scene *
>(owner_id);
186 Strip *strip =
nullptr;
189 char strip_name[
sizeof(strip->
name)];
202 if (strip ==
nullptr) {
219 ID *owner_id = ale->
id;
228 switch (
GS(owner_id->
name)) {
264 ListBase anim_data = {
nullptr,
nullptr};
301 Layer *layer =
static_cast<Layer *
>(ale->data);
302 layer->set_selected(grease_pencil->is_layer_active(layer));
421 else if (
ELEM(ale->type,
432 else if (
ELEM(ale->type,
445 else if (ale->update) {
448 printf(
"%s: Unhandled animchannel updates (%d) for type=%d (%p)\n",
468 ale_next = ale->
next;
496 if (!window_region) {
507 ListBase anim_data = {
nullptr,
nullptr};
511 if (!ale->adt || !ale->adt->action) {
514 dna_actions.
add(ale->adt->action);
524 for (
bAction *dna_action : dna_actions) {
Functions and classes to work with Actions.
Blender kernel action and pose functionality.
void action_group_colors_set_from_posebone(bActionGroup *grp, const bPoseChannel *pchan)
bPoseChannel * BKE_pose_channel_find_name(const bPose *pose, const char *name)
AnimData * BKE_animdata_from_id(const ID *id)
ScrArea * CTX_wm_area(const bContext *C)
wmWindow * CTX_wm_window(const bContext *C)
void CTX_wm_window_set(bContext *C, wmWindow *win)
void CTX_wm_area_set(bContext *C, ScrArea *area)
void CTX_wm_region_set(bContext *C, ARegion *region)
ARegion * CTX_wm_region(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
void BKE_fcurve_handles_recalc(FCurve *fcu)
void sort_time_fcurve(FCurve *fcu)
void BKE_gpencil_layer_frames_sort(struct bGPDlayer *gpl, bool *r_has_duplicate_frames)
Low-level operations for grease pencil.
ARegion * BKE_area_find_region_type(const ScrArea *area, int region_type)
bScreen * BKE_workspace_active_screen_get(const WorkSpaceInstanceHook *hook) GETTER_ATTRS
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE void BLI_listbase_clear(ListBase *lb)
void void BLI_freelistN(ListBase *listbase) ATTR_NONNULL(1)
bool bool BLI_str_quoted_substr(const char *__restrict str, const char *__restrict prefix, char *result, size_t result_maxncpy)
void DEG_id_tag_update(ID *id, unsigned int flags)
Object is a sort of wrapper for general info.
@ ANIMTYPE_SPECIALDATA__UNUSED
@ ANIMTYPE_GREASE_PENCIL_DATABLOCK
@ ANIMTYPE_GREASE_PENCIL_LAYER
@ ANIMTYPE_FILLACT_LAYERED
@ ANIMTYPE_GREASE_PENCIL_LAYER_GROUP
@ ANIMFILTER_DATA_VISIBLE
@ ANIMFILTER_LIST_CHANNELS
Read Guarded memory(de)allocation.
static void animchan_sync_fcurve_scene(bAnimListElem *ale)
static void animchan_sync_fcurve(bAnimListElem *ale)
void ANIM_animdata_freelist(ListBase *anim_data)
static void animchan_sync_group(bAnimContext *ac, bAnimListElem *ale, bActionGroup **active_agrp)
void ANIM_deselect_keys_in_animation_editors(bContext *C)
void ANIM_sync_animchannels_to_data(const bContext *C)
void ANIM_id_update(Main *bmain, ID *id)
void ANIM_list_elem_update(Main *bmain, Scene *scene, bAnimListElem *ale)
static void animchan_sync_gplayer(bAnimListElem *ale)
void ANIM_animdata_update(bAnimContext *ac, ListBase *anim_data)
bool ANIM_animdata_get_context(const bContext *C, bAnimContext *ac)
size_t ANIM_animdata_filter(bAnimContext *ac, ListBase *anim_data, const eAnimFilter_Flags filter_mode, void *data, const eAnimCont_Types datatype)
DEG_id_tag_update_ex(cb_data->bmain, cb_data->owner_id, ID_RECALC_TAG_FOR_UNDO|ID_RECALC_SYNC_TO_EVAL)
void MEM_freeN(void *vmemh)
void action_deselect_keys(Action &action)
Editing * editing_get(const Scene *scene)
Strip * get_strip_by_name(ListBase *seqbase, const char *name, bool recursive)
void RNA_property_update_main(Main *bmain, Scene *scene, PointerRNA *ptr, PropertyRNA *prop)
PointerRNA RNA_id_pointer_create(ID *id)
bool RNA_path_resolve_property(const PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop)
eAnim_Update_Flags update