Blender  V3.3
Macros | Functions | Variables
action.c File Reference
#include <math.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include "MEM_guardedalloc.h"
#include "DNA_anim_types.h"
#include "DNA_armature_types.h"
#include "DNA_constraint_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "BLI_blenlib.h"
#include "BLI_ghash.h"
#include "BLI_math.h"
#include "BLI_session_uuid.h"
#include "BLI_string_utils.h"
#include "BLI_utildefines.h"
#include "BLT_translation.h"
#include "BKE_action.h"
#include "BKE_anim_data.h"
#include "BKE_anim_visualization.h"
#include "BKE_animsys.h"
#include "BKE_armature.h"
#include "BKE_asset.h"
#include "BKE_constraint.h"
#include "BKE_deform.h"
#include "BKE_fcurve.h"
#include "BKE_icons.h"
#include "BKE_idprop.h"
#include "BKE_idtype.h"
#include "BKE_lib_id.h"
#include "BKE_lib_query.h"
#include "BKE_main.h"
#include "BKE_object.h"
#include "DEG_depsgraph.h"
#include "DEG_depsgraph_build.h"
#include "BIK_api.h"
#include "RNA_access.h"
#include "RNA_path.h"
#include "RNA_prototypes.h"
#include "BLO_read_write.h"
#include "CLG_log.h"

Go to the source code of this file.

Macros

#define DNA_DEPRECATED_ALLOW
 

Functions

static void action_copy_data (Main *UNUSED(bmain), ID *id_dst, const ID *id_src, const int flag)
 
static void action_free_data (struct ID *id)
 
static void action_foreach_id (ID *id, LibraryForeachIDData *data)
 
static void action_blend_write (BlendWriter *writer, ID *id, const void *id_address)
 
static void action_blend_read_data (BlendDataReader *reader, ID *id)
 
static void blend_read_lib_constraint_channels (BlendLibReader *reader, ID *id, ListBase *chanbase)
 
static void action_blend_read_lib (BlendLibReader *reader, ID *id)
 
static void blend_read_expand_constraint_channels (BlendExpander *expander, ListBase *chanbase)
 
static void action_blend_read_expand (BlendExpander *expander, ID *id)
 
static IDPropertyaction_asset_type_property (const bAction *action)
 
static void action_asset_pre_save (void *asset_ptr, struct AssetMetaData *asset_data)
 
bActionBKE_action_add (Main *bmain, const char name[])
 
bActionGroupget_active_actiongroup (bAction *act)
 
void set_active_action_group (bAction *act, bActionGroup *agrp, short select)
 
void action_group_colors_sync (bActionGroup *grp, const bActionGroup *ref_grp)
 
bActionGroupaction_groups_add_new (bAction *act, const char name[])
 
void action_groups_add_channel (bAction *act, bActionGroup *agrp, FCurve *fcurve)
 
void BKE_action_groups_reconstruct (bAction *act)
 
void action_groups_remove_channel (bAction *act, FCurve *fcu)
 
bActionGroupBKE_action_group_find_name (bAction *act, const char name[])
 
void action_groups_clear_tempflags (bAction *act)
 
void BKE_pose_channel_session_uuid_generate (bPoseChannel *pchan)
 
bPoseChannelBKE_pose_channel_find_name (const bPose *pose, const char *name)
 
bPoseChannelBKE_pose_channel_ensure (bPose *pose, const char *name)
 
bool BKE_pose_channels_is_valid (const bPose *pose)
 
bool BKE_pose_is_layer_visible (const bArmature *arm, const bPoseChannel *pchan)
 
bPoseChannelBKE_pose_channel_active (Object *ob, const bool check_arm_layer)
 
bPoseChannelBKE_pose_channel_active_if_layer_visible (struct Object *ob)
 
bPoseChannelBKE_pose_channel_active_or_first_selected (struct Object *ob)
 
bPoseChannelBKE_pose_channel_get_mirrored (const bPose *pose, const char *name)
 
const char * BKE_pose_ikparam_get_name (bPose *pose)
 
void BKE_pose_copy_data_ex (bPose **dst, const bPose *src, const int flag, const bool copy_constraints)
 
void BKE_pose_copy_data (bPose **dst, const bPose *src, const bool copy_constraints)
 
void BKE_pose_itasc_init (bItasc *itasc)
 
void BKE_pose_ikparam_init (bPose *pose)
 
static bool pose_channel_in_IK_chain (Object *ob, bPoseChannel *pchan, int level)
 
bool BKE_pose_channel_in_IK_chain (Object *ob, bPoseChannel *pchan)
 
void BKE_pose_channels_hash_ensure (bPose *pose)
 
void BKE_pose_channels_hash_free (bPose *pose)
 
static void pose_channels_remove_internal_links (Object *ob, bPoseChannel *unlinked_pchan)
 
void BKE_pose_channels_remove (Object *ob, bool(*filter_fn)(const char *bone_name, void *user_data), void *user_data)
 
void BKE_pose_channel_free_ex (bPoseChannel *pchan, bool do_id_user)
 
void BKE_pose_channel_runtime_reset (bPoseChannel_Runtime *runtime)
 
void BKE_pose_channel_runtime_reset_on_copy (bPoseChannel_Runtime *runtime)
 
void BKE_pose_channel_runtime_free (bPoseChannel_Runtime *runtime)
 
void BKE_pose_channel_free_bbone_cache (bPoseChannel_Runtime *runtime)
 
void BKE_pose_channel_free (bPoseChannel *pchan)
 
void BKE_pose_channels_free_ex (bPose *pose, bool do_id_user)
 
void BKE_pose_channels_free (bPose *pose)
 
void BKE_pose_free_data_ex (bPose *pose, bool do_id_user)
 
void BKE_pose_free_data (bPose *pose)
 
void BKE_pose_free_ex (bPose *pose, bool do_id_user)
 
void BKE_pose_free (bPose *pose)
 
void BKE_pose_channel_copy_data (bPoseChannel *pchan, const bPoseChannel *pchan_from)
 
void BKE_pose_update_constraint_flags (bPose *pose)
 
void BKE_pose_tag_update_constraint_flags (bPose *pose)
 
bActionGroupBKE_pose_add_group (bPose *pose, const char *name)
 
void BKE_pose_remove_group (bPose *pose, bActionGroup *grp, const int index)
 
void BKE_pose_remove_group_index (bPose *pose, const int index)
 
bool action_has_motion (const bAction *act)
 
bool BKE_action_has_single_frame (const struct bAction *act)
 
void calc_action_range (const bAction *act, float *start, float *end, short incl_modifiers)
 
void BKE_action_get_frame_range (const struct bAction *act, float *r_start, float *r_end)
 
bool BKE_action_is_cyclic (const struct bAction *act)
 
short action_get_item_transforms (bAction *act, Object *ob, bPoseChannel *pchan, ListBase *curves)
 
void BKE_pose_rest (bPose *pose, bool selected_bones_only)
 
void BKE_pose_copy_pchan_result (bPoseChannel *pchanto, const bPoseChannel *pchanfrom)
 
bool BKE_pose_copy_result (bPose *to, bPose *from)
 
void BKE_pose_tag_recalc (Main *bmain, bPose *pose)
 
void what_does_obaction (Object *ob, Object *workob, bPose *pose, bAction *act, char groupname[], const AnimationEvalContext *anim_eval_context)
 
void BKE_pose_check_uuids_unique_and_report (const bPose *pose)
 
void BKE_pose_blend_write (BlendWriter *writer, bPose *pose, bArmature *arm)
 
void BKE_pose_blend_read_data (BlendDataReader *reader, bPose *pose)
 
void BKE_pose_blend_read_lib (BlendLibReader *reader, Object *ob, bPose *pose)
 
void BKE_pose_blend_read_expand (BlendExpander *expander, bPose *pose)
 
void BKE_action_fcurves_clear (bAction *act)
 

Variables

static CLG_LogRef LOG = {"bke.action"}
 
static AssetTypeInfo AssetType_AC
 
IDTypeInfo IDType_ID_AC
 

Macro Definition Documentation

◆ DNA_DEPRECATED_ALLOW

#define DNA_DEPRECATED_ALLOW

Definition at line 16 of file action.c.

Function Documentation

◆ action_asset_pre_save()

static void action_asset_pre_save ( void asset_ptr,
struct AssetMetaData asset_data 
)
static

◆ action_asset_type_property()

static IDProperty* action_asset_type_property ( const bAction action)
static

Definition at line 276 of file action.c.

References BKE_action_has_single_frame(), IDPropertyTemplate::i, IDP_INT, and IDP_New().

Referenced by action_asset_pre_save().

◆ action_blend_read_data()

static void action_blend_read_data ( BlendDataReader reader,
ID id 
)
static

◆ action_blend_read_expand()

static void action_blend_read_expand ( BlendExpander expander,
ID id 
)
static

◆ action_blend_read_lib()

static void action_blend_read_lib ( BlendLibReader reader,
ID id 
)
static

◆ action_blend_write()

static void action_blend_write ( BlendWriter writer,
ID id,
const void id_address 
)
static

◆ action_copy_data()

static void action_copy_data ( Main UNUSEDbmain,
ID id_dst,
const ID id_src,
const int  flag 
)
static

Only copy internal data of Action ID from source to already allocated/initialized destination. You probably never want to use that directly, use BKE_id_copy or BKE_id_copy_ex for typical needs.

WARNING! This function will not handle ID user count!

Parameters
flagCopying options (see BKE_lib_id.h's LIB_ID_COPY_... flags for more).

Definition at line 92 of file action.c.

References BKE_fcurve_copy(), BKE_previewimg_id_copy(), BLI_addtail(), BLI_duplicatelist(), BLI_listbase_clear(), bActionGroup::channels, bAction::curves, ListBase::first, bAction::groups, FCurve::grp, bAction::id, ListBase::last, LIB_ID_COPY_NO_PREVIEW, bAction::markers, bActionGroup::next, FCurve::next, NULL, and bAction::preview.

◆ action_foreach_id()

static void action_foreach_id ( ID id,
LibraryForeachIDData data 
)
static

◆ action_free_data()

static void action_free_data ( struct ID id)
static

Free (or release) any data used by this action (does not free the action itself).

Definition at line 143 of file action.c.

References BKE_fcurves_free(), BKE_previewimg_free(), BLI_freelistN(), bAction::curves, bAction::groups, bAction::markers, and bAction::preview.

◆ action_get_item_transforms()

short action_get_item_transforms ( struct bAction act,
struct Object ob,
struct bPoseChannel pchan,
ListBase curves 
)

Return flags indicating which transforms the given object/posechannel has

  • if 'curves' is provided, a list of links to these curves are also returned whose nodes WILL NEED FREEING.

Definition at line 1501 of file action.c.

References ACT_TRANS_ALL, ACT_TRANS_BBONE, ACT_TRANS_LOC, ACT_TRANS_PROP, ACT_TRANS_ROT, ACT_TRANS_SCALE, BLI_addtail(), BLI_genericNodeN(), bAction::curves, curves, ListBase::first, MEM_freeN, FCurve::next, NULL, ptr, RNA_id_pointer_create(), FCurve::rna_path, RNA_path_from_ID_to_struct(), and RNA_pointer_create().

Referenced by fcurves_to_pchan_links_get().

◆ action_group_colors_sync()

void action_group_colors_sync ( bActionGroup grp,
const bActionGroup ref_grp 
)

◆ action_groups_add_channel()

void action_groups_add_channel ( struct bAction act,
struct bActionGroup agrp,
struct FCurve fcurve 
)

◆ action_groups_add_new()

bActionGroup* action_groups_add_new ( struct bAction act,
const char  name[] 
)

◆ action_groups_clear_tempflags()

void action_groups_clear_tempflags ( struct bAction act)

Clear all 'temp' flags on all groups.

Definition at line 593 of file action.c.

References AGRP_TEMP, ELEM, ListBase::first, bActionGroup::flag, bAction::groups, bActionGroup::next, and NULL.

Referenced by action_move_fcurves_by_basepath().

◆ action_groups_remove_channel()

void action_groups_remove_channel ( struct bAction act,
struct FCurve fcu 
)

◆ action_has_motion()

bool action_has_motion ( const bAction act)

Definition at line 1335 of file action.c.

References bAction::curves, ListBase::first, FCurve::next, and FCurve::totvert.

◆ BKE_action_add()

bAction* BKE_action_add ( Main bmain,
const char  name[] 
)

◆ BKE_action_fcurves_clear()

void BKE_action_fcurves_clear ( struct bAction act)

◆ BKE_action_get_frame_range()

void BKE_action_get_frame_range ( const struct bAction act,
float r_start,
float r_end 
)

◆ BKE_action_group_find_name()

bActionGroup* BKE_action_group_find_name ( struct bAction act,
const char  name[] 
)

◆ BKE_action_groups_reconstruct()

void BKE_action_groups_reconstruct ( struct bAction act)

Reconstruct group channel pointers. Assumes that the groups referred to by the FCurves are already in act->groups. Reorders the main channel list to match group order.

Definition at line 503 of file action.c.

References BLI_addtail(), BLI_assert, BLI_findindex(), BLI_listbase_clear(), BLI_movelisttolist(), bAction::curves, ELEM, ListBase::first, bAction::groups, LISTBASE_FOREACH, LISTBASE_FOREACH_MUTABLE, and NULL.

Referenced by blo_do_versions_300(), curve_rename_fcurves(), and blender::bke::tests::TEST().

◆ BKE_action_has_single_frame()

bool BKE_action_has_single_frame ( const struct bAction act)

Return whether the action has one unique point in time keyed.

This is mostly for the pose library, which will have different behavior depending on whether an Action corresponds to a "pose" (one keyframe) or "animation snippet" (multiple keyframes).

Returns
false when there is no keyframe at all or keys on different points in time, true when exactly one point in time is keyed.

Definition at line 1352 of file action.c.

References BLI_listbase_is_empty(), compare_ff(), bAction::curves, LISTBASE_FOREACH, and NULL.

Referenced by action_asset_type_property(), and blender::bke::tests::TEST().

◆ BKE_action_is_cyclic()

bool BKE_action_is_cyclic ( const struct bAction act)

Is the action configured as cyclic.

Definition at line 1496 of file action.c.

References ACT_CYCLIC, ACT_FRAME_RANGE, and bAction::flag.

Referenced by BKE_nlastrip_new(), and insert_keyframe_fcurve_value().

◆ BKE_pose_add_group()

bActionGroup* BKE_pose_add_group ( struct bPose pose,
const char *  name 
)

Adds a new bone-group (name may be NULL).

Definition at line 1266 of file action.c.

References bPose::active_group, bPose::agroups, BLI_addtail(), BLI_listbase_count(), BLI_strncpy(), BLI_uniquename(), DATA_, MEM_callocN, and bActionGroup::name.

Referenced by pose_group_add_exec(), and pose_group_assign_exec().

◆ BKE_pose_blend_read_data()

void BKE_pose_blend_read_data ( BlendDataReader reader,
bPose pose 
)

◆ BKE_pose_blend_read_expand()

void BKE_pose_blend_read_expand ( BlendExpander expander,
bPose pose 
)

◆ BKE_pose_blend_read_lib()

void BKE_pose_blend_read_lib ( BlendLibReader reader,
Object ob,
bPose pose 
)

◆ BKE_pose_blend_write()

void BKE_pose_blend_write ( BlendWriter writer,
bPose pose,
bArmature arm 
)

◆ BKE_pose_channel_active()

bPoseChannel* BKE_pose_channel_active ( struct Object ob,
bool  check_arm_layer 
)

Find the active pose-channel for an object

Parameters
check_arm_layerchecks if the bone is on a visible armature layer (this might be skipped (e.g. for "Show Active" from the Outliner).
Returns
bPoseChannel if found or NULL.
Note
Object, not bPose is used here, as we need info (layer/active bone) from Armature.

Definition at line 699 of file action.c.

References bArmature::act_bone, BKE_pose_is_layer_visible(), bPose::chanbase, Object::data, ELEM, ListBase::first, if(), NULL, and Object::pose.

Referenced by BKE_pose_channel_active_if_layer_visible(), and outliner_show_active_get_element().

◆ BKE_pose_channel_active_if_layer_visible()

bPoseChannel* BKE_pose_channel_active_if_layer_visible ( struct Object ob)

◆ BKE_pose_channel_active_or_first_selected()

bPoseChannel* BKE_pose_channel_active_or_first_selected ( struct Object ob)

Use this when detecting the "other selected bone", when we have multiple armatures in pose mode.

In this case the active-selected is an obvious choice when finding the target for a constraint for eg. however from the users perspective the active pose bone of the active object is the real active bone, so any other non-active selected bone is a candidate for being the other selected bone, see: T58447.

Definition at line 725 of file action.c.

References BKE_pose_channel_active_if_layer_visible(), bPoseChannel::bone, BONE_SELECTED, bPose::chanbase, Object::data, ELEM, ListBase::first, Bone::flag, if(), bPoseChannel::next, NULL, PBONE_VISIBLE, and Object::pose.

Referenced by get_new_constraint_target().

◆ BKE_pose_channel_copy_data()

void BKE_pose_channel_copy_data ( bPoseChannel pchan,
const bPoseChannel pchan_from 
)

◆ BKE_pose_channel_ensure()

bPoseChannel* BKE_pose_channel_ensure ( struct bPose pose,
const char *  name 
)

◆ BKE_pose_channel_find_name()

bPoseChannel* BKE_pose_channel_find_name ( const bPose pose,
const char *  name 
)

◆ BKE_pose_channel_free()

void BKE_pose_channel_free ( bPoseChannel pchan)

◆ BKE_pose_channel_free_bbone_cache()

void BKE_pose_channel_free_bbone_cache ( struct bPoseChannel_Runtime runtime)

◆ BKE_pose_channel_free_ex()

void BKE_pose_channel_free_ex ( struct bPoseChannel pchan,
bool  do_id_user 
)

◆ BKE_pose_channel_get_mirrored()

bPoseChannel* BKE_pose_channel_get_mirrored ( const bPose pose,
const char *  name 
)

◆ BKE_pose_channel_in_IK_chain()

bool BKE_pose_channel_in_IK_chain ( struct Object ob,
struct bPoseChannel pchan 
)

Checks if a bone is part of an IK chain or not.

Definition at line 920 of file action.c.

References pose_channel_in_IK_chain().

◆ BKE_pose_channel_runtime_free()

void BKE_pose_channel_runtime_free ( struct bPoseChannel_Runtime runtime)

Deallocates runtime cache of a pose channel

Definition at line 1064 of file action.c.

References BKE_pose_channel_free_bbone_cache().

Referenced by BKE_pose_channel_free_ex(), and blender::deg::ObjectRuntimeBackup::restore_pose_channel_runtime_data().

◆ BKE_pose_channel_runtime_reset()

void BKE_pose_channel_runtime_reset ( struct bPoseChannel_Runtime runtime)

Clears the runtime cache of a pose channel without free.

Definition at line 1052 of file action.c.

Referenced by blender::deg::ObjectRuntimeBackup::backup_pose_channel_runtime_data(), and BKE_pose_blend_read_data().

◆ BKE_pose_channel_runtime_reset_on_copy()

void BKE_pose_channel_runtime_reset_on_copy ( struct bPoseChannel_Runtime runtime)

Reset all non-persistent fields.

Definition at line 1057 of file action.c.

References bPoseChannel_Runtime::session_uuid.

Referenced by BKE_pose_copy_data_ex().

◆ BKE_pose_channel_session_uuid_generate()

void BKE_pose_channel_session_uuid_generate ( bPoseChannel pchan)

◆ BKE_pose_channels_free()

void BKE_pose_channels_free ( bPose pose)

Definition at line 1100 of file action.c.

References BKE_pose_channels_free_ex().

◆ BKE_pose_channels_free_ex()

void BKE_pose_channels_free_ex ( struct bPose pose,
bool  do_id_user 
)

Removes and deallocates all channels from a pose. Does not free the pose itself.

Definition at line 1083 of file action.c.

References BKE_pose_channel_free_ex(), BKE_pose_channels_hash_free(), BLI_freelistN(), bPose::chan_array, bPose::chanbase, ListBase::first, MEM_SAFE_FREE, and bPoseChannel::next.

Referenced by BKE_pose_channels_free(), and BKE_pose_free_data_ex().

◆ BKE_pose_channels_hash_ensure()

void BKE_pose_channels_hash_ensure ( struct bPose pose)

◆ BKE_pose_channels_hash_free()

void BKE_pose_channels_hash_free ( bPose pose)

◆ BKE_pose_channels_is_valid()

bool BKE_pose_channels_is_valid ( const bPose pose)

◆ BKE_pose_channels_remove()

void BKE_pose_channels_remove ( struct Object ob,
bool(*)(const char *bone_name, void *user_data filter_fn,
void user_data 
)

◆ BKE_pose_check_uuids_unique_and_report()

void BKE_pose_check_uuids_unique_and_report ( const bPose pose)

◆ BKE_pose_copy_data()

void BKE_pose_copy_data ( bPose **  dst,
const bPose src,
const bool  copy_constraints 
)

Definition at line 855 of file action.c.

References BKE_pose_copy_data_ex(), and src.

◆ BKE_pose_copy_data_ex()

void BKE_pose_copy_data_ex ( bPose **  dst,
const bPose src,
const int  flag,
const bool  copy_constraints 
)

◆ BKE_pose_copy_pchan_result()

void BKE_pose_copy_pchan_result ( bPoseChannel pchanto,
const bPoseChannel pchanfrom 
)

◆ BKE_pose_copy_result()

bool BKE_pose_copy_result ( struct bPose to,
struct bPose from 
)

Both poses should be in sync.

Definition at line 1695 of file action.c.

References BKE_pose_channel_find_name(), BKE_pose_copy_pchan_result(), CLOG_ERROR, from, LOG, bPoseChannel::name, bPoseChannel::next, and NULL.

◆ BKE_pose_free()

void BKE_pose_free ( bPose pose)

Definition at line 1138 of file action.c.

References BKE_pose_free_ex().

Referenced by object_blend_read_lib().

◆ BKE_pose_free_data()

void BKE_pose_free_data ( bPose pose)

Definition at line 1124 of file action.c.

References BKE_pose_free_data_ex().

Referenced by actcon_get_tarmat().

◆ BKE_pose_free_data_ex()

void BKE_pose_free_data_ex ( bPose pose,
bool  do_id_user 
)

◆ BKE_pose_free_ex()

void BKE_pose_free_ex ( struct bPose pose,
bool  do_id_user 
)

Removes and deallocates all data from a pose, and also frees the pose.

Definition at line 1129 of file action.c.

References BKE_pose_free_data_ex(), and MEM_freeN.

Referenced by BKE_pose_free(), and object_free_data().

◆ BKE_pose_ikparam_get_name()

const char* BKE_pose_ikparam_get_name ( struct bPose pose)

Return the name of structure pointed by pose->ikparam.

Definition at line 761 of file action.c.

References bPose::iksolver, IKSOLVER_ITASC, IKSOLVER_STANDARD, and NULL.

Referenced by BKE_pose_blend_write().

◆ BKE_pose_ikparam_init()

void BKE_pose_ikparam_init ( struct bPose pose)

Allocate and initialize pose->ikparam according to pose->iksolver.

Definition at line 877 of file action.c.

References BKE_pose_itasc_init(), bPose::ikparam, bPose::iksolver, IKSOLVER_ITASC, IKSOLVER_STANDARD, MEM_callocN, and NULL.

◆ BKE_pose_is_layer_visible()

bool BKE_pose_is_layer_visible ( const bArmature arm,
const bPoseChannel pchan 
)

Definition at line 694 of file action.c.

References bPoseChannel::bone, Bone::layer, and bArmature::layer.

Referenced by BKE_pose_channel_active().

◆ BKE_pose_itasc_init()

void BKE_pose_itasc_init ( struct bItasc itasc)

◆ BKE_pose_remove_group()

void BKE_pose_remove_group ( struct bPose pose,
struct bActionGroup grp,
int  index 
)

Remove the given bone-group (expects 'virtual' index (+1 one, used by active_group etc.)) index might be invalid ( < 1), in which case it will be find from grp.

Definition at line 1284 of file action.c.

References bPose::active_group, bPose::agroups, bPoseChannel::agrp_index, BLI_assert, BLI_findindex(), BLI_freelinkN(), BLI_listbase_is_empty(), bPose::chanbase, ListBase::first, and bPoseChannel::next.

Referenced by BKE_pose_remove_group_index().

◆ BKE_pose_remove_group_index()

void BKE_pose_remove_group_index ( struct bPose pose,
int  index 
)

Remove the indexed bone-group (expects 'virtual' index (+1 one, used by active_group etc.)).

Definition at line 1322 of file action.c.

References bPose::agroups, BKE_pose_remove_group(), BLI_findlink(), and NULL.

Referenced by pose_group_remove_exec().

◆ BKE_pose_rest()

void BKE_pose_rest ( struct bPose pose,
bool  selected_bones_only 
)

◆ BKE_pose_tag_recalc()

void BKE_pose_tag_recalc ( struct Main bmain,
struct bPose pose 
)

◆ BKE_pose_tag_update_constraint_flags()

void BKE_pose_tag_update_constraint_flags ( struct bPose pose)

Tag constraint flags for update.

Definition at line 1259 of file action.c.

References bPose::flag, and POSE_CONSTRAINTS_NEED_UPDATE_FLAGS.

Referenced by ED_object_constraint_tag_update().

◆ BKE_pose_update_constraint_flags()

void BKE_pose_update_constraint_flags ( struct bPose pose)

◆ blend_read_expand_constraint_channels()

static void blend_read_expand_constraint_channels ( BlendExpander expander,
ListBase chanbase 
)
static

Definition at line 248 of file action.c.

References BLO_expand, and LISTBASE_FOREACH.

Referenced by action_blend_read_expand().

◆ blend_read_lib_constraint_channels()

static void blend_read_lib_constraint_channels ( BlendLibReader reader,
ID id,
ListBase chanbase 
)
static

Definition at line 221 of file action.c.

References BLO_read_id_address, id, ID::lib, and LISTBASE_FOREACH.

Referenced by action_blend_read_lib().

◆ calc_action_range()

void calc_action_range ( const bAction act,
float start,
float end,
short  incl_modifiers 
)

◆ get_active_actiongroup()

bActionGroup* get_active_actiongroup ( struct bAction act)

Get the active action-group for an Action.

Definition at line 345 of file action.c.

References AGRP_ACTIVE, ListBase::first, bActionGroup::flag, bAction::groups, bActionGroup::next, and NULL.

◆ pose_channel_in_IK_chain()

static bool pose_channel_in_IK_chain ( Object ob,
bPoseChannel pchan,
int  level 
)
static

◆ pose_channels_remove_internal_links()

static void pose_channels_remove_internal_links ( Object ob,
bPoseChannel unlinked_pchan 
)
static

Definition at line 945 of file action.c.

References bPose::chanbase, LISTBASE_FOREACH, NULL, and Object::pose.

Referenced by BKE_pose_channels_remove().

◆ set_active_action_group()

void set_active_action_group ( struct bAction act,
struct bActionGroup agrp,
short  select 
)

Make the given Action-Group the active one.

Definition at line 360 of file action.c.

References AGRP_ACTIVE, ListBase::first, bActionGroup::flag, bAction::groups, bActionGroup::next, NULL, and select().

◆ what_does_obaction()

void what_does_obaction ( Object ob,
Object workob,
bPose pose,
bAction act,
char  groupname[],
const AnimationEvalContext anim_eval_context 
)

Variable Documentation

◆ AssetType_AC

AssetTypeInfo AssetType_AC
static
Initial value:
= {
}
static void action_asset_pre_save(void *asset_ptr, struct AssetMetaData *asset_data)
Definition: action.c:287

Definition at line 296 of file action.c.

◆ IDType_ID_AC

IDTypeInfo IDType_ID_AC
Initial value:
= {
.id_code = ID_AC,
.id_filter = FILTER_ID_AC,
.main_listbase_index = INDEX_ID_AC,
.struct_size = sizeof(bAction),
.name = "Action",
.name_plural = "actions",
.translation_context = BLT_I18NCONTEXT_ID_ACTION,
.asset_type_info = &AssetType_AC,
.copy_data = action_copy_data,
.free_data = action_free_data,
.make_local = NULL,
.foreach_id = action_foreach_id,
.foreach_cache = NULL,
.foreach_path = NULL,
.owner_get = NULL,
.blend_write = action_blend_write,
.blend_read_data = action_blend_read_data,
.blend_read_lib = action_blend_read_lib,
.blend_read_expand = action_blend_read_expand,
.blend_read_undo_preserve = NULL,
.lib_override_apply_post = NULL,
}
@ IDTYPE_FLAGS_NO_ANIMDATA
Definition: BKE_idtype.h:41
#define BLT_I18NCONTEXT_ID_ACTION
#define FILTER_ID_AC
Definition: DNA_ID.h:899
@ INDEX_ID_AC
Definition: DNA_ID.h:984
@ ID_AC
Definition: DNA_ID_enums.h:67
struct bAction bAction
static void init_data(ModifierData *md)
static AssetTypeInfo AssetType_AC
Definition: action.c:296
static void action_blend_read_expand(BlendExpander *expander, ID *id)
Definition: action.c:255
static void action_blend_write(BlendWriter *writer, ID *id, const void *id_address)
Definition: action.c:173
static void action_copy_data(Main *UNUSED(bmain), ID *id_dst, const ID *id_src, const int flag)
Definition: action.c:92
static void action_blend_read_data(BlendDataReader *reader, ID *id)
Definition: action.c:193
static void action_foreach_id(ID *id, LibraryForeachIDData *data)
Definition: action.c:160
static void action_blend_read_lib(BlendLibReader *reader, ID *id)
Definition: action.c:228
static void action_free_data(struct ID *id)
Definition: action.c:143

Definition at line 300 of file action.c.

◆ LOG

CLG_LogRef LOG = {"bke.action"}
static

Definition at line 63 of file action.c.

Referenced by BKE_pose_copy_result().