Kaynağa Gözat

Fixed cameras serialization issue

David Catuhe 9 yıl önce
ebeveyn
işleme
ada2eb7f67
33 değiştirilmiş dosya ile 2916 ekleme ve 2688 silme
  1. 17 17
      dist/preview release/babylon.core.js
  2. 2612 2600
      dist/preview release/babylon.d.ts
  3. 24 24
      dist/preview release/babylon.js
  4. 70 7
      dist/preview release/babylon.max.js
  5. 24 24
      dist/preview release/babylon.noworker.js
  6. 5 0
      src/Cameras/VR/babylon.vrDeviceOrientationCamera.js
  7. 8 0
      src/Cameras/VR/babylon.vrDeviceOrientationCamera.ts
  8. 5 0
      src/Cameras/VR/babylon.webVRCamera.js
  9. 8 0
      src/Cameras/VR/babylon.webVRCamera.ts
  10. 1 0
      src/Cameras/babylon.arcRotateCamera.js
  11. 2 0
      src/Cameras/babylon.arcRotateCamera.ts
  12. 0 1
      src/Cameras/babylon.camera.js
  13. 0 2
      src/Cameras/babylon.camera.ts
  14. 5 0
      src/Cameras/babylon.deviceOrientationCamera.js
  15. 8 0
      src/Cameras/babylon.deviceOrientationCamera.ts
  16. 2 0
      src/Cameras/babylon.followCamera.js
  17. 3 0
      src/Cameras/babylon.followCamera.ts
  18. 1 0
      src/Cameras/babylon.freeCamera.js
  19. 1 0
      src/Cameras/babylon.freeCamera.ts
  20. 5 0
      src/Cameras/babylon.gamepadCamera.js
  21. 8 0
      src/Cameras/babylon.gamepadCamera.ts
  22. 30 0
      src/Cameras/babylon.stereoscopicCameras.js
  23. 36 0
      src/Cameras/babylon.stereoscopicCameras.ts
  24. 1 0
      src/Cameras/babylon.targetCamera.js
  25. 1 0
      src/Cameras/babylon.targetCamera.ts
  26. 5 0
      src/Cameras/babylon.touchCamera.js
  27. 8 0
      src/Cameras/babylon.touchCamera.ts
  28. 5 0
      src/Cameras/babylon.universalCamera.js
  29. 8 0
      src/Cameras/babylon.universalCamera.ts
  30. 5 0
      src/Cameras/babylon.virtualJoysticksCamera.js
  31. 8 0
      src/Cameras/babylon.virtualJoysticksCamera.ts
  32. 0 6
      src/Tools/babylon.tools.js
  33. 0 7
      src/Tools/babylon.tools.ts

Dosya farkı çok büyük olduğundan ihmal edildi
+ 17 - 17
dist/preview release/babylon.core.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 2612 - 2600
dist/preview release/babylon.d.ts


Dosya farkı çok büyük olduğundan ihmal edildi
+ 24 - 24
dist/preview release/babylon.js


+ 70 - 7
dist/preview release/babylon.max.js

@@ -4030,12 +4030,6 @@ var BABYLON;
             }
             return fn;
         };
-        Tools.GetConstructorName = function (obj) {
-            var str = (obj.prototype ? obj.prototype.constructor : obj.constructor).toString();
-            var cname = str.match(/function\s(\w*)/)[1];
-            var aliases = ["", "anonymous", "Anonymous"];
-            return aliases.indexOf(cname) > -1 ? "Function" : cname;
-        };
         Tools.ToHex = function (i) {
             var str = i.toString(16);
             if (i <= 15) {
@@ -10705,7 +10699,6 @@ var BABYLON;
             serializationObject.tags = BABYLON.Tags.GetTags(this);
             serializationObject.id = this.id;
             serializationObject.position = this.position.asArray();
-            serializationObject.type = BABYLON.Tools.GetConstructorName(this);
             // Parent
             if (this.parent) {
                 serializationObject.parentId = this.parent.id;
@@ -11095,6 +11088,7 @@ var BABYLON;
         TargetCamera.prototype.serialize = function () {
             var serializationObject = _super.prototype.serialize.call(this);
             serializationObject.speed = this.speed;
+            serializationObject.type = "TargetCamera";
             if (this.rotation) {
                 serializationObject.rotation = this.rotation.asArray();
             }
@@ -11335,6 +11329,7 @@ var BABYLON;
         };
         FreeCamera.prototype.serialize = function () {
             var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "FreeCamera";
             serializationObject.checkCollisions = this.checkCollisions;
             serializationObject.applyGravity = this.applyGravity;
             serializationObject.ellipsoid = this.ellipsoid.asArray();
@@ -11405,6 +11400,7 @@ var BABYLON;
         };
         FollowCamera.prototype.serialize = function () {
             var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "FollowCamera";
             serializationObject.radius = this.radius;
             serializationObject.heightOffset = this.heightOffset;
             serializationObject.rotationOffset = this.rotationOffset;
@@ -11437,6 +11433,7 @@ var BABYLON;
         };
         ArcFollowCamera.prototype.serialize = function () {
             var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "ArcFollowCamera";
             serializationObject.radius = this.radius;
             return serializationObject;
         };
@@ -11561,6 +11558,11 @@ var BABYLON;
             }
             _super.prototype._checkInputs.call(this);
         };
+        TouchCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "TouchCamera";
+            return serializationObject;
+        };
         return TouchCamera;
     })(BABYLON.FreeCamera);
     BABYLON.TouchCamera = TouchCamera;
@@ -12145,6 +12147,7 @@ var BABYLON;
         };
         ArcRotateCamera.prototype.serialize = function () {
             var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "ArcRotateCamera";
             if (this.target instanceof BABYLON.Vector3) {
                 serializationObject.target = this.target.asArray();
             }
@@ -32893,6 +32896,11 @@ var BABYLON;
             this._leftjoystick.releaseCanvas();
             _super.prototype.dispose.call(this);
         };
+        VirtualJoysticksCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "VirtualJoysticksCamera";
+            return serializationObject;
+        };
         return VirtualJoysticksCamera;
     })(BABYLON.FreeCamera);
     BABYLON.VirtualJoysticksCamera = VirtualJoysticksCamera;
@@ -33267,6 +33275,11 @@ var BABYLON;
             _super.prototype.detachControl.call(this, element);
             window.removeEventListener("deviceorientation", this._deviceOrientationHandler);
         };
+        VRDeviceOrientationFreeCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "VRDeviceOrientationFreeCamera";
+            return serializationObject;
+        };
         return VRDeviceOrientationFreeCamera;
     })(BABYLON.FreeCamera);
     BABYLON.VRDeviceOrientationFreeCamera = VRDeviceOrientationFreeCamera;
@@ -33342,6 +33355,11 @@ var BABYLON;
             _super.prototype.detachControl.call(this, element);
             this._vrEnabled = false;
         };
+        WebVRFreeCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "WebVRFreeCamera";
+            return serializationObject;
+        };
         return WebVRFreeCamera;
     })(BABYLON.FreeCamera);
     BABYLON.WebVRFreeCamera = WebVRFreeCamera;
@@ -34708,6 +34726,11 @@ var BABYLON;
             this.cameraDirection.addInPlace(BABYLON.Vector3.TransformCoordinates(direction, this._cameraRotationMatrix));
             _super.prototype._checkInputs.call(this);
         };
+        DeviceOrientationCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "DeviceOrientationCamera";
+            return serializationObject;
+        };
         return DeviceOrientationCamera;
     })(BABYLON.FreeCamera);
     BABYLON.DeviceOrientationCamera = DeviceOrientationCamera;
@@ -38211,6 +38234,11 @@ var BABYLON;
             this._gamepads.dispose();
             _super.prototype.dispose.call(this);
         };
+        UniversalCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "UniversalCamera";
+            return serializationObject;
+        };
         return UniversalCamera;
     })(BABYLON.TouchCamera);
     BABYLON.UniversalCamera = UniversalCamera;
@@ -38725,6 +38753,11 @@ var BABYLON;
             BABYLON.Tools.Warn("Deprecated. Please use Universal Camera instead.");
             _super.call(this, name, position, scene);
         }
+        GamepadCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "GamepadCamera";
+            return serializationObject;
+        };
         return GamepadCamera;
     })(BABYLON.UniversalCamera);
     BABYLON.GamepadCamera = GamepadCamera;
@@ -38745,6 +38778,11 @@ var BABYLON;
             this.interaxialDistance = interaxialDistance;
             this.setCameraRigMode(BABYLON.Camera.RIG_MODE_STEREOSCOPIC_ANAGLYPH, { interaxialDistance: interaxialDistance });
         }
+        AnaglyphFreeCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "AnaglyphFreeCamera";
+            return serializationObject;
+        };
         return AnaglyphFreeCamera;
     })(BABYLON.FreeCamera);
     BABYLON.AnaglyphFreeCamera = AnaglyphFreeCamera;
@@ -38754,6 +38792,11 @@ var BABYLON;
             _super.call(this, name, alpha, beta, radius, target, scene);
             this.setCameraRigMode(BABYLON.Camera.RIG_MODE_STEREOSCOPIC_ANAGLYPH, { interaxialDistance: interaxialDistance });
         }
+        AnaglyphArcRotateCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "AnaglyphArcRotateCamera";
+            return serializationObject;
+        };
         return AnaglyphArcRotateCamera;
     })(BABYLON.ArcRotateCamera);
     BABYLON.AnaglyphArcRotateCamera = AnaglyphArcRotateCamera;
@@ -38763,6 +38806,11 @@ var BABYLON;
             _super.call(this, name, position, scene);
             this.setCameraRigMode(BABYLON.Camera.RIG_MODE_STEREOSCOPIC_ANAGLYPH, { interaxialDistance: interaxialDistance });
         }
+        AnaglyphGamepadCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "AnaglyphGamepadCamera";
+            return serializationObject;
+        };
         return AnaglyphGamepadCamera;
     })(BABYLON.GamepadCamera);
     BABYLON.AnaglyphGamepadCamera = AnaglyphGamepadCamera;
@@ -38772,6 +38820,11 @@ var BABYLON;
             _super.call(this, name, position, scene);
             this.setCameraRigMode(isSideBySide ? BABYLON.Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL : BABYLON.Camera.RIG_MODE_STEREOSCOPIC_OVERUNDER, { interaxialDistance: interaxialDistance });
         }
+        StereoscopicFreeCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "StereoscopicFreeCamera";
+            return serializationObject;
+        };
         return StereoscopicFreeCamera;
     })(BABYLON.FreeCamera);
     BABYLON.StereoscopicFreeCamera = StereoscopicFreeCamera;
@@ -38781,6 +38834,11 @@ var BABYLON;
             _super.call(this, name, alpha, beta, radius, target, scene);
             this.setCameraRigMode(isSideBySide ? BABYLON.Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL : BABYLON.Camera.RIG_MODE_STEREOSCOPIC_OVERUNDER, { interaxialDistance: interaxialDistance });
         }
+        StereoscopicArcRotateCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "StereoscopicArcRotateCamera";
+            return serializationObject;
+        };
         return StereoscopicArcRotateCamera;
     })(BABYLON.ArcRotateCamera);
     BABYLON.StereoscopicArcRotateCamera = StereoscopicArcRotateCamera;
@@ -38790,6 +38848,11 @@ var BABYLON;
             _super.call(this, name, position, scene);
             this.setCameraRigMode(isSideBySide ? BABYLON.Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL : BABYLON.Camera.RIG_MODE_STEREOSCOPIC_OVERUNDER, { interaxialDistance: interaxialDistance });
         }
+        StereoscopicGamepadCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "StereoscopicGamepadCamera";
+            return serializationObject;
+        };
         return StereoscopicGamepadCamera;
     })(BABYLON.GamepadCamera);
     BABYLON.StereoscopicGamepadCamera = StereoscopicGamepadCamera;

Dosya farkı çok büyük olduğundan ihmal edildi
+ 24 - 24
dist/preview release/babylon.noworker.js


+ 5 - 0
src/Cameras/VR/babylon.vrDeviceOrientationCamera.js

@@ -41,6 +41,11 @@ var BABYLON;
             _super.prototype.detachControl.call(this, element);
             window.removeEventListener("deviceorientation", this._deviceOrientationHandler);
         };
+        VRDeviceOrientationFreeCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "VRDeviceOrientationFreeCamera";
+            return serializationObject;
+        };
         return VRDeviceOrientationFreeCamera;
     })(BABYLON.FreeCamera);
     BABYLON.VRDeviceOrientationFreeCamera = VRDeviceOrientationFreeCamera;

+ 8 - 0
src/Cameras/VR/babylon.vrDeviceOrientationCamera.ts

@@ -46,5 +46,13 @@ module BABYLON {
 
             window.removeEventListener("deviceorientation", this._deviceOrientationHandler);
         }
+
+        public serialize(): any {
+            var serializationObject = super.serialize();
+
+            serializationObject.type = "VRDeviceOrientationFreeCamera";
+
+            return serializationObject;
+        }
     }
 }

+ 5 - 0
src/Cameras/VR/babylon.webVRCamera.js

@@ -67,6 +67,11 @@ var BABYLON;
             _super.prototype.detachControl.call(this, element);
             this._vrEnabled = false;
         };
+        WebVRFreeCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "WebVRFreeCamera";
+            return serializationObject;
+        };
         return WebVRFreeCamera;
     })(BABYLON.FreeCamera);
     BABYLON.WebVRFreeCamera = WebVRFreeCamera;

+ 8 - 0
src/Cameras/VR/babylon.webVRCamera.ts

@@ -77,5 +77,13 @@ module BABYLON {
             super.detachControl(element);
             this._vrEnabled = false;
         }
+
+        public serialize(): any {
+            var serializationObject = super.serialize();
+
+            serializationObject.type = "WebVRFreeCamera";
+
+            return serializationObject;
+        }
     }
 }

+ 1 - 0
src/Cameras/babylon.arcRotateCamera.js

@@ -576,6 +576,7 @@ var BABYLON;
         };
         ArcRotateCamera.prototype.serialize = function () {
             var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "ArcRotateCamera";
             if (this.target instanceof BABYLON.Vector3) {
                 serializationObject.target = this.target.asArray();
             }

+ 2 - 0
src/Cameras/babylon.arcRotateCamera.ts

@@ -677,6 +677,8 @@
         public serialize(): any {
             var serializationObject = super.serialize();
 
+            serializationObject.type = "ArcRotateCamera";
+
             if (this.target instanceof Vector3) {
                 serializationObject.target = this.target.asArray();
             }

+ 0 - 1
src/Cameras/babylon.camera.js

@@ -522,7 +522,6 @@ var BABYLON;
             serializationObject.tags = BABYLON.Tags.GetTags(this);
             serializationObject.id = this.id;
             serializationObject.position = this.position.asArray();
-            serializationObject.type = BABYLON.Tools.GetConstructorName(this);
             // Parent
             if (this.parent) {
                 serializationObject.parentId = this.parent.id;

+ 0 - 2
src/Cameras/babylon.camera.ts

@@ -592,8 +592,6 @@
             serializationObject.id = this.id;
             serializationObject.position = this.position.asArray();
 
-            serializationObject.type = Tools.GetConstructorName(this);
-
             // Parent
             if (this.parent) {
                 serializationObject.parentId = this.parent.id;

+ 5 - 0
src/Cameras/babylon.deviceOrientationCamera.js

@@ -65,6 +65,11 @@ var BABYLON;
             this.cameraDirection.addInPlace(BABYLON.Vector3.TransformCoordinates(direction, this._cameraRotationMatrix));
             _super.prototype._checkInputs.call(this);
         };
+        DeviceOrientationCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "DeviceOrientationCamera";
+            return serializationObject;
+        };
         return DeviceOrientationCamera;
     })(BABYLON.FreeCamera);
     BABYLON.DeviceOrientationCamera = DeviceOrientationCamera;

+ 8 - 0
src/Cameras/babylon.deviceOrientationCamera.ts

@@ -74,5 +74,13 @@ module BABYLON {
 
             super._checkInputs();
         }
+
+        public serialize(): any {
+            var serializationObject = super.serialize();
+
+            serializationObject.type = "DeviceOrientationCamera";
+
+            return serializationObject;
+        }
     }
 }

+ 2 - 0
src/Cameras/babylon.followCamera.js

@@ -57,6 +57,7 @@ var BABYLON;
         };
         FollowCamera.prototype.serialize = function () {
             var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "FollowCamera";
             serializationObject.radius = this.radius;
             serializationObject.heightOffset = this.heightOffset;
             serializationObject.rotationOffset = this.rotationOffset;
@@ -89,6 +90,7 @@ var BABYLON;
         };
         ArcFollowCamera.prototype.serialize = function () {
             var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "ArcFollowCamera";
             serializationObject.radius = this.radius;
             return serializationObject;
         };

+ 3 - 0
src/Cameras/babylon.followCamera.ts

@@ -62,6 +62,8 @@
 
         public serialize(): any {
             var serializationObject = super.serialize();
+
+            serializationObject.type = "FollowCamera";
        
             serializationObject.radius = this.radius;
             serializationObject.heightOffset = this.heightOffset;
@@ -97,6 +99,7 @@
         public serialize(): any {
             var serializationObject = super.serialize();
 
+            serializationObject.type = "ArcFollowCamera";
             serializationObject.radius = this.radius;
 
             return serializationObject;

+ 1 - 0
src/Cameras/babylon.freeCamera.js

@@ -224,6 +224,7 @@ var BABYLON;
         };
         FreeCamera.prototype.serialize = function () {
             var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "FreeCamera";
             serializationObject.checkCollisions = this.checkCollisions;
             serializationObject.applyGravity = this.applyGravity;
             serializationObject.ellipsoid = this.ellipsoid.asArray();

+ 1 - 0
src/Cameras/babylon.freeCamera.ts

@@ -267,6 +267,7 @@
         public serialize(): any {
             var serializationObject = super.serialize();
 
+            serializationObject.type = "FreeCamera";
             serializationObject.checkCollisions = this.checkCollisions;
             serializationObject.applyGravity = this.applyGravity;
             serializationObject.ellipsoid = this.ellipsoid.asArray();

+ 5 - 0
src/Cameras/babylon.gamepadCamera.js

@@ -12,6 +12,11 @@ var BABYLON;
             BABYLON.Tools.Warn("Deprecated. Please use Universal Camera instead.");
             _super.call(this, name, position, scene);
         }
+        GamepadCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "GamepadCamera";
+            return serializationObject;
+        };
         return GamepadCamera;
     })(BABYLON.UniversalCamera);
     BABYLON.GamepadCamera = GamepadCamera;

+ 8 - 0
src/Cameras/babylon.gamepadCamera.ts

@@ -5,5 +5,13 @@ module BABYLON {
             Tools.Warn("Deprecated. Please use Universal Camera instead.");
             super(name, position, scene);
         }
+
+        public serialize(): any {
+            var serializationObject = super.serialize();
+
+            serializationObject.type = "GamepadCamera";
+
+            return serializationObject;
+        }
     }
 }

+ 30 - 0
src/Cameras/babylon.stereoscopicCameras.js

@@ -12,6 +12,11 @@ var BABYLON;
             this.interaxialDistance = interaxialDistance;
             this.setCameraRigMode(BABYLON.Camera.RIG_MODE_STEREOSCOPIC_ANAGLYPH, { interaxialDistance: interaxialDistance });
         }
+        AnaglyphFreeCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "AnaglyphFreeCamera";
+            return serializationObject;
+        };
         return AnaglyphFreeCamera;
     })(BABYLON.FreeCamera);
     BABYLON.AnaglyphFreeCamera = AnaglyphFreeCamera;
@@ -21,6 +26,11 @@ var BABYLON;
             _super.call(this, name, alpha, beta, radius, target, scene);
             this.setCameraRigMode(BABYLON.Camera.RIG_MODE_STEREOSCOPIC_ANAGLYPH, { interaxialDistance: interaxialDistance });
         }
+        AnaglyphArcRotateCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "AnaglyphArcRotateCamera";
+            return serializationObject;
+        };
         return AnaglyphArcRotateCamera;
     })(BABYLON.ArcRotateCamera);
     BABYLON.AnaglyphArcRotateCamera = AnaglyphArcRotateCamera;
@@ -30,6 +40,11 @@ var BABYLON;
             _super.call(this, name, position, scene);
             this.setCameraRigMode(BABYLON.Camera.RIG_MODE_STEREOSCOPIC_ANAGLYPH, { interaxialDistance: interaxialDistance });
         }
+        AnaglyphGamepadCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "AnaglyphGamepadCamera";
+            return serializationObject;
+        };
         return AnaglyphGamepadCamera;
     })(BABYLON.GamepadCamera);
     BABYLON.AnaglyphGamepadCamera = AnaglyphGamepadCamera;
@@ -39,6 +54,11 @@ var BABYLON;
             _super.call(this, name, position, scene);
             this.setCameraRigMode(isSideBySide ? BABYLON.Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL : BABYLON.Camera.RIG_MODE_STEREOSCOPIC_OVERUNDER, { interaxialDistance: interaxialDistance });
         }
+        StereoscopicFreeCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "StereoscopicFreeCamera";
+            return serializationObject;
+        };
         return StereoscopicFreeCamera;
     })(BABYLON.FreeCamera);
     BABYLON.StereoscopicFreeCamera = StereoscopicFreeCamera;
@@ -48,6 +68,11 @@ var BABYLON;
             _super.call(this, name, alpha, beta, radius, target, scene);
             this.setCameraRigMode(isSideBySide ? BABYLON.Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL : BABYLON.Camera.RIG_MODE_STEREOSCOPIC_OVERUNDER, { interaxialDistance: interaxialDistance });
         }
+        StereoscopicArcRotateCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "StereoscopicArcRotateCamera";
+            return serializationObject;
+        };
         return StereoscopicArcRotateCamera;
     })(BABYLON.ArcRotateCamera);
     BABYLON.StereoscopicArcRotateCamera = StereoscopicArcRotateCamera;
@@ -57,6 +82,11 @@ var BABYLON;
             _super.call(this, name, position, scene);
             this.setCameraRigMode(isSideBySide ? BABYLON.Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL : BABYLON.Camera.RIG_MODE_STEREOSCOPIC_OVERUNDER, { interaxialDistance: interaxialDistance });
         }
+        StereoscopicGamepadCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "StereoscopicGamepadCamera";
+            return serializationObject;
+        };
         return StereoscopicGamepadCamera;
     })(BABYLON.GamepadCamera);
     BABYLON.StereoscopicGamepadCamera = StereoscopicGamepadCamera;

+ 36 - 0
src/Cameras/babylon.stereoscopicCameras.ts

@@ -4,6 +4,12 @@
             super(name, position, scene);
             this.setCameraRigMode(Camera.RIG_MODE_STEREOSCOPIC_ANAGLYPH, { interaxialDistance: interaxialDistance });
         }
+
+        public serialize(): any {
+            var serializationObject = super.serialize();
+            serializationObject.type = "AnaglyphFreeCamera";
+            return serializationObject;
+        }
     }
 
     export class AnaglyphArcRotateCamera extends ArcRotateCamera {
@@ -11,6 +17,12 @@
             super(name, alpha, beta, radius, target, scene);
             this.setCameraRigMode(Camera.RIG_MODE_STEREOSCOPIC_ANAGLYPH, { interaxialDistance: interaxialDistance });
         }
+
+        public serialize(): any {
+            var serializationObject = super.serialize();
+            serializationObject.type = "AnaglyphArcRotateCamera";
+            return serializationObject;
+        }
     }
 
     export class AnaglyphGamepadCamera extends GamepadCamera {
@@ -18,6 +30,12 @@
             super(name, position, scene);
             this.setCameraRigMode(Camera.RIG_MODE_STEREOSCOPIC_ANAGLYPH, { interaxialDistance: interaxialDistance });
         }
+
+        public serialize(): any {
+            var serializationObject = super.serialize();
+            serializationObject.type = "AnaglyphGamepadCamera";
+            return serializationObject;
+        }
     }
     
     export class StereoscopicFreeCamera extends FreeCamera {
@@ -26,6 +44,12 @@
 
             this.setCameraRigMode(isSideBySide ? Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL : Camera.RIG_MODE_STEREOSCOPIC_OVERUNDER, { interaxialDistance: interaxialDistance });
         }
+
+        public serialize(): any {
+            var serializationObject = super.serialize();
+            serializationObject.type = "StereoscopicFreeCamera";
+            return serializationObject;
+        }
     }
 
     export class StereoscopicArcRotateCamera extends ArcRotateCamera {
@@ -33,6 +57,12 @@
             super(name, alpha, beta, radius, target, scene);
             this.setCameraRigMode(isSideBySide ? Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL : Camera.RIG_MODE_STEREOSCOPIC_OVERUNDER, { interaxialDistance: interaxialDistance });
         }
+
+        public serialize(): any {
+            var serializationObject = super.serialize();
+            serializationObject.type = "StereoscopicArcRotateCamera";
+            return serializationObject;
+        }
     }
 
     export class StereoscopicGamepadCamera extends GamepadCamera {
@@ -40,5 +70,11 @@
             super(name, position, scene);
             this.setCameraRigMode(isSideBySide ? Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL : Camera.RIG_MODE_STEREOSCOPIC_OVERUNDER, { interaxialDistance: interaxialDistance });
         }
+
+        public serialize(): any {
+            var serializationObject = super.serialize();
+            serializationObject.type = "StereoscopicGamepadCamera";
+            return serializationObject;
+        }
     }
 } 

+ 1 - 0
src/Cameras/babylon.targetCamera.js

@@ -243,6 +243,7 @@ var BABYLON;
         TargetCamera.prototype.serialize = function () {
             var serializationObject = _super.prototype.serialize.call(this);
             serializationObject.speed = this.speed;
+            serializationObject.type = "TargetCamera";
             if (this.rotation) {
                 serializationObject.rotation = this.rotation.asArray();
             }

+ 1 - 0
src/Cameras/babylon.targetCamera.ts

@@ -300,6 +300,7 @@
         public serialize(): any {
             var serializationObject = super.serialize();
             serializationObject.speed = this.speed;
+            serializationObject.type = "TargetCamera";
 
             if (this.rotation) {
                 serializationObject.rotation = this.rotation.asArray();

+ 5 - 0
src/Cameras/babylon.touchCamera.js

@@ -113,6 +113,11 @@ var BABYLON;
             }
             _super.prototype._checkInputs.call(this);
         };
+        TouchCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "TouchCamera";
+            return serializationObject;
+        };
         return TouchCamera;
     })(BABYLON.FreeCamera);
     BABYLON.TouchCamera = TouchCamera;

+ 8 - 0
src/Cameras/babylon.touchCamera.ts

@@ -145,5 +145,13 @@ module BABYLON {
 
             super._checkInputs();
         }
+
+        public serialize(): any {
+            var serializationObject = super.serialize();
+
+            serializationObject.type = "TouchCamera";
+
+            return serializationObject;
+        }
     }
 }

+ 5 - 0
src/Cameras/babylon.universalCamera.js

@@ -51,6 +51,11 @@ var BABYLON;
             this._gamepads.dispose();
             _super.prototype.dispose.call(this);
         };
+        UniversalCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "UniversalCamera";
+            return serializationObject;
+        };
         return UniversalCamera;
     })(BABYLON.TouchCamera);
     BABYLON.UniversalCamera = UniversalCamera;

+ 8 - 0
src/Cameras/babylon.universalCamera.ts

@@ -54,5 +54,13 @@ module BABYLON {
             this._gamepads.dispose();
             super.dispose();
         }
+
+        public serialize(): any {
+            var serializationObject = super.serialize();
+
+            serializationObject.type = "UniversalCamera";
+
+            return serializationObject;
+        }
     }
 }

+ 5 - 0
src/Cameras/babylon.virtualJoysticksCamera.js

@@ -45,6 +45,11 @@ var BABYLON;
             this._leftjoystick.releaseCanvas();
             _super.prototype.dispose.call(this);
         };
+        VirtualJoysticksCamera.prototype.serialize = function () {
+            var serializationObject = _super.prototype.serialize.call(this);
+            serializationObject.type = "VirtualJoysticksCamera";
+            return serializationObject;
+        };
         return VirtualJoysticksCamera;
     })(BABYLON.FreeCamera);
     BABYLON.VirtualJoysticksCamera = VirtualJoysticksCamera;

+ 8 - 0
src/Cameras/babylon.virtualJoysticksCamera.ts

@@ -46,5 +46,13 @@
             this._leftjoystick.releaseCanvas();
             super.dispose();
         }
+
+        public serialize(): any {
+            var serializationObject = super.serialize();
+
+            serializationObject.type = "VirtualJoysticksCamera";
+
+            return serializationObject;
+        }
     }
 }

+ 0 - 6
src/Tools/babylon.tools.js

@@ -30,12 +30,6 @@ var BABYLON;
             }
             return fn;
         };
-        Tools.GetConstructorName = function (obj) {
-            var str = (obj.prototype ? obj.prototype.constructor : obj.constructor).toString();
-            var cname = str.match(/function\s(\w*)/)[1];
-            var aliases = ["", "anonymous", "Anonymous"];
-            return aliases.indexOf(cname) > -1 ? "Function" : cname;
-        };
         Tools.ToHex = function (i) {
             var str = i.toString(16);
             if (i <= 15) {

+ 0 - 7
src/Tools/babylon.tools.ts

@@ -47,13 +47,6 @@
             return fn;
         }
 
-        public static GetConstructorName(obj) {
-            var str = (obj.prototype ? obj.prototype.constructor : obj.constructor).toString();
-            var cname = str.match(/function\s(\w*)/)[1];
-            var aliases = ["", "anonymous", "Anonymous"];
-            return aliases.indexOf(cname) > -1 ? "Function" : cname;
-        }
-
         public static ToHex(i: number): string {
             var str = i.toString(16);