Parcourir la source

onCollide for meshes

When mesh is using the moveWithCollisions, no callback could be set.
It is now possible to define a callback for mesh collision.
Raanan Weber il y a 10 ans
Parent
commit
c39ecee90c
2 fichiers modifiés avec 9 ajouts et 0 suppressions
  1. 4 0
      src/Mesh/babylon.abstractMesh.js
  2. 5 0
      src/Mesh/babylon.abstractMesh.ts

+ 4 - 0
src/Mesh/babylon.abstractMesh.js

@@ -81,6 +81,10 @@ var BABYLON;
                 if (_this._diffPositionForCollisions.length() > BABYLON.Engine.CollisionsEpsilon) {
                     _this.position.addInPlace(_this._diffPositionForCollisions);
                 }
+				
+				if (_this.onCollide && collidedMesh) {
+					_this.onCollide(collidedMesh);
+				}
             };
             scene.addMesh(this);
         }

+ 5 - 0
src/Mesh/babylon.abstractMesh.ts

@@ -80,6 +80,7 @@
         private _oldPositionForCollisions = new Vector3(0, 0, 0);
         private _diffPositionForCollisions = new Vector3(0, 0, 0);
         private _newPositionForCollisions = new Vector3(0, 0, 0);
+		public onCollide: (collidedMesh: AbstractMesh) => void;
 
         // Attach to bone
         private _meshToBoneReferal: AbstractMesh;
@@ -766,6 +767,10 @@
             if (this._diffPositionForCollisions.length() > Engine.CollisionsEpsilon) {
                 this.position.addInPlace(this._diffPositionForCollisions);
             }
+			
+			if (this.onCollide && collidedMesh) {
+				this.onCollide(collidedMesh);
+			}
         }
 
         // Submeshes octree