Browse Source

physics: Prevent adding same Physical to more than one PhysicalNode

Also silently ignore if the same Physical is added to the same PhysicalNode more than once.
rdb 4 years ago
parent
commit
1c754738bd
1 changed files with 7 additions and 3 deletions
  1. 7 3
      panda/src/physics/physicalNode.I

+ 7 - 3
panda/src/physics/physicalNode.I

@@ -42,10 +42,14 @@ get_num_physicals() const {
 }
 }
 
 
 /**
 /**
-
+ * Adds a Physical to this PhysicalNode.  If it is already added to this node,
+ * does nothing.  It is an error to add a Physical to multiple PhysicalNodes.
  */
  */
 INLINE void PhysicalNode::
 INLINE void PhysicalNode::
 add_physical(Physical *physical) {
 add_physical(Physical *physical) {
-  _physicals.push_back(physical);
-  physical->_physical_node = this;
+  if (physical->_physical_node != this) {
+    nassertv(physical->_physical_node == nullptr);
+    _physicals.push_back(physical);
+    physical->_physical_node = this;
+  }
 }
 }