diff --git a/doc/ReleaseNotes b/doc/ReleaseNotes index 37f755d200..4cbfd69fb4 100644 --- a/doc/ReleaseNotes +++ b/doc/ReleaseNotes @@ -34,6 +34,7 @@ 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 ------------------------ RELEASE 1.9.2 ------------------------ diff --git a/panda/src/pgraph/modelFlattenRequest.cxx b/panda/src/pgraph/modelFlattenRequest.cxx index 7d98406477..b6c5cca4c8 100644 --- a/panda/src/pgraph/modelFlattenRequest.cxx +++ b/panda/src/pgraph/modelFlattenRequest.cxx @@ -25,10 +25,19 @@ TypeHandle ModelFlattenRequest::_type_handle; //////////////////////////////////////////////////////////////////// AsyncTask::DoneStatus ModelFlattenRequest:: do_task() { - // We make another instance of the original node, so we can safely - // flatten that without affecting the original copy. + // 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;