Bladeren bron

Merge pull request #9339 from Popov72/collision-unindexed

Added support for collisions with unindexed meshes
David Catuhe 4 jaren geleden
bovenliggende
commit
32cf9e2954
2 gewijzigde bestanden met toevoegingen van 16 en 5 verwijderingen
  1. 1 0
      dist/preview release/what's new.md
  2. 15 5
      src/Collisions/collider.ts

+ 1 - 0
dist/preview release/what's new.md

@@ -235,6 +235,7 @@
 ### Collisions
 
 - Added an option to optimize collision detection performance ([jsdream](https://github.com/jsdream)) - [PR](https://github.com/BabylonJS/Babylon.js/pull/7810)
+- Added support for collisions with unindexed meshes ([#9267](https://github.com/BabylonJS/Babylon.js/issues/9267))([Popov72](https://github.com/Popov72))
 
 ### Animation
 

+ 15 - 5
src/Collisions/collider.ts

@@ -387,12 +387,22 @@ export class Collider {
 
     /** @hidden */
     public _collide(trianglePlaneArray: Array<Plane>, pts: Vector3[], indices: IndicesArray, indexStart: number, indexEnd: number, decal: number, hasMaterial: boolean, hostMesh: AbstractMesh): void {
-        for (var i = indexStart; i < indexEnd; i += 3) {
-            var p1 = pts[indices[i] - decal];
-            var p2 = pts[indices[i + 1] - decal];
-            var p3 = pts[indices[i + 2] - decal];
+        if (!indices || indices.length === 0) {
+            for (let i = 0; i < pts.length; i += 3) {
+                const p1 = pts[i];
+                const p2 = pts[i + 1];
+                const p3 = pts[i + 2];
 
-            this._testTriangle(i, trianglePlaneArray, p3, p2, p1, hasMaterial, hostMesh);
+                this._testTriangle(i, trianglePlaneArray, p3, p2, p1, hasMaterial, hostMesh);
+            }
+        } else {
+            for (let i = indexStart; i < indexEnd; i += 3) {
+                const p1 = pts[indices[i] - decal];
+                const p2 = pts[indices[i + 1] - decal];
+                const p3 = pts[indices[i + 2] - decal];
+
+                this._testTriangle(i, trianglePlaneArray, p3, p2, p1, hasMaterial, hostMesh);
+            }
         }
     }