physics: Warn when copying PhysicalNode with physicals attached

We can't currently support this because a Physical can have only one PhysicalNode associated.
This commit is contained in:
rdb 2021-03-21 14:35:28 +01:00
parent 1c754738bd
commit b6a118448d

View File

@ -14,7 +14,11 @@
#include "physicalNode.h" #include "physicalNode.h"
#include "physicsManager.h" #include "physicsManager.h"
#include <atomic>
// static stuff. // static stuff.
static std::atomic_flag warned_copy_physical_node = ATOMIC_FLAG_INIT;
TypeHandle PhysicalNode::_type_handle; TypeHandle PhysicalNode::_type_handle;
/** /**
@ -55,6 +59,12 @@ PhysicalNode::
*/ */
PandaNode *PhysicalNode:: PandaNode *PhysicalNode::
make_copy() const { make_copy() const {
if (!_physicals.empty() && !warned_copy_physical_node.test_and_set()) {
// This is a problem, because a Physical can only be on one PhysicalNode.
//FIXME: Figure out a solution.
physics_cat.warning()
<< "Detected attempt to copy PhysicalNode object with physicals.\n";
}
return new PhysicalNode(*this); return new PhysicalNode(*this);
} }