diff --git a/doc/ReleaseNotes b/doc/ReleaseNotes index 37f755d200..49ed03cd78 100644 --- a/doc/ReleaseNotes +++ b/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 ------------------------ diff --git a/panda/src/pgraph/modelFlattenRequest.cxx b/panda/src/pgraph/modelFlattenRequest.cxx index 74a7db8461..2b02b58f00 100644 --- a/panda/src/pgraph/modelFlattenRequest.cxx +++ b/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; diff --git a/panda/src/putil/animInterface.cxx b/panda/src/putil/animInterface.cxx index 1fd73dc6f0..4727b4f907 100644 --- a/panda/src/putil/animInterface.cxx +++ b/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: