Browse Source

Merge branch 'release/1.9.x'

rdb 9 years ago
parent
commit
08ea4bf2e5
3 changed files with 18 additions and 2 deletions
  1. 2 0
      doc/ReleaseNotes
  2. 10 1
      panda/src/pgraph/modelFlattenRequest.cxx
  3. 6 1
      panda/src/putil/animInterface.cxx

+ 2 - 0
doc/ReleaseNotes

@@ -34,6 +34,8 @@ This issue fixes several bugs that were still found in 1.9.2.
 * Support for InvSphere, Box and Tube solids in bam2egg
 * Add normalized() method to vectors
 * asyncFlattenStrong with inPlace=True caused node to disappear
+* Fix asyncFlattenStrong called on nodes without parent
+* Fix is_playing() check when playing an animation backwards
 
 ------------------------  RELEASE 1.9.2  ------------------------
 

+ 10 - 1
panda/src/pgraph/modelFlattenRequest.cxx

@@ -24,7 +24,16 @@ do_task() {
   // We make another instance of the original node, so we can safely flatten
   // that without affecting the original copy.
   NodePath np("flatten_root");
-  np.attach_new_node(_orig);
+
+  // Except if we try to attach a node without parents, this will cause the
+  // original NodePath to be affected, so we have to make a (shallow) copy.
+  if (_orig->get_num_parents() == 0) {
+    PT(PandaNode) copy = _orig->make_copy();
+    copy->copy_children(_orig);
+    np.attach_new_node(copy);
+  } else {
+    np.attach_new_node(_orig);
+  }
   np.flatten_strong();
   _model = np.get_child(0).node();
   _is_ready = true;

+ 6 - 1
panda/src/putil/animInterface.cxx

@@ -356,7 +356,12 @@ is_playing() const {
     return false;
 
   case PM_play:
-    return get_f() < _play_frames;
+    if (_effective_frame_rate < 0.0) {
+      // If we're playing backwards, check if we're at the beginning.
+      return get_f() > 0;
+   } else {
+      return get_f() < _play_frames;
+    }
 
   case PM_loop:
   case PM_pingpong: