Преглед изворни кода

Prevent AmmoJS applyForce modifying position param

Fowlet пре 4 година
родитељ
комит
46d6a67f9a
1 измењених фајлова са 3 додато и 2 уклоњено
  1. 3 2
      src/Physics/Plugins/ammoJSPlugin.ts

+ 3 - 2
src/Physics/Plugins/ammoJSPlugin.ts

@@ -377,13 +377,14 @@ export class AmmoJSPlugin implements IPhysicsEnginePlugin {
             impostor.physicsBody.activate();
             impostor.physicsBody.activate();
             var worldPoint = this._tmpAmmoVectorA;
             var worldPoint = this._tmpAmmoVectorA;
             var impulse = this._tmpAmmoVectorB;
             var impulse = this._tmpAmmoVectorB;
+            var localContactPoint = new Vector3().copyFrom(contactPoint);
 
 
             // Convert contactPoint relative to center of mass
             // Convert contactPoint relative to center of mass
             if (impostor.object && impostor.object.getWorldMatrix) {
             if (impostor.object && impostor.object.getWorldMatrix) {
-                contactPoint.subtractInPlace(impostor.object.getWorldMatrix().getTranslation());
+                localContactPoint.subtractInPlace(impostor.object.getWorldMatrix().getTranslation());
             }
             }
 
 
-            worldPoint.setValue(contactPoint.x, contactPoint.y, contactPoint.z);
+            worldPoint.setValue(localContactPoint.x, localContactPoint.y, localContactPoint.z);
             impulse.setValue(force.x, force.y, force.z);
             impulse.setValue(force.x, force.y, force.z);
 
 
             impostor.physicsBody.applyForce(impulse, worldPoint);
             impostor.physicsBody.applyForce(impulse, worldPoint);