Blender V4.3
keyingsets.cc File Reference
#include <cfloat>
#include <cmath>
#include <cstddef>
#include <cstdio>
#include <cstring>
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_utildefines.h"
#include "DNA_anim_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "BKE_animsys.h"
#include "BKE_context.hh"
#include "BKE_main.hh"
#include "BKE_report.hh"
#include "DEG_depsgraph.hh"
#include "ANIM_keyframing.hh"
#include "ANIM_keyingsets.hh"
#include "ED_keyframing.hh"
#include "ED_screen.hh"
#include "UI_interface.hh"
#include "UI_resources.hh"
#include "WM_api.hh"
#include "WM_types.hh"
#include "RNA_access.hh"
#include "RNA_define.hh"
#include "RNA_enum_types.hh"
#include "RNA_path.hh"
#include "anim_intern.hh"

Go to the source code of this file.

Macros

#define APPLY_KEYINGFLAG_OVERRIDE(kflag)

Functions

static bool keyingset_poll_default_add (bContext *C)
static bool keyingset_poll_active_edit (bContext *C)
static bool keyingset_poll_activePath_edit (bContext *C)
static int add_default_keyingset_exec (bContext *C, wmOperator *)
void ANIM_OT_keying_set_add (wmOperatorType *ot)
static int remove_active_keyingset_exec (bContext *C, wmOperator *op)
void ANIM_OT_keying_set_remove (wmOperatorType *ot)
static int add_empty_ks_path_exec (bContext *C, wmOperator *op)
void ANIM_OT_keying_set_path_add (wmOperatorType *ot)
static int remove_active_ks_path_exec (bContext *C, wmOperator *op)
void ANIM_OT_keying_set_path_remove (wmOperatorType *ot)
static int add_keyingset_button_exec (bContext *C, wmOperator *op)
void ANIM_OT_keyingset_button_add (wmOperatorType *ot)
static int remove_keyingset_button_exec (bContext *C, wmOperator *op)
void ANIM_OT_keyingset_button_remove (wmOperatorType *ot)
static int keyingset_active_menu_invoke (bContext *C, wmOperator *op, const wmEvent *)
static int keyingset_active_menu_exec (bContext *C, wmOperator *op)
static void build_keyingset_enum (bContext *C, EnumPropertyItem **item, int *totitem, bool *r_free)
static const EnumPropertyItemkeyingset_set_active_enum_itemf (bContext *C, PointerRNA *, PropertyRNA *, bool *r_free)
void ANIM_OT_keying_set_active_set (wmOperatorType *ot)
KeyingSetInfoANIM_keyingset_info_find_name (const char name[])
KeyingSetANIM_builtin_keyingset_get_named (const char name[])
void ANIM_keyingset_info_register (KeyingSetInfo *keyingset_info)
void ANIM_keyingset_info_unregister (Main *bmain, KeyingSetInfo *keyingset_info)
void ANIM_keyingset_infos_exit ()
bool ANIM_keyingset_find_id (KeyingSet *keyingset, ID *id)
KeyingSetANIM_scene_get_active_keyingset (const Scene *scene)
int ANIM_scene_get_keyingset_index (Scene *scene, KeyingSet *keyingset)
KeyingSetANIM_get_keyingset_for_autokeying (const Scene *scene, const char *transformKSName)
static void anim_keyingset_visit_for_search_impl (const bContext *C, blender::FunctionRef< void(StringPropertySearchVisitParams)> visit_fn, const bool use_poll)
void ANIM_keyingset_visit_for_search (const bContext *C, PointerRNA *, PropertyRNA *, const char *, blender::FunctionRef< void(StringPropertySearchVisitParams)> visit_fn)
void ANIM_keyingset_visit_for_search_no_poll (const bContext *C, PointerRNA *, PropertyRNA *, const char *, blender::FunctionRef< void(StringPropertySearchVisitParams)> visit_fn)
const EnumPropertyItemANIM_keying_sets_enum_itemf (bContext *C, PointerRNA *, PropertyRNA *, bool *r_free)
KeyingSetANIM_keyingset_get_from_enum_type (Scene *scene, int type)
KeyingSetANIM_keyingset_get_from_idname (Scene *scene, const char *idname)
bool ANIM_keyingset_context_ok_poll (bContext *C, KeyingSet *keyingset)
static void RKS_ITER_overrides_list (KeyingSetInfo *keyingset_info, bContext *C, KeyingSet *keyingset, blender::Vector< PointerRNA > &sources)
void ANIM_relative_keyingset_add_source (blender::Vector< PointerRNA > &sources, ID *id, StructRNA *srna, void *data)
void ANIM_relative_keyingset_add_source (blender::Vector< PointerRNA > &sources, ID *id)
blender::animrig::ModifyKeyReturn ANIM_validate_keyingset (bContext *C, blender::Vector< PointerRNA > *sources, KeyingSet *keyingset)
static eInsertKeyFlags keyingset_apply_keying_flags (const eInsertKeyFlags base_flags, const eInsertKeyFlags overrides, const eInsertKeyFlags own_flags)
static int insert_key_to_keying_set_path (bContext *C, KS_Path *keyingset_path, KeyingSet *keyingset, const eInsertKeyFlags insert_key_flags, const blender::animrig::ModifyKeyMode mode, const float frame)
int ANIM_apply_keyingset (bContext *C, blender::Vector< PointerRNA > *sources, KeyingSet *keyingset, const blender::animrig::ModifyKeyMode mode, const float cfra)

Variables

static ListBase keyingset_type_infos = {nullptr, nullptr}
ListBase builtin_keyingsets = {nullptr, nullptr}

Macro Definition Documentation

◆ APPLY_KEYINGFLAG_OVERRIDE

#define APPLY_KEYINGFLAG_OVERRIDE ( kflag)
Value:
if (overrides & kflag) { \
result &= ~kflag; \
result |= (own_flags & kflag); \
}

Referenced by keyingset_apply_keying_flags().

Function Documentation

◆ add_default_keyingset_exec()

◆ add_empty_ks_path_exec()

◆ add_keyingset_button_exec()

◆ ANIM_apply_keyingset()

int ANIM_apply_keyingset ( bContext * C,
blender::Vector< PointerRNA > * sources,
KeyingSet * keyingset,
blender::animrig::ModifyKeyMode mode,
float cfra )

◆ ANIM_builtin_keyingset_get_named()

KeyingSet * ANIM_builtin_keyingset_get_named ( const char name[])

Find builtin KeyingSet by name.

Returns
The first builtin KeyingSet with the given name

Definition at line 581 of file keyingsets.cc.

References builtin_keyingsets, LISTBASE_FOREACH, printf, and STREQ.

Referenced by ANIM_get_keyingset_for_autokeying().

◆ ANIM_get_keyingset_for_autokeying()

◆ ANIM_keying_sets_enum_itemf()

const EnumPropertyItem * ANIM_keying_sets_enum_itemf ( bContext * C,
PointerRNA * ptr,
PropertyRNA * prop,
bool * r_free )

◆ ANIM_keyingset_context_ok_poll()

bool ANIM_keyingset_context_ok_poll ( bContext * C,
KeyingSet * keyingset )

Check if KeyingSet can be used in the current context.

Definition at line 877 of file keyingsets.cc.

References ANIM_keyingset_info_find_name(), C, KeyingSet::flag, KEYINGSET_ABSOLUTE, KeyingSetInfo::poll, and KeyingSet::typeinfo.

Referenced by anim_keyingset_visit_for_search_impl(), and build_keyingset_enum().

◆ ANIM_keyingset_find_id()

bool ANIM_keyingset_find_id ( KeyingSet * keyingset,
ID * id )

Check if the ID appears in the paths specified by the KeyingSet.

Definition at line 666 of file keyingsets.cc.

References BLI_findptr(), ELEM, offsetof, and KeyingSet::paths.

Referenced by insert_key_with_keyingset().

◆ ANIM_keyingset_get_from_enum_type()

KeyingSet * ANIM_keyingset_get_from_enum_type ( Scene * scene,
int type )

Get the keying set from enum values generated in ANIM_keying_sets_enum_itemf.

Type is the Keying Set the user specified to use when calling the operator:

Parameters
type
  • == 0: use scene's active Keying Set.
  • > 0: use a user-defined Keying Set from the active scene.
  • < 0: use a builtin Keying Set.

Definition at line 846 of file keyingsets.cc.

References Scene::active_keyingset, BLI_findlink(), builtin_keyingsets, and Scene::keyingsets.

Referenced by insert_key_exec(), and keyingset_get_from_op_with_error().

◆ ANIM_keyingset_get_from_idname()

KeyingSet * ANIM_keyingset_get_from_idname ( Scene * scene,
const char * idname )

◆ ANIM_keyingset_info_find_name()

KeyingSetInfo * ANIM_keyingset_info_find_name ( const char name[])

Find KeyingSet type info given a name.

Definition at line 570 of file keyingsets.cc.

References BLI_findstring(), keyingset_type_infos, and offsetof.

Referenced by ANIM_keyingset_context_ok_poll(), and ANIM_validate_keyingset().

◆ ANIM_keyingset_info_register()

void ANIM_keyingset_info_register ( KeyingSetInfo * keyingset_info)

◆ ANIM_keyingset_info_unregister()

void ANIM_keyingset_info_unregister ( Main * bmain,
KeyingSetInfo * keyingset_info )

◆ ANIM_keyingset_infos_exit()

void ANIM_keyingset_infos_exit ( )

◆ ANIM_keyingset_visit_for_search()

void ANIM_keyingset_visit_for_search ( const bContext * C,
PointerRNA * ptr,
PropertyRNA * prop,
const char * edit_text,
blender::FunctionRef< void(StringPropertySearchVisitParams)> visit_fn )

Definition at line 794 of file keyingsets.cc.

References anim_keyingset_visit_for_search_impl(), and C.

◆ anim_keyingset_visit_for_search_impl()

◆ ANIM_keyingset_visit_for_search_no_poll()

void ANIM_keyingset_visit_for_search_no_poll ( const bContext * C,
PointerRNA * ptr,
PropertyRNA * prop,
const char * edit_text,
blender::FunctionRef< void(StringPropertySearchVisitParams)> visit_fn )

◆ ANIM_OT_keying_set_active_set()

◆ ANIM_OT_keying_set_add()

void ANIM_OT_keying_set_add ( wmOperatorType * ot)

Definition at line 118 of file keyingsets.cc.

References add_default_keyingset_exec(), keyingset_poll_default_add(), and ot.

Referenced by ED_operatortypes_anim().

◆ ANIM_OT_keying_set_path_add()

void ANIM_OT_keying_set_path_add ( wmOperatorType * ot)

Definition at line 208 of file keyingsets.cc.

References add_empty_ks_path_exec(), keyingset_poll_active_edit(), and ot.

Referenced by ED_operatortypes_anim().

◆ ANIM_OT_keying_set_path_remove()

void ANIM_OT_keying_set_path_remove ( wmOperatorType * ot)

Definition at line 250 of file keyingsets.cc.

References keyingset_poll_activePath_edit(), ot, and remove_active_ks_path_exec().

Referenced by ED_operatortypes_anim().

◆ ANIM_OT_keying_set_remove()

void ANIM_OT_keying_set_remove ( wmOperatorType * ot)

Definition at line 165 of file keyingsets.cc.

References keyingset_poll_active_edit(), ot, and remove_active_keyingset_exec().

Referenced by ED_operatortypes_anim().

◆ ANIM_OT_keyingset_button_add()

void ANIM_OT_keyingset_button_add ( wmOperatorType * ot)

◆ ANIM_OT_keyingset_button_remove()

void ANIM_OT_keyingset_button_remove ( wmOperatorType * ot)

Definition at line 413 of file keyingsets.cc.

References OPTYPE_REGISTER, OPTYPE_UNDO, ot, and remove_keyingset_button_exec().

Referenced by ED_operatortypes_anim().

◆ ANIM_relative_keyingset_add_source() [1/2]

void ANIM_relative_keyingset_add_source ( blender::Vector< PointerRNA > & sources,
ID * id )

◆ ANIM_relative_keyingset_add_source() [2/2]

◆ ANIM_scene_get_active_keyingset()

◆ ANIM_scene_get_keyingset_index()

int ANIM_scene_get_keyingset_index ( Scene * scene,
KeyingSet * keyingset )

Get the index of the Keying Set provided, for the given Scene.

Definition at line 699 of file keyingsets.cc.

References BLI_findindex(), builtin_keyingsets, and Scene::keyingsets.

◆ ANIM_validate_keyingset()

blender::animrig::ModifyKeyReturn ANIM_validate_keyingset ( bContext * C,
blender::Vector< PointerRNA > * sources,
KeyingSet * keyingset )

Given a KeyingSet and context info, validate Keying Set's paths. This is only really necessary with relative/built-in KeyingSets where their list of paths is dynamically generated based on the current context info.

Note
Passing sources as pointer because it can be a nullptr.
Returns
0 if succeeded, otherwise an error code: #eModifyKey_Returns.

Definition at line 933 of file keyingsets.cc.

References ANIM_keyingset_info_find_name(), BKE_keyingset_free_paths(), BLI_listbase_is_empty(), C, KeyingSet::flag, blender::animrig::INVALID_CONTEXT, KeyingSetInfo::iter, KEYINGSET_ABSOLUTE, blender::animrig::MISSING_TYPEINFO, KeyingSet::paths, KeyingSetInfo::poll, RKS_ITER_overrides_list(), blender::animrig::SUCCESS, and KeyingSet::typeinfo.

Referenced by ANIM_apply_keyingset(), pose_select_same_keyingset(), and blender::ed::object::select_grouped_keyingset().

◆ build_keyingset_enum()

◆ insert_key_to_keying_set_path()

◆ keyingset_active_menu_exec()

int keyingset_active_menu_exec ( bContext * C,
wmOperator * op )
static

◆ keyingset_active_menu_invoke()

int keyingset_active_menu_invoke ( bContext * C,
wmOperator * op,
const wmEvent *  )
static

◆ keyingset_apply_keying_flags()

eInsertKeyFlags keyingset_apply_keying_flags ( const eInsertKeyFlags base_flags,
const eInsertKeyFlags overrides,
const eInsertKeyFlags own_flags )
static

◆ keyingset_poll_active_edit()

bool keyingset_poll_active_edit ( bContext * C)
static

◆ keyingset_poll_activePath_edit()

bool keyingset_poll_activePath_edit ( bContext * C)
static

◆ keyingset_poll_default_add()

bool keyingset_poll_default_add ( bContext * C)
static

Definition at line 57 of file keyingsets.cc.

References C, and CTX_data_scene().

Referenced by ANIM_OT_keying_set_add().

◆ keyingset_set_active_enum_itemf()

const EnumPropertyItem * keyingset_set_active_enum_itemf ( bContext * C,
PointerRNA * ,
PropertyRNA * ,
bool * r_free )
static

◆ remove_active_keyingset_exec()

◆ remove_active_ks_path_exec()

◆ remove_keyingset_button_exec()

◆ RKS_ITER_overrides_list()

void RKS_ITER_overrides_list ( KeyingSetInfo * keyingset_info,
bContext * C,
KeyingSet * keyingset,
blender::Vector< PointerRNA > & sources )
static

Definition at line 901 of file keyingsets.cc.

References C, KeyingSetInfo::generate, and ptr.

Referenced by ANIM_validate_keyingset().

Variable Documentation

◆ builtin_keyingsets

◆ keyingset_type_infos

ListBase keyingset_type_infos = {nullptr, nullptr}
static