ソースを参照

Merge pull request #247 from Temechon/patch-9

Remove useless constant
deltakosh 11 年 前
コミット
40e970afbe
1 ファイル変更15 行追加1 行削除
  1. 15 1
      Babylon/Physics/Plugins/babylon.oimoJSPlugin.ts

+ 15 - 1
Babylon/Physics/Plugins/babylon.oimoJSPlugin.ts

@@ -188,6 +188,7 @@ module BABYLON {
          * @param mesh
          */
         public updateBodyPosition = function (mesh: AbstractMesh): void {
+
             for (var index = 0; index < this._registeredMeshes.length; index++) {
                 var registeredMesh = this._registeredMeshes[index];
                 if (registeredMesh.mesh === mesh || registeredMesh.mesh === mesh.parent) {
@@ -196,6 +197,19 @@ module BABYLON {
                     body.setOrientation(mesh.rotation.x, mesh.rotation.y, mesh.rotation.z);
                     return;
                 }
+                // Case where the parent has been updated
+                if (registeredMesh.mesh.parent === mesh) {
+                    mesh.computeWorldMatrix(true);
+                    registeredMesh.mesh.computeWorldMatrix(true);
+
+                    var absolutePosition = registeredMesh.mesh.getAbsolutePosition();
+                    var absoluteRotation = mesh.rotation;
+
+                    var body = registeredMesh.body.body;
+                    body.setPosition(absolutePosition.x, absolutePosition.y, absolutePosition.z);
+                    body.setOrientation(absoluteRotation.x, absoluteRotation.y, absoluteRotation.z);
+                    return;
+                }
             }
         }
 
@@ -203,7 +217,7 @@ module BABYLON {
             for (var index = 0; index < this._registeredMeshes.length; index++) {
                 var registeredMesh = this._registeredMeshes[index];
                 if (registeredMesh.mesh === mesh || registeredMesh.mesh === mesh.parent) {
-                    registeredMesh.body.body.applyImpulse(contactPoint.scale(OIMO.INV_SCALE), force.scale(OIMO.INV_SCALE * 0.01));
+                    registeredMesh.body.body.applyImpulse(contactPoint.scale(OIMO.INV_SCALE), force.scale(OIMO.INV_SCALE));
                     return;
                 }
             }