diff --git a/panda/src/physics/physicalNode.cxx b/panda/src/physics/physicalNode.cxx index 0fcabeeb8a..1fcd1ce903 100644 --- a/panda/src/physics/physicalNode.cxx +++ b/panda/src/physics/physicalNode.cxx @@ -14,7 +14,11 @@ #include "physicalNode.h" #include "physicsManager.h" +#include + // static stuff. +static std::atomic_flag warned_copy_physical_node = ATOMIC_FLAG_INIT; + TypeHandle PhysicalNode::_type_handle; /** @@ -55,6 +59,12 @@ PhysicalNode:: */ PandaNode *PhysicalNode:: 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); }