22#include "RNA_prototypes.hh"
36 for (
Strip *strip : layer->strips()) {
37 if (strip->type() != Strip::Type::Keyframe) {
41 for (
FCurve *fcu : bag->fcurves()) {
60 for (
Strip *strip : layer->strips()) {
61 if (strip->type() != Strip::Type::Keyframe) {
65 if (bag->slot_handle != handle) {
68 for (
FCurve *fcu : bag->fcurves()) {
79 const ID &animated_id,
83 const auto forward_to_callback = [&](
ID & ,
87 if (!action_ptr_ref) {
90 return callback(
const_cast<const Action &
>(action_ptr_ref->wrap()), slot_handle_ref);
102 char *last_slot_identifier)> callback)
125 if (!looped_until_last_strip) {
135 const Object &
object =
reinterpret_cast<const Object &
>(animated_id);
143 auto visit_constraint = [&](
const bConstraint &constraint) ->
bool {
148 if (!constraint_data->
act) {
151 return callback(animated_id,
152 constraint_data->
act,
159 if (!visit_constraint(*con)) {
168 if (!visit_constraint(*con)) {
183 char *last_slot_identifier)> callback)
212 if (!looped_until_last_strip) {
222 const Object &
object =
reinterpret_cast<const Object &
>(animated_id);
230 auto visit_constraint = [&](
bConstraint &constraint) ->
bool {
235 if (!constraint_data->
act) {
248 if (!visit_constraint(*con)) {
257 if (!visit_constraint(*con)) {
Functions and classes to work with Actions.
Functionality to iterate an Action in various ways.
AnimData * BKE_animdata_from_id(const ID *id)
#define LISTBASE_FOREACH(type, var, list)
Object is a sort of wrapper for general info.
btSequentialImpulseConstraintSolverMt int btPersistentManifold int btTypedConstraint ** constraints
blender::Span< const Layer * > layers() const
bool is_action_legacy() const
bool is_action_layered() const
blender::Span< const Channelbag * > channelbags() const
void foreach_fcurve_in_action_slot(Action &action, slot_handle_t handle, FunctionRef< void(FCurve &fcurve)> callback)
void foreach_fcurve_in_action(Action &action, FunctionRef< void(FCurve &fcurve)> callback)
decltype(::ActionSlot::handle) slot_handle_t
bool foreach_action_slot_use_with_rna(ID &animated_id, FunctionRef< bool(ID &animated_id, bAction *action, PointerRNA &action_slot_owner_ptr, PropertyRNA &action_slot_prop, char *last_slot_identifier)> callback)
bool foreach_action_slot_use_with_references(ID &animated_id, FunctionRef< bool(ID &animated_id, bAction *&action_ptr_ref, slot_handle_t &slot_handle_ref, char *last_slot_identifier)> callback)
bool foreach_action_slot_use(const ID &animated_id, FunctionRef< bool(const Action &action, slot_handle_t slot_handle)> callback)
bool foreach_strip_adt(const AnimData &adt, blender::FunctionRef< bool(NlaStrip *)> callback)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
PointerRNA RNA_pointer_create_discrete(ID *id, StructRNA *type, void *data)
char last_slot_identifier[258]
char last_slot_identifier[258]
int32_t action_slot_handle
int32_t action_slot_handle
char last_slot_identifier[258]