|
@@ -141,11 +141,14 @@ module BABYLON {
|
|
|
}
|
|
|
|
|
|
private collideForSubMesh(subMesh: SerializedSubMesh, transformMatrix: BABYLON.Matrix, meshGeometry: SerializedGeometry): void {
|
|
|
- var positionsArray = [];
|
|
|
- for (var i = 0, len = meshGeometry.positions.length; i < len; i = i + 3) {
|
|
|
- var p = BABYLON.Vector3.FromArray([meshGeometry.positions[i], meshGeometry.positions[i + 1], meshGeometry.positions[i + 2]]);
|
|
|
- positionsArray.push(p);
|
|
|
+ if (!meshGeometry['positionsArray']) {
|
|
|
+ meshGeometry['positionsArray'] = [];
|
|
|
+ for (var i = 0, len = meshGeometry.positions.length; i < len; i = i + 3) {
|
|
|
+ var p = BABYLON.Vector3.FromArray([meshGeometry.positions[i], meshGeometry.positions[i + 1], meshGeometry.positions[i + 2]]);
|
|
|
+ meshGeometry['positionsArray'].push(p);
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
if (!subMesh['_lastColliderWorldVertices'] || !subMesh['_lastColliderTransformMatrix'].equals(transformMatrix)) {
|
|
|
subMesh['_lastColliderTransformMatrix'] = transformMatrix.clone();
|
|
|
//The following two arrays should be initialized CORRECTLY to save some calculation time.
|
|
@@ -154,7 +157,7 @@ module BABYLON {
|
|
|
var start = subMesh.verticesStart;
|
|
|
var end = (subMesh.verticesStart + subMesh.verticesCount);
|
|
|
for (var i = start; i < end; i++) {
|
|
|
- subMesh['_lastColliderWorldVertices'].push(BABYLON.Vector3.TransformCoordinates(positionsArray[i], transformMatrix));
|
|
|
+ subMesh['_lastColliderWorldVertices'].push(BABYLON.Vector3.TransformCoordinates(meshGeometry['positionsArray'][i], transformMatrix));
|
|
|
}
|
|
|
}
|
|
|
|