浏览代码

Update babylon.collisionCoordinator.ts

aWeirdo 8 年之前
父节点
当前提交
c543e27ad8
共有 1 个文件被更改,包括 7 次插入4 次删除
  1. 7 4
      src/Collisions/babylon.collisionCoordinator.ts

+ 7 - 4
src/Collisions/babylon.collisionCoordinator.ts

@@ -354,8 +354,7 @@ module BABYLON {
             collider.retry = 0;
             collider.initialVelocity = this._scaledVelocity;
             collider.initialPosition = this._scaledPosition;
-            collider._collisionMask = excludedMesh && excludedMesh._collisionMask ? excludedMesh._collisionMask : collider._collisionMask;
-            
+                        
             this._collideWithWorld(this._scaledPosition, this._scaledVelocity, collider, maximumRetry, this._finalPosition, excludedMesh);
 
             this._finalPosition.multiplyInPlace(collider.radius);
@@ -387,13 +386,17 @@ module BABYLON {
                 return;
             }
 
+            // Check if this is a camera else -1
+            collider._collisionMask = (!isNaN(collider._collisionMask) ? collider._collisionMask : -1)
+            // Check if this is a mesh else camera or -1
+            var collisionMask = (excludedMesh ? excludedMesh._collisionMask : collider._collisionMask);
+
             collider._initialize(position, velocity, closeDistance);
 
             // Check all meshes
             for (var index = 0; index < this._scene.meshes.length; index++) {
                 var mesh = this._scene.meshes[index];
-                if(!mesh._collisionGroup) mesh._collisionGroup = -1;
-                if (mesh.isEnabled() && mesh.checkCollisions && mesh.subMeshes && mesh !== excludedMesh &&  ((collider._collisionMask & mesh._collisionGroup) !== 0)) {
+                if (mesh.isEnabled() && mesh.checkCollisions && mesh.subMeshes && mesh !== excludedMesh &&  ((collisionMask & mesh._collisionMask) !== 0)) {
                     mesh._checkCollision(collider);
                 }
             }