Quellcode durchsuchen

bullet: prevent softbody with AABB out of bounds from asserting

See #357
rdb vor 7 Jahren
Ursprung
Commit
5fe294a467
1 geänderte Dateien mit 9 neuen und 2 gelöschten Zeilen
  1. 9 2
      panda/src/bullet/bulletSoftBodyNode.cxx

+ 9 - 2
panda/src/bullet/bulletSoftBodyNode.cxx

@@ -276,8 +276,15 @@ do_sync_b2p() {
 
   // Update the synchronized transform with the current approximate center of
   // the soft body
-  LVecBase3 pos = this->do_get_aabb().get_approx_center();
-  CPT(TransformState) ts = TransformState::make_pos(pos);
+  btVector3 pMin, pMax;
+  _soft->getAabb(pMin, pMax);
+  LPoint3 pos = (btVector3_to_LPoint3(pMin) + btVector3_to_LPoint3(pMax)) * 0.5;
+  CPT(TransformState) ts;
+  if (!pos.is_nan()) {
+    ts = TransformState::make_pos(pos);
+  } else {
+    ts = TransformState::make_identity();
+  }
 
   NodePath np = NodePath::any_path((PandaNode *)this);
   LVecBase3 scale = np.get_net_transform()->get_scale();