67 if (adt->
action !=
nullptr) {
126 ID *owner_id = ale->
id;
131 if (
ELEM(
nullptr, agrp, owner_id)) {
153 agrp->
flag &= ~AGRP_SELECTED;
159 if (*active_agrp ==
nullptr) {
165 agrp->
flag &= ~AGRP_ACTIVE;
170 agrp->
flag &= ~AGRP_ACTIVE;
182 ID *owner_id = ale->
id;
202 if (
strip ==
nullptr) {
211 fcu->
flag &= ~FCURVE_SELECTED;
219 ID *owner_id = ale->
id;
228 switch (
GS(owner_id->
name)) {
255 gpl->
flag &= ~GP_LAYER_SELECT;
264 ListBase anim_data = {
nullptr,
nullptr};
301 Layer *layer =
static_cast<Layer *
>(ale->data);
302 layer->set_selected(grease_pencil->is_layer_active(layer));
363 ale->update &= ~ANIM_UPDATE_ORDER;
370 ale->update &= ~ANIM_UPDATE_DEPS;
375 ale->update &= ~ANIM_UPDATE_HANDLES;
382 ale->update &= ~ANIM_UPDATE_ORDER;
391 ale->update &= ~ANIM_UPDATE_DEPS;
396 ale->update &= ~ANIM_UPDATE_HANDLES;
403 ale->update &= ~ANIM_UPDATE_ORDER;
410 ale->update &= ~ANIM_UPDATE_HANDLES;
417 ale->update &= ~ANIM_UPDATE_DEPS;
421 else if (
ELEM(ale->type,
428 ale->update &= ~ANIM_UPDATE_DEPS;
432 else if (
ELEM(ale->type,
438 ale->update &= ~ANIM_UPDATE_DEPS;
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) {
525 animrig::action_deselect_keys(dna_action->wrap());
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)
void DEG_id_tag_update_ex(Main *bmain, 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)
void MEM_freeN(void *vmemh)
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