Selaa lähdekoodia

getGravity method

physics engine will now return the gravity currently used.
Scene serializer will serialize it correctly.
Weber, Raanan 9 vuotta sitten
vanhempi
commit
6238df77c5

+ 5 - 0
src/Physics/Plugins/babylon.cannonJSPlugin.js

@@ -4,6 +4,7 @@ var BABYLON;
         function CannonJSPlugin() {
         function CannonJSPlugin() {
             this._registeredMeshes = [];
             this._registeredMeshes = [];
             this._physicsMaterials = [];
             this._physicsMaterials = [];
+            this.name = "cannon";
             this.updateBodyPosition = function (mesh) {
             this.updateBodyPosition = function (mesh) {
                 for (var index = 0; index < this._registeredMeshes.length; index++) {
                 for (var index = 0; index < this._registeredMeshes.length; index++) {
                     var registeredMesh = this._registeredMeshes[index];
                     var registeredMesh = this._registeredMeshes[index];
@@ -89,8 +90,12 @@ var BABYLON;
             });
             });
         };
         };
         CannonJSPlugin.prototype.setGravity = function (gravity) {
         CannonJSPlugin.prototype.setGravity = function (gravity) {
+            this._gravity = gravity;
             this._world.gravity.set(gravity.x, gravity.y, gravity.z);
             this._world.gravity.set(gravity.x, gravity.y, gravity.z);
         };
         };
+        CannonJSPlugin.prototype.getGravity = function () {
+            return this._gravity;
+        };
         CannonJSPlugin.prototype.registerMesh = function (mesh, impostor, options) {
         CannonJSPlugin.prototype.registerMesh = function (mesh, impostor, options) {
             this.unregisterMesh(mesh);
             this.unregisterMesh(mesh);
             if (!mesh.rotationQuaternion) {
             if (!mesh.rotationQuaternion) {

+ 6 - 0
src/Physics/Plugins/babylon.cannonJSPlugin.ts

@@ -17,6 +17,7 @@
         private _world: any;
         private _world: any;
         private _registeredMeshes: Array<IRegisteredMesh> = [];
         private _registeredMeshes: Array<IRegisteredMesh> = [];
         private _physicsMaterials = [];
         private _physicsMaterials = [];
+		private _gravity: Vector3;
 		
 		
 		public name = "cannon";
 		public name = "cannon";
 
 
@@ -72,8 +73,13 @@
         }
         }
 
 
         public setGravity(gravity: Vector3): void {
         public setGravity(gravity: Vector3): void {
+			this._gravity = gravity;
             this._world.gravity.set(gravity.x, gravity.y, gravity.z);
             this._world.gravity.set(gravity.x, gravity.y, gravity.z);
         }
         }
+		
+		public getGravity() : Vector3 {
+			return this._gravity;
+		}
 
 
         public registerMesh(mesh: AbstractMesh, impostor: number, options?: PhysicsBodyCreationOptions): any {
         public registerMesh(mesh: AbstractMesh, impostor: number, options?: PhysicsBodyCreationOptions): any {
             this.unregisterMesh(mesh);
             this.unregisterMesh(mesh);

+ 5 - 1
src/Physics/Plugins/babylon.oimoJSPlugin.js

@@ -3,6 +3,7 @@ var BABYLON;
     var OimoJSPlugin = (function () {
     var OimoJSPlugin = (function () {
         function OimoJSPlugin() {
         function OimoJSPlugin() {
             this._registeredMeshes = [];
             this._registeredMeshes = [];
+            this.name = "oimo";
             /**
             /**
              * Update the body position according to the mesh position
              * Update the body position according to the mesh position
              * @param mesh
              * @param mesh
@@ -42,7 +43,10 @@ var BABYLON;
             this._world.clear();
             this._world.clear();
         };
         };
         OimoJSPlugin.prototype.setGravity = function (gravity) {
         OimoJSPlugin.prototype.setGravity = function (gravity) {
-            this._world.gravity = gravity;
+            this._gravity = this._world.gravity = gravity;
+        };
+        OimoJSPlugin.prototype.getGravity = function () {
+            return this._gravity;
         };
         };
         OimoJSPlugin.prototype.registerMesh = function (mesh, impostor, options) {
         OimoJSPlugin.prototype.registerMesh = function (mesh, impostor, options) {
             this.unregisterMesh(mesh);
             this.unregisterMesh(mesh);

+ 7 - 1
src/Physics/Plugins/babylon.oimoJSPlugin.ts

@@ -6,6 +6,8 @@ module BABYLON {
         private _registeredMeshes = [];
         private _registeredMeshes = [];
 		
 		
 		public name = "oimo";
 		public name = "oimo";
+		
+		private _gravity: Vector3;
 
 
         private _checkWithEpsilon(value: number): number {
         private _checkWithEpsilon(value: number): number {
             return value < PhysicsEngine.Epsilon ? PhysicsEngine.Epsilon : value;
             return value < PhysicsEngine.Epsilon ? PhysicsEngine.Epsilon : value;
@@ -17,8 +19,12 @@ module BABYLON {
         }
         }
 
 
         public setGravity(gravity: Vector3): void {
         public setGravity(gravity: Vector3): void {
-            this._world.gravity = gravity;
+            this._gravity = this._world.gravity = gravity;
         }
         }
+		
+		public getGravity() : Vector3 {
+			return this._gravity;
+		}
 
 
         public registerMesh(mesh: AbstractMesh, impostor: number, options: PhysicsBodyCreationOptions): any {
         public registerMesh(mesh: AbstractMesh, impostor: number, options: PhysicsBodyCreationOptions): any {
             this.unregisterMesh(mesh);
             this.unregisterMesh(mesh);

+ 6 - 0
src/Physics/babylon.physicsEngine.js

@@ -21,6 +21,9 @@ var BABYLON;
             this.gravity = gravity || new BABYLON.Vector3(0, -9.807, 0);
             this.gravity = gravity || new BABYLON.Vector3(0, -9.807, 0);
             this._currentPlugin.setGravity(this.gravity);
             this._currentPlugin.setGravity(this.gravity);
         };
         };
+        PhysicsEngine.prototype._getGravity = function () {
+            return this._currentPlugin.getGravity();
+        };
         PhysicsEngine.prototype._registerMesh = function (mesh, impostor, options) {
         PhysicsEngine.prototype._registerMesh = function (mesh, impostor, options) {
             return this._currentPlugin.registerMesh(mesh, impostor, options);
             return this._currentPlugin.registerMesh(mesh, impostor, options);
         };
         };
@@ -48,6 +51,9 @@ var BABYLON;
         PhysicsEngine.prototype.getPhysicsBodyOfMesh = function (mesh) {
         PhysicsEngine.prototype.getPhysicsBodyOfMesh = function (mesh) {
             return this._currentPlugin.getPhysicsBodyOfMesh(mesh);
             return this._currentPlugin.getPhysicsBodyOfMesh(mesh);
         };
         };
+        PhysicsEngine.prototype.getPhysicsPluginName = function () {
+            return this._currentPlugin.name;
+        };
         // Statics
         // Statics
         PhysicsEngine.NoImpostor = 0;
         PhysicsEngine.NoImpostor = 0;
         PhysicsEngine.SphereImpostor = 1;
         PhysicsEngine.SphereImpostor = 1;

+ 5 - 0
src/Physics/babylon.physicsEngine.ts

@@ -3,6 +3,7 @@
 		name: string;
 		name: string;
         initialize(iterations?: number);
         initialize(iterations?: number);
         setGravity(gravity: Vector3): void;
         setGravity(gravity: Vector3): void;
+		getGravity() : Vector3;
         runOneStep(delta: number): void;
         runOneStep(delta: number): void;
         registerMesh(mesh: AbstractMesh, impostor: number, options: PhysicsBodyCreationOptions): any;
         registerMesh(mesh: AbstractMesh, impostor: number, options: PhysicsBodyCreationOptions): any;
         registerMeshesAsCompound(parts: PhysicsCompoundBodyPart[], options: PhysicsBodyCreationOptions): any;
         registerMeshesAsCompound(parts: PhysicsCompoundBodyPart[], options: PhysicsBodyCreationOptions): any;
@@ -55,6 +56,10 @@
             this.gravity = gravity || new Vector3(0, -9.807, 0);
             this.gravity = gravity || new Vector3(0, -9.807, 0);
             this._currentPlugin.setGravity(this.gravity);
             this._currentPlugin.setGravity(this.gravity);
         }
         }
+		
+		public _getGravity() : Vector3 {
+			return this._currentPlugin.getGravity();
+		}
 
 
         public _registerMesh(mesh: AbstractMesh, impostor: number, options: PhysicsBodyCreationOptions): any {
         public _registerMesh(mesh: AbstractMesh, impostor: number, options: PhysicsBodyCreationOptions): any {
             return this._currentPlugin.registerMesh(mesh, impostor, options);
             return this._currentPlugin.registerMesh(mesh, impostor, options);

+ 1 - 1
src/Tools/babylon.sceneSerializer.js

@@ -684,7 +684,7 @@ var BABYLON;
             //Physics
             //Physics
             if (scene.isPhysicsEnabled()) {
             if (scene.isPhysicsEnabled()) {
                 serializationObject.physicsEnabled = true;
                 serializationObject.physicsEnabled = true;
-                serializationObject.physicsGravity = 0;
+                serializationObject.physicsGravity = scene.getPhysicsEngine()._getGravity();
                 serializationObject.physicsEngine = scene.getPhysicsEngine().getPhysicsPluginName();
                 serializationObject.physicsEngine = scene.getPhysicsEngine().getPhysicsPluginName();
             }
             }
             // Lights
             // Lights

+ 2 - 2
src/Tools/babylon.sceneSerializer.ts

@@ -814,9 +814,9 @@
             }
             }
             
             
             //Physics
             //Physics
-            if(scene.isPhysicsEnabled()) {
+            if (scene.isPhysicsEnabled()) {
                 serializationObject.physicsEnabled = true;
                 serializationObject.physicsEnabled = true;
-                serializationObject.physicsGravity = 0;
+                serializationObject.physicsGravity = scene.getPhysicsEngine()._getGravity();
                 serializationObject.physicsEngine = scene.getPhysicsEngine().getPhysicsPluginName();
                 serializationObject.physicsEngine = scene.getPhysicsEngine().getPhysicsPluginName();
             }
             }