66 if (adt->
action !=
nullptr) {
125 ID *owner_id = ale->
id;
130 if (
ELEM(
nullptr, agrp, owner_id)) {
152 agrp->
flag &= ~AGRP_SELECTED;
158 if (*active_agrp ==
nullptr) {
164 agrp->
flag &= ~AGRP_ACTIVE;
169 agrp->
flag &= ~AGRP_ACTIVE;
181 ID *owner_id = ale->
id;
188 char seq_name[
sizeof(seq->
name)];
196 if (seq ==
nullptr) {
205 fcu->
flag &= ~FCURVE_SELECTED;
213 ID *owner_id = ale->
id;
222 switch (
GS(owner_id->
name)) {
249 gpl->
flag &= ~GP_LAYER_SELECT;
258 ListBase anim_data = {
nullptr,
nullptr};
295 Layer *layer =
static_cast<Layer *
>(ale->data);
296 layer->set_selected(grease_pencil->is_layer_active(layer));
357 ale->update &= ~ANIM_UPDATE_ORDER;
364 ale->update &= ~ANIM_UPDATE_DEPS;
369 ale->update &= ~ANIM_UPDATE_HANDLES;
376 ale->update &= ~ANIM_UPDATE_ORDER;
385 ale->update &= ~ANIM_UPDATE_DEPS;
390 ale->update &= ~ANIM_UPDATE_HANDLES;
397 ale->update &= ~ANIM_UPDATE_ORDER;
404 ale->update &= ~ANIM_UPDATE_HANDLES;
411 ale->update &= ~ANIM_UPDATE_DEPS;
415 else if (
ELEM(ale->type,
422 ale->update &= ~ANIM_UPDATE_DEPS;
426 else if (
ELEM(ale->type,
432 ale->update &= ~ANIM_UPDATE_DEPS;
439 else if (ale->update) {
442 printf(
"%s: Unhandled animchannel updates (%d) for type=%d (%p)\n",
462 ale_next = ale->
next;
480 Set<bAction *> dna_actions;
490 if (!window_region) {
501 ListBase anim_data = {
nullptr,
nullptr};
505 if (!ale->adt || !ale->adt->action) {
508 dna_actions.add(ale->adt->action);
518 for (
bAction *dna_action : dna_actions) {
519 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(struct ListBase *lb)
void void BLI_freelistN(struct 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)
DO_INLINE void filter(lfVector *V, fmatrix3x3 *S)
void MEM_freeN(void *vmemh)
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)
Sequence * SEQ_get_sequence_by_name(ListBase *seqbase, const char *name, bool recursive)
Editing * SEQ_editing_get(const Scene *scene)
eAnim_Update_Flags update