浏览代码

Merge pull request #2339 from Areloch/MountedCollisionsFix

Adds logic to temporarily disable collisions of mounted objects on Players
Areloch 6 年之前
父节点
当前提交
0dfad8f072
共有 1 个文件被更改,包括 14 次插入0 次删除
  1. 14 0
      Engine/source/T3D/player.cpp

+ 14 - 0
Engine/source/T3D/player.cpp

@@ -6150,8 +6150,22 @@ void Player::updateWorkingCollisionSet()
       mWorkingQueryBox.maxExtents += twolPoint;
 
       disableCollision();
+
+      //We temporarily disable the collisions of anything mounted to us so we don't accidentally walk into things we've attached to us
+      for (SceneObject *ptr = mMount.list; ptr; ptr = ptr->getMountLink())
+      {
+         ptr->disableCollision();
+      }
+
       mConvex.updateWorkingList(mWorkingQueryBox,
          isGhost() ? sClientCollisionContactMask : sServerCollisionContactMask);
+
+      //And now re-enable the collisions of the mounted things
+      for (SceneObject *ptr = mMount.list; ptr; ptr = ptr->getMountLink())
+      {
+         ptr->enableCollision();
+      }
+
       enableCollision();
    }
 }