Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorSybren A. Stüvel <sybren@blender.org>2019-11-26 19:59:27 +0300
committerSybren A. Stüvel <sybren@blender.org>2019-11-26 19:59:27 +0300
commitbf9c2e6fde34c0cb9029e33025627c743fca50b6 (patch)
tree409e1b4a0cba0f74e903254589325734e940ac11 /source
parentb21648ab3656986bae1df5897ff16f9d187c9039 (diff)
Anim: added BKE_object_moves_in_time(object) function
This function exposes the already-existing static `object_moves_in_time()` function, and optionally recursively checks the parent object for animatedness as well. I also added checking `AnimData::overrides` to `BKE_animdata_id_is_animated()`. This ensures that, apart from the optional recursion to the parent object, the function has the same functionality.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/BKE_object.h2
-rw-r--r--source/blender/blenkernel/intern/anim_sys.c3
-rw-r--r--source/blender/blenkernel/intern/object.c22
3 files changed, 15 insertions, 12 deletions
diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h
index 2f36e13d4c8..ec6ec027810 100644
--- a/source/blender/blenkernel/BKE_object.h
+++ b/source/blender/blenkernel/BKE_object.h
@@ -350,6 +350,8 @@ bool BKE_object_is_child_recursive(const struct Object *ob_parent, const struct
int BKE_object_is_modified(struct Scene *scene, struct Object *ob);
int BKE_object_is_deform_modified(struct Scene *scene, struct Object *ob);
+bool BKE_object_moves_in_time(const struct Object *object, bool recurse_parent);
+
int BKE_object_scenes_users_get(struct Main *bmain, struct Object *ob);
struct MovieClip *BKE_object_movieclip_get(struct Scene *scene,
diff --git a/source/blender/blenkernel/intern/anim_sys.c b/source/blender/blenkernel/intern/anim_sys.c
index 98473c04704..3a34a31b57e 100644
--- a/source/blender/blenkernel/intern/anim_sys.c
+++ b/source/blender/blenkernel/intern/anim_sys.c
@@ -298,7 +298,8 @@ bool BKE_animdata_id_is_animated(const struct ID *id)
return true;
}
- return !BLI_listbase_is_empty(&adt->drivers) || !BLI_listbase_is_empty(&adt->nla_tracks);
+ return !BLI_listbase_is_empty(&adt->drivers) || !BLI_listbase_is_empty(&adt->nla_tracks) ||
+ !BLI_listbase_is_empty(&adt->overrides);
}
/* Copying -------------------------------------------- */
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 6837336b8b8..08890965ece 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -3763,26 +3763,26 @@ int BKE_object_is_modified(Scene *scene, Object *ob)
* speed. In combination with checks of modifier stack and real life usage
* percentage of false-positives shouldn't be that height.
*/
-static bool object_moves_in_time(Object *object)
+bool BKE_object_moves_in_time(const Object *object, bool recurse_parent)
{
- AnimData *adt = object->adt;
- if (adt != NULL) {
- /* If object has any sort of animation data assume it is moving. */
- if (adt->action != NULL || !BLI_listbase_is_empty(&adt->nla_tracks) ||
- !BLI_listbase_is_empty(&adt->drivers) || !BLI_listbase_is_empty(&adt->overrides)) {
- return true;
- }
+ /* If object has any sort of animation data assume it is moving. */
+ if (BKE_animdata_id_is_animated(&object->id)) {
+ return true;
}
if (!BLI_listbase_is_empty(&object->constraints)) {
return true;
}
- if (object->parent != NULL) {
- /* TODO(sergey): Do recursive check here? */
- return true;
+ if (recurse_parent && object->parent != NULL) {
+ return BKE_object_moves_in_time(object->parent, true);
}
return false;
}
+static bool object_moves_in_time(const Object *object)
+{
+ return BKE_object_moves_in_time(object, true);
+}
+
static bool object_deforms_in_time(Object *object)
{
if (BKE_key_from_object(object) != NULL) {