|
@@ -354,8 +354,7 @@ module BABYLON {
|
|
collider.retry = 0;
|
|
collider.retry = 0;
|
|
collider.initialVelocity = this._scaledVelocity;
|
|
collider.initialVelocity = this._scaledVelocity;
|
|
collider.initialPosition = this._scaledPosition;
|
|
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._collideWithWorld(this._scaledPosition, this._scaledVelocity, collider, maximumRetry, this._finalPosition, excludedMesh);
|
|
|
|
|
|
this._finalPosition.multiplyInPlace(collider.radius);
|
|
this._finalPosition.multiplyInPlace(collider.radius);
|
|
@@ -387,13 +386,17 @@ module BABYLON {
|
|
return;
|
|
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);
|
|
collider._initialize(position, velocity, closeDistance);
|
|
|
|
|
|
// Check all meshes
|
|
// Check all meshes
|
|
for (var index = 0; index < this._scene.meshes.length; index++) {
|
|
for (var index = 0; index < this._scene.meshes.length; index++) {
|
|
var mesh = this._scene.meshes[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);
|
|
mesh._checkCollision(collider);
|
|
}
|
|
}
|
|
}
|
|
}
|