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
diff options
context:
space:
mode:
authorSybren A. Stüvel <sybren@blender.org>2019-11-26 16:35:47 +0300
committerSybren A. Stüvel <sybren@blender.org>2019-11-26 18:26:52 +0300
commitf18ad385dffe70f5e57df00ff9bbb7b42fa05be0 (patch)
tree00c70215a421b1187d7482f428d1548d0b29ea1c /source/blender/blenkernel/intern/anim_sys.c
parenta018a7fb0d5b2cd6de2bb7b4f4aa092594655fdd (diff)
Alembic export: don't assume transform is always animated
Instead of always writing the transform on every frame, it's now checked whether the object is animated at all. This could be made stricter to reduce false positives, for example by checking FCurves and drivers to see whether translation/rotation/scale is animated. However, this approach is already better than the `return true` we had before. This commit adds the BKE_animdata_id_is_animated(id) function, which returns true if the ID datablock has non-empty animation data. This is determined by checking the the active action's fcurves, the drivers, and NLA tracks.
Diffstat (limited to 'source/blender/blenkernel/intern/anim_sys.c')
-rw-r--r--source/blender/blenkernel/intern/anim_sys.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/anim_sys.c b/source/blender/blenkernel/intern/anim_sys.c
index 88a8463b994..6ecfeaffdba 100644
--- a/source/blender/blenkernel/intern/anim_sys.c
+++ b/source/blender/blenkernel/intern/anim_sys.c
@@ -283,6 +283,24 @@ void BKE_animdata_free(ID *id, const bool do_id_user)
}
}
+bool BKE_animdata_id_is_animated(struct ID *id)
+{
+ if (id == NULL) {
+ return false;
+ }
+
+ AnimData *adt = BKE_animdata_from_id(id);
+ if (adt == NULL) {
+ return false;
+ }
+
+ if (adt->action != NULL && !BLI_listbase_is_empty(&adt->action->curves)) {
+ return true;
+ }
+
+ return !BLI_listbase_is_empty(&adt->drivers) || !BLI_listbase_is_empty(&adt->nla_tracks);
+}
+
/* Copying -------------------------------------------- */
/**