Most operations where strips are duplicated use `SEQ_animation` API, which handles keyframe animation. Now drivers are handled as well. When group of strips is duplicated and driver references other strip, it will still reference original strip. However, this is much better, than previous behavior, when strip duplication results in "transfer" of driver from original strip to duplicated one. Fixes T104141
47 lines
1.3 KiB
C++
47 lines
1.3 KiB
C++
/* SPDX-License-Identifier: GPL-2.0-or-later
|
|
* Copyright 2022 Blender Foundation. All rights reserved. */
|
|
|
|
#pragma once
|
|
|
|
/** \file
|
|
* \ingroup sequencer
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
struct GSet;
|
|
struct ListBase;
|
|
struct Scene;
|
|
struct Sequence;
|
|
struct SeqAnimationBackup;
|
|
|
|
bool SEQ_animation_curves_exist(struct Scene *scene);
|
|
bool SEQ_animation_drivers_exist(struct Scene *scene);
|
|
void SEQ_free_animdata(struct Scene *scene, struct Sequence *seq);
|
|
void SEQ_offset_animdata(struct Scene *scene, struct Sequence *seq, int ofs);
|
|
struct GSet *SEQ_fcurves_by_strip_get(const struct Sequence *seq, struct ListBase *fcurve_base);
|
|
typedef struct SeqAnimationBackup {
|
|
ListBase curves;
|
|
ListBase drivers;
|
|
} SeqAnimationBackup;
|
|
/**
|
|
* Move all F-Curves and drivers from `scene` to `backup`.
|
|
*/
|
|
void SEQ_animation_backup_original(struct Scene *scene, struct SeqAnimationBackup *backup);
|
|
/**
|
|
* Move all F-Curves and drivers from `backup` to `scene`.
|
|
*/
|
|
void SEQ_animation_restore_original(struct Scene *scene, struct SeqAnimationBackup *backup);
|
|
/**
|
|
* Duplicate F-Curves and drivers used by `seq` from `backup` to `scene`.
|
|
*/
|
|
void SEQ_animation_duplicate_backup_to_scene(struct Scene *scene,
|
|
struct Sequence *seq,
|
|
struct SeqAnimationBackup *backup);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|