[Bf-blender-cvs] [89ae4a7a2a9] master: Fix NLA liboverride issues re tracks handling.

Bastien Montagne noreply at git.blender.org
Tue Jan 12 11:32:23 CET 2021


Commit: 89ae4a7a2a9a067dd425d9ae5c63aabcc60a986e
Author: Bastien Montagne
Date:   Tue Jan 12 11:30:08 2021 +0100
Branches: master
https://developer.blender.org/rB89ae4a7a2a9a067dd425d9ae5c63aabcc60a986e

Fix NLA liboverride issues re tracks handling.

>From original rBc0bd240ad0a1 commit, issues reported with suggested
fixes by Wayde Moss (@GuiltyGhost), thx.

===================================================================

M	source/blender/blenkernel/intern/nla.c
M	source/blender/editors/transform/transform_convert_nla.c

===================================================================

diff --git a/source/blender/blenkernel/intern/nla.c b/source/blender/blenkernel/intern/nla.c
index 75230f9045c..ecafc76c84d 100644
--- a/source/blender/blenkernel/intern/nla.c
+++ b/source/blender/blenkernel/intern/nla.c
@@ -296,11 +296,16 @@ NlaTrack *BKE_nlatrack_add(AnimData *adt, NlaTrack *prev, const bool is_liboverr
   nlt->flag = NLATRACK_SELECTED | NLATRACK_OVERRIDELIBRARY_LOCAL;
   nlt->index = BLI_listbase_count(&adt->nla_tracks);
 
-  /* add track to stack, and make it the active one */
-  if (is_liboverride) {
-    for (; prev != NULL && (prev->flag & NLATRACK_OVERRIDELIBRARY_LOCAL) == 0; prev = prev->next) {
+  /* In liboverride case, we only add local tracks after all those comming from the linked data, so
+   * we need to find the first local track. */
+  if (is_liboverride && prev != NULL && (prev->flag & NLATRACK_OVERRIDELIBRARY_LOCAL) == 0) {
+    NlaTrack *first_local = prev->next;
+    for (; first_local != NULL && (first_local->flag & NLATRACK_OVERRIDELIBRARY_LOCAL) == 0;
+         first_local = first_local->next) {
     }
+    prev = first_local != NULL ? first_local->prev : NULL;
   }
+  /* Add track to stack, and make it the active one. */
   if (prev != NULL) {
     BLI_insertlinkafter(&adt->nla_tracks, prev, nlt);
   }
diff --git a/source/blender/editors/transform/transform_convert_nla.c b/source/blender/editors/transform/transform_convert_nla.c
index fa60a88a45b..ada668bcd04 100644
--- a/source/blender/editors/transform/transform_convert_nla.c
+++ b/source/blender/editors/transform/transform_convert_nla.c
@@ -484,7 +484,7 @@ void recalcData_nla(TransInfo *t)
         for (track = tdn->nlt->next, n = 0; (track) && (n < delta); track = track->next, n++) {
           /* check if space in this track for the strip */
           if (BKE_nlatrack_has_space(track, strip->start, strip->end) &&
-              !BKE_nlatrack_is_nonlocal_in_liboverride(tdn->id, tdn->nlt)) {
+              !BKE_nlatrack_is_nonlocal_in_liboverride(tdn->id, track)) {
             /* move strip to this track */
             BLI_remlink(&tdn->nlt->strips, strip);
             BKE_nlatrack_add_strip(track, strip, is_liboverride);
@@ -504,7 +504,7 @@ void recalcData_nla(TransInfo *t)
         for (track = tdn->nlt->prev, n = 0; (track) && (n < delta); track = track->prev, n++) {
           /* check if space in this track for the strip */
           if (BKE_nlatrack_has_space(track, strip->start, strip->end) &&
-              !BKE_nlatrack_is_nonlocal_in_liboverride(tdn->id, tdn->nlt)) {
+              !BKE_nlatrack_is_nonlocal_in_liboverride(tdn->id, track)) {
             /* move strip to this track */
             BLI_remlink(&tdn->nlt->strips, strip);
             BKE_nlatrack_add_strip(track, strip, is_liboverride);



More information about the Bf-blender-cvs mailing list