From b6a118448dce974d25c1d5ae4043baa6dfe12db0 Mon Sep 17 00:00:00 2001 From: rdb Date: Sun, 21 Mar 2021 14:35:28 +0100 Subject: [PATCH] physics: Warn when copying PhysicalNode with physicals attached We can't currently support this because a Physical can have only one PhysicalNode associated. --- panda/src/physics/physicalNode.cxx | 10 ++++++++++ 1 file changed, 10 insertions(+) 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); }