Browse Source

Merge branch 'master' of https://github.com/BabylonJS/Babylon.js

Conflicts:
	src/Loading/Plugins/babylon.babylonFileLoader.ts
	src/Mesh/babylon.mesh.js
	src/Mesh/babylon.mesh.ts
	src/Tools/babylon.sceneSerializer.ts
David Catuhe 10 years ago
parent
commit
683aaa32a8

+ 139 - 138
Tools/Gulp/config.json

@@ -4,160 +4,161 @@
     "minFilename": "babylon.js",
     "minFilename": "babylon.js",
     "minNoWorkerFilename": "babylon.noworker.js",
     "minNoWorkerFilename": "babylon.noworker.js",
     "declarationFilename": "babylon.d.ts",
     "declarationFilename": "babylon.d.ts",
-    "outputDirectory": "../../"
+    "outputDirectory": "../../dist/",
+	"srcOutputDirectory": "../../src/"
   },
   },
   "core": {
   "core": {
     "typescript": [
     "typescript": [
-      "../../Babylon/**/*.ts",
-      "../../References/**/*.d.ts"
+      "../../src/**/*.ts",
+      "../../external references/**/*.d.ts"
     ],
     ],
     "files": [
     "files": [
-      "../../Babylon/Math/babylon.math.js",
-      "../../Babylon/Tools/babylon.database.js",
-      "../../Babylon/Tools/babylon.tools.tga.js",
-      "../../Babylon/Tools/babylon.tools.dds.js",
-      "../../Babylon/Tools/babylon.smartArray.js",
-      "../../Babylon/Tools/babylon.smartCollection.js",
-      "../../Babylon/Tools/babylon.tools.js",
-      "../../Babylon/babylon.engine.js",
-      "../../Babylon/babylon.node.js",
-      "../../Babylon/Tools/babylon.filesInput.js",
-      "../../Babylon/Collisions/babylon.pickingInfo.js",
-      "../../Babylon/Culling/babylon.boundingSphere.js",
-      "../../Babylon/Culling/babylon.boundingBox.js",
-      "../../Babylon/Culling/babylon.boundingInfo.js",
-      "../../Babylon/Mesh/babylon.abstractMesh.js",
-      "../../Babylon/Lights/babylon.light.js",
-      "../../Babylon/Lights/babylon.pointLight.js",
-      "../../Babylon/Lights/babylon.spotLight.js",
-      "../../Babylon/Lights/babylon.hemisphericLight.js",
-      "../../Babylon/Lights/babylon.directionalLight.js",
-      "../../Babylon/Lights/Shadows/babylon.shadowGenerator.js",
-      "../../Babylon/Collisions/babylon.collider.js",
-      "../../Babylon/Collisions/babylon.collisionCoordinator.js",
-      "../../Babylon/Cameras/babylon.camera.js",
-      "../../Babylon/Cameras/babylon.targetCamera.js",
-      "../../Babylon/Cameras/babylon.freeCamera.js",
-      "../../Babylon/Cameras/babylon.followCamera.js",
-      "../../Babylon/Cameras/babylon.touchCamera.js",
-      "../../Babylon/Cameras/babylon.arcRotateCamera.js",
-      "../../Babylon/Cameras/babylon.deviceOrientationCamera.js",
-      "../../Babylon/Tools/babylon.gamepads.js",
-      "../../Babylon/Cameras/babylon.gamepadCamera.js",
-      "../../Babylon/Rendering/babylon.renderingManager.js",
-      "../../Babylon/Rendering/babylon.renderingGroup.js",
-      "../../Babylon/babylon.scene.js",
-      "../../Babylon/Mesh/babylon.vertexBuffer.js",
-      "../../Babylon/Mesh/babylon.instancedMesh.js",
-      "../../Babylon/Mesh/babylon.mesh.js",
-      "../../Babylon/Mesh/babylon.subMesh.js",
-      "../../Babylon/Materials/Textures/babylon.baseTexture.js",
-      "../../Babylon/Materials/Textures/babylon.texture.js",
-      "../../Babylon/Materials/Textures/babylon.cubeTexture.js",
-      "../../Babylon/Materials/Textures/babylon.renderTargetTexture.js",
-      "../../Babylon/Materials/Textures/Procedurals/babylon.proceduralTexture.js",
-      "../../Babylon/Materials/Textures/babylon.mirrorTexture.js",
-      "../../Babylon/Materials/Textures/babylon.dynamicTexture.js",
-      "../../Babylon/Materials/Textures/babylon.videoTexture.js",
-      "../../Babylon/Materials/Textures/Procedurals/babylon.customProceduralTexture.js",
-      "../../Babylon/Materials/Textures/babylon.proceduralTexture.js",
-      "../../Babylon/Materials/Textures/Procedurals/babylon.standardProceduralTexture.js",
-      "../../Babylon/Materials/babylon.effect.js",
-      "../../Babylon/Materials/babylon.material.js",
-      "../../Babylon/Materials/babylon.standardMaterial.js",
-      "../../Babylon/Materials/babylon.multiMaterial.js",
-      "../../Babylon/Loading/babylon.sceneLoader.js",
-      "../../Babylon/Loading/Plugins/babylon.babylonFileLoader.js",
-      "../../Babylon/Sprites/babylon.spriteManager.js",
-      "../../Babylon/Sprites/babylon.sprite.js",
-      "../../Babylon/Layer/babylon.layer.js",
-      "../../Babylon/Particles/babylon.particle.js",
-      "../../Babylon/Particles/babylon.particleSystem.js",
-      "../../Babylon/Animations/babylon.animation.js",
-      "../../Babylon/Animations/babylon.animatable.js",
-      "../../Babylon/Animations/babylon.easing.js",
-      "../../Babylon/Culling/Octrees/babylon.octree.js",
-      "../../Babylon/Culling/Octrees/babylon.octreeBlock.js",
-      "../../Babylon/Bones/babylon.bone.js",
-      "../../Babylon/Bones/babylon.skeleton.js",
-      "../../Babylon/Bones/babylon.skeleton.js",
-      "../../Babylon/PostProcess/babylon.postProcess.js",
-      "../../Babylon/PostProcess/babylon.postProcessManager.js",
-      "../../Babylon/PostProcess/babylon.passPostProcess.js",
-      "../../Babylon/PostProcess/babylon.blurPostProcess.js",
-      "../../Babylon/PostProcess/babylon.refractionPostProcess.js",
-      "../../Babylon/PostProcess/babylon.blackAndWhitePostProcess.js",
-      "../../Babylon/PostProcess/babylon.convolutionPostProcess.js",
-      "../../Babylon/PostProcess/babylon.filterPostProcess.js",
-      "../../Babylon/PostProcess/babylon.fxaaPostProcess.js",
-      "../../Babylon/PostProcess/babylon.stereoscopicInterlacePostProcess.js",
-      "../../Babylon/LensFlare/babylon.lensFlare.js",
-      "../../Babylon/LensFlare/babylon.lensFlareSystem.js",
-      "../../Babylon/Physics/Plugins/babylon.cannonJSPlugin.js",
-      "../../Babylon/Physics/Plugins/babylon.oimoJSPlugin.js",
-      "../../Babylon/Physics/babylon.physicsEngine.js",
-      "../../Babylon/Tools/babylon.sceneSerializer.js",
-      "../../Babylon/Mesh/babylon.csg.js",
-      "../../Babylon/PostProcess/babylon.vrDistortionCorrectionPostProcess.js",
-      "../../Babylon/Tools/babylon.virtualJoystick.js",
-      "../../Babylon/Cameras/babylon.virtualJoysticksCamera.js",
-      "../../Babylon/Materials/babylon.shaderMaterial.js",
-      "../../Babylon/Mesh/babylon.mesh.vertexData.js",
-      "../../Babylon/PostProcess/babylon.anaglyphPostProcess.js",
-      "../../Babylon/Tools/babylon.tags.js",
-      "../../Babylon/Tools/babylon.andOrNotEvaluator.js",
-      "../../Babylon/PostProcess/RenderPipeline/babylon.postProcessRenderPass.js",
-      "../../Babylon/PostProcess/RenderPipeline/babylon.postProcessRenderEffect.js",
-      "../../Babylon/PostProcess/RenderPipeline/babylon.postProcessRenderPipeline.js",
-      "../../Babylon/PostProcess/RenderPipeline/babylon.postProcessRenderPipelineManager.js",
-      "../../Babylon/PostProcess/babylon.displayPassPostProcess.js",
-      "../../Babylon/Rendering/babylon.boundingBoxRenderer.js",
-      "../../Babylon/Actions/babylon.condition.js",
-      "../../Babylon/Actions/babylon.action.js",
-      "../../Babylon/Actions/babylon.actionManager.js",
-      "../../Babylon/Actions/babylon.interpolateValueAction.js",
-      "../../Babylon/Actions/babylon.directActions.js",
-      "../../Babylon/Mesh/babylon.geometry.js",
-      "../../Babylon/Mesh/babylon.groundMesh.js",
-      "../../Babylon/Mesh/babylon.instancedMesh.js",
-      "../../Babylon/Mesh/babylon.linesMesh.js",
-      "../../Babylon/Rendering/babylon.outlineRenderer.js",
-      "../../Babylon/Tools/babylon.assetsManager.js",
-      "../../Babylon/Cameras/VR/babylon.vrDeviceOrientationCamera.js",
-      "../../Babylon/Cameras/VR/babylon.webVRCamera.js",
-      "../../Babylon/Tools/babylon.sceneOptimizer.js",
-      "../../Babylon/Mesh/babylon.meshLODLevel.js",
-      "../../Babylon/Audio/babylon.audioEngine.js",
-      "../../Babylon/Audio/babylon.sound.js",
-      "../../Babylon/Audio/babylon.soundtrack.js",
-      "../../Babylon/Debug/babylon.debugLayer.js",
-      "../../Babylon/Materials/Textures/babylon.rawTexture.js",
-      "../../Babylon/Mesh/babylon.polygonMesh.js",
-      "../../Babylon/Mesh/babylon.meshSimplification.js",
-      "../../Babylon/Audio/babylon.analyser.js",
-      "../../Babylon/Rendering/babylon.depthRenderer.js",
-      "../../Babylon/PostProcess/babylon.ssaoRenderingPipeline.js",
-      "../../Babylon/PostProcess/babylon.volumetricLightScatteringPostProcess.js",
-      "../../Babylon/PostProcess/babylon.lensRenderingPipeline.js",
-      "../../Babylon/PostProcess/babylon.colorCorrectionPostProcess.js",
-      "../../Babylon/Cameras/babylon.stereoscopicCameras.js",
-      "../../Babylon/PostProcess/babylon.hdrRenderingPipeline.js"
+      "../../src/Math/babylon.math.js",
+      "../../src/Tools/babylon.database.js",
+      "../../src/Tools/babylon.tools.tga.js",
+      "../../src/Tools/babylon.tools.dds.js",
+      "../../src/Tools/babylon.smartArray.js",
+      "../../src/Tools/babylon.smartCollection.js",
+      "../../src/Tools/babylon.tools.js",
+      "../../src/babylon.engine.js",
+      "../../src/babylon.node.js",
+      "../../src/Tools/babylon.filesInput.js",
+      "../../src/Collisions/babylon.pickingInfo.js",
+      "../../src/Culling/babylon.boundingSphere.js",
+      "../../src/Culling/babylon.boundingBox.js",
+      "../../src/Culling/babylon.boundingInfo.js",
+      "../../src/Mesh/babylon.abstractMesh.js",
+      "../../src/Lights/babylon.light.js",
+      "../../src/Lights/babylon.pointLight.js",
+      "../../src/Lights/babylon.spotLight.js",
+      "../../src/Lights/babylon.hemisphericLight.js",
+      "../../src/Lights/babylon.directionalLight.js",
+      "../../src/Lights/Shadows/babylon.shadowGenerator.js",
+      "../../src/Collisions/babylon.collider.js",
+      "../../src/Collisions/babylon.collisionCoordinator.js",
+      "../../src/Cameras/babylon.camera.js",
+      "../../src/Cameras/babylon.targetCamera.js",
+      "../../src/Cameras/babylon.freeCamera.js",
+      "../../src/Cameras/babylon.followCamera.js",
+      "../../src/Cameras/babylon.touchCamera.js",
+      "../../src/Cameras/babylon.arcRotateCamera.js",
+      "../../src/Cameras/babylon.deviceOrientationCamera.js",
+      "../../src/Tools/babylon.gamepads.js",
+      "../../src/Cameras/babylon.gamepadCamera.js",
+      "../../src/Rendering/babylon.renderingManager.js",
+      "../../src/Rendering/babylon.renderingGroup.js",
+      "../../src/babylon.scene.js",
+      "../../src/Mesh/babylon.vertexBuffer.js",
+      "../../src/Mesh/babylon.instancedMesh.js",
+      "../../src/Mesh/babylon.mesh.js",
+      "../../src/Mesh/babylon.subMesh.js",
+      "../../src/Materials/Textures/babylon.baseTexture.js",
+      "../../src/Materials/Textures/babylon.texture.js",
+      "../../src/Materials/Textures/babylon.cubeTexture.js",
+      "../../src/Materials/Textures/babylon.renderTargetTexture.js",
+      "../../src/Materials/Textures/Procedurals/babylon.proceduralTexture.js",
+      "../../src/Materials/Textures/babylon.mirrorTexture.js",
+      "../../src/Materials/Textures/babylon.dynamicTexture.js",
+      "../../src/Materials/Textures/babylon.videoTexture.js",
+      "../../src/Materials/Textures/Procedurals/babylon.customProceduralTexture.js",
+      "../../src/Materials/Textures/babylon.proceduralTexture.js",
+      "../../src/Materials/Textures/Procedurals/babylon.standardProceduralTexture.js",
+      "../../src/Materials/babylon.effect.js",
+      "../../src/Materials/babylon.material.js",
+      "../../src/Materials/babylon.standardMaterial.js",
+      "../../src/Materials/babylon.multiMaterial.js",
+      "../../src/Loading/babylon.sceneLoader.js",
+      "../../src/Loading/Plugins/babylon.babylonFileLoader.js",
+      "../../src/Sprites/babylon.spriteManager.js",
+      "../../src/Sprites/babylon.sprite.js",
+      "../../src/Layer/babylon.layer.js",
+      "../../src/Particles/babylon.particle.js",
+      "../../src/Particles/babylon.particleSystem.js",
+      "../../src/Animations/babylon.animation.js",
+      "../../src/Animations/babylon.animatable.js",
+      "../../src/Animations/babylon.easing.js",
+      "../../src/Culling/Octrees/babylon.octree.js",
+      "../../src/Culling/Octrees/babylon.octreeBlock.js",
+      "../../src/Bones/babylon.bone.js",
+      "../../src/Bones/babylon.skeleton.js",
+      "../../src/Bones/babylon.skeleton.js",
+      "../../src/PostProcess/babylon.postProcess.js",
+      "../../src/PostProcess/babylon.postProcessManager.js",
+      "../../src/PostProcess/babylon.passPostProcess.js",
+      "../../src/PostProcess/babylon.blurPostProcess.js",
+      "../../src/PostProcess/babylon.refractionPostProcess.js",
+      "../../src/PostProcess/babylon.blackAndWhitePostProcess.js",
+      "../../src/PostProcess/babylon.convolutionPostProcess.js",
+      "../../src/PostProcess/babylon.filterPostProcess.js",
+      "../../src/PostProcess/babylon.fxaaPostProcess.js",
+      "../../src/PostProcess/babylon.stereoscopicInterlacePostProcess.js",
+      "../../src/LensFlare/babylon.lensFlare.js",
+      "../../src/LensFlare/babylon.lensFlareSystem.js",
+      "../../src/Physics/Plugins/babylon.cannonJSPlugin.js",
+      "../../src/Physics/Plugins/babylon.oimoJSPlugin.js",
+      "../../src/Physics/babylon.physicsEngine.js",
+      "../../src/Tools/babylon.sceneSerializer.js",
+      "../../src/Mesh/babylon.csg.js",
+      "../../src/PostProcess/babylon.vrDistortionCorrectionPostProcess.js",
+      "../../src/Tools/babylon.virtualJoystick.js",
+      "../../src/Cameras/babylon.virtualJoysticksCamera.js",
+      "../../src/Materials/babylon.shaderMaterial.js",
+      "../../src/Mesh/babylon.mesh.vertexData.js",
+      "../../src/PostProcess/babylon.anaglyphPostProcess.js",
+      "../../src/Tools/babylon.tags.js",
+      "../../src/Tools/babylon.andOrNotEvaluator.js",
+      "../../src/PostProcess/RenderPipeline/babylon.postProcessRenderPass.js",
+      "../../src/PostProcess/RenderPipeline/babylon.postProcessRenderEffect.js",
+      "../../src/PostProcess/RenderPipeline/babylon.postProcessRenderPipeline.js",
+      "../../src/PostProcess/RenderPipeline/babylon.postProcessRenderPipelineManager.js",
+      "../../src/PostProcess/babylon.displayPassPostProcess.js",
+      "../../src/Rendering/babylon.boundingBoxRenderer.js",
+      "../../src/Actions/babylon.condition.js",
+      "../../src/Actions/babylon.action.js",
+      "../../src/Actions/babylon.actionManager.js",
+      "../../src/Actions/babylon.interpolateValueAction.js",
+      "../../src/Actions/babylon.directActions.js",
+      "../../src/Mesh/babylon.geometry.js",
+      "../../src/Mesh/babylon.groundMesh.js",
+      "../../src/Mesh/babylon.instancedMesh.js",
+      "../../src/Mesh/babylon.linesMesh.js",
+      "../../src/Rendering/babylon.outlineRenderer.js",
+      "../../src/Tools/babylon.assetsManager.js",
+      "../../src/Cameras/VR/babylon.vrDeviceOrientationCamera.js",
+      "../../src/Cameras/VR/babylon.webVRCamera.js",
+      "../../src/Tools/babylon.sceneOptimizer.js",
+      "../../src/Mesh/babylon.meshLODLevel.js",
+      "../../src/Audio/babylon.audioEngine.js",
+      "../../src/Audio/babylon.sound.js",
+      "../../src/Audio/babylon.soundtrack.js",
+      "../../src/Debug/babylon.debugLayer.js",
+      "../../src/Materials/Textures/babylon.rawTexture.js",
+      "../../src/Mesh/babylon.polygonMesh.js",
+      "../../src/Mesh/babylon.meshSimplification.js",
+      "../../src/Audio/babylon.analyser.js",
+      "../../src/Rendering/babylon.depthRenderer.js",
+      "../../src/PostProcess/babylon.ssaoRenderingPipeline.js",
+      "../../src/PostProcess/babylon.volumetricLightScatteringPostProcess.js",
+      "../../src/PostProcess/babylon.lensRenderingPipeline.js",
+      "../../src/PostProcess/babylon.colorCorrectionPostProcess.js",
+      "../../src/Cameras/babylon.stereoscopicCameras.js",
+      "../../src/PostProcess/babylon.hdrRenderingPipeline.js"
     ]
     ]
   },
   },
   "shadersDirectories": [
   "shadersDirectories": [
     {
     {
       "variable": "BABYLON.Effect.ShadersStore",
       "variable": "BABYLON.Effect.ShadersStore",
-      "files": "../../Babylon/Shaders/*.fx"
+      "files": "../../src/Shaders/*.fx"
     }
     }
   ],
   ],
   "workers": [
   "workers": [
     {
     {
       "variable": "BABYLON.CollisionWorker",
       "variable": "BABYLON.CollisionWorker",
       "files": [
       "files": [
-        "../../Babylon/Collisions/babylon.collider.js",
-        "../../Babylon/Collisions/babylon.collisionWorker.js",
-        "../../Babylon/Collisions/babylon.collisionCoordinator.js",
-        "../../Babylon/Math/babylon.math.js"
+        "../../src/Collisions/babylon.collider.js",
+        "../../src/Collisions/babylon.collisionWorker.js",
+        "../../src/Collisions/babylon.collisionCoordinator.js",
+        "../../src/Math/babylon.math.js"
       ]
       ]
     }
     }
   ],
   ],

+ 4 - 4
Tools/Gulp/gulpfile.js

@@ -56,7 +56,7 @@ gulp.task('typescript-compile', function() {
             .pipe(concat(config.build.declarationFilename))
             .pipe(concat(config.build.declarationFilename))
             .pipe(gulp.dest(config.build.outputDirectory)),
             .pipe(gulp.dest(config.build.outputDirectory)),
         tsResult.js
         tsResult.js
-            .pipe(gulp.dest('../../Babylon/'))
+            .pipe(gulp.dest(config.build.srcOutputDirectory))
     ]);
     ]);
 });
 });
 
 
@@ -71,7 +71,7 @@ gulp.task('typescript-sourcemaps', function() {
                 }));
                 }));
     return tsResult.js
     return tsResult.js
             .pipe(sourcemaps.write("./")) // sourcemaps are written.
             .pipe(sourcemaps.write("./")) // sourcemaps are written.
-            .pipe(gulp.dest('../../Babylon/'));
+            .pipe(gulp.dest(config.build.srcOutputDirectory));
 });
 });
 
 
 gulp.task("buildNoWorker", ["shaders"], function () {
 gulp.task("buildNoWorker", ["shaders"], function () {
@@ -118,12 +118,12 @@ gulp.task('default', function() {
  * Watch task, will call the default task if a js file is updated.
  * Watch task, will call the default task if a js file is updated.
  */
  */
 gulp.task('watch', function() {
 gulp.task('watch', function() {
-  gulp.watch('../../Babylon/**/*.js', ['build']);
+  gulp.watch(config.core.typescript, ['build']);
 });
 });
 
 
 /**
 /**
  * Watch typescript task, will call the default typescript task if a typescript file is updated.
  * Watch typescript task, will call the default typescript task if a typescript file is updated.
  */
  */
 gulp.task('watch-typescript', function() {
 gulp.task('watch-typescript', function() {
-  gulp.watch("../../Babylon/**/*.ts", ["typescript-compile", "build"]);
+  gulp.watch(config.core.typescript, ["typescript-compile", "build"]);
 });
 });

File diff suppressed because it is too large
+ 12 - 11
dist/preview release - alpha/babylon.2.2.js


+ 63 - 65
dist/preview release - alpha/babylon.2.2.max.js

@@ -6342,7 +6342,6 @@ var BABYLON;
             this._activeTexturesCache = [];
             this._activeTexturesCache = [];
             texture.isReady = true;
             texture.isReady = true;
         };
         };
-        ;
         Engine.prototype.createRawTexture = function (data, width, height, format, generateMipMaps, invertY, samplingMode) {
         Engine.prototype.createRawTexture = function (data, width, height, format, generateMipMaps, invertY, samplingMode) {
             var texture = this._gl.createTexture();
             var texture = this._gl.createTexture();
             texture._baseWidth = width;
             texture._baseWidth = width;
@@ -6904,8 +6903,8 @@ var BABYLON;
         // Updatable statics so stick with vars here
         // Updatable statics so stick with vars here
         Engine.Epsilon = 0.001;
         Engine.Epsilon = 0.001;
         Engine.CollisionsEpsilon = 0.001;
         Engine.CollisionsEpsilon = 0.001;
-        Engine.CodeRepository = "Babylon/";
-        Engine.ShadersRepository = "Babylon/Shaders/";
+        Engine.CodeRepository = "src/";
+        Engine.ShadersRepository = "src/Shaders/";
         return Engine;
         return Engine;
     })();
     })();
     BABYLON.Engine = Engine;
     BABYLON.Engine = Engine;
@@ -14900,7 +14899,10 @@ var BABYLON;
             this.scaling.copyFromFloats(1, 1, 1);
             this.scaling.copyFromFloats(1, 1, 1);
             this.position.copyFromFloats(0, 0, 0);
             this.position.copyFromFloats(0, 0, 0);
             this.rotation.copyFromFloats(0, 0, 0);
             this.rotation.copyFromFloats(0, 0, 0);
-            this.rotationQuaternion = BABYLON.Quaternion.Identity();
+            //only if quaternion is already set
+            if (this.rotationQuaternion) {
+                this.rotationQuaternion = BABYLON.Quaternion.Identity();
+            }
             this._worldMatrix = BABYLON.Matrix.Identity();
             this._worldMatrix = BABYLON.Matrix.Identity();
         };
         };
         // Cache
         // Cache
@@ -19879,6 +19881,9 @@ var BABYLON;
                                         });
                                         });
                                     }
                                     }
                                 });
                                 });
+                                if (!found) {
+                                    BABYLON.Tools.Warn("Geometry not found for mesh " + parsedMesh.id);
+                                }
                             }
                             }
                         }
                         }
                         // Material ?
                         // Material ?
@@ -19902,7 +19907,9 @@ var BABYLON;
                             }
                             }
                             if (!materialFound) {
                             if (!materialFound) {
                                 loadedMaterialsIds.push(parsedMesh.materialId);
                                 loadedMaterialsIds.push(parsedMesh.materialId);
-                                parseMaterialById(parsedMesh.materialId, parsedData, scene, rootUrl);
+                                if (!parseMaterialById(parsedMesh.materialId, parsedData, scene, rootUrl)) {
+                                    BABYLON.Tools.Warn("Material not found for mesh " + parsedMesh.id);
+                                }
                             }
                             }
                         }
                         }
                         // Skeleton ?
                         // Skeleton ?
@@ -21736,10 +21743,13 @@ var BABYLON;
     BABYLON.OctreeBlock = OctreeBlock;
     BABYLON.OctreeBlock = OctreeBlock;
 })(BABYLON || (BABYLON = {}));
 })(BABYLON || (BABYLON = {}));
 //# sourceMappingURL=babylon.octreeBlock.js.map
 //# sourceMappingURL=babylon.octreeBlock.js.map
+
 var BABYLON;
 var BABYLON;
 (function (BABYLON) {
 (function (BABYLON) {
-    var Bone = (function () {
+    var Bone = (function (_super) {
+        __extends(Bone, _super);
         function Bone(name, skeleton, parentBone, matrix) {
         function Bone(name, skeleton, parentBone, matrix) {
+            _super.call(this, name, skeleton.getScene());
             this.name = name;
             this.name = name;
             this.children = new Array();
             this.children = new Array();
             this.animations = new Array();
             this.animations = new Array();
@@ -21806,7 +21816,7 @@ var BABYLON;
             this._skeleton._markAsDirty();
             this._skeleton._markAsDirty();
         };
         };
         return Bone;
         return Bone;
-    })();
+    })(BABYLON.Node);
     BABYLON.Bone = Bone;
     BABYLON.Bone = Bone;
 })(BABYLON || (BABYLON = {}));
 })(BABYLON || (BABYLON = {}));
 //# sourceMappingURL=babylon.bone.js.map
 //# sourceMappingURL=babylon.bone.js.map
@@ -21830,6 +21840,9 @@ var BABYLON;
         Skeleton.prototype.getTransformMatrices = function () {
         Skeleton.prototype.getTransformMatrices = function () {
             return this._transformMatrices;
             return this._transformMatrices;
         };
         };
+        Skeleton.prototype.getScene = function () {
+            return this._scene;
+        };
         // Methods
         // Methods
         Skeleton.prototype._markAsDirty = function () {
         Skeleton.prototype._markAsDirty = function () {
             this._isDirty = true;
             this._isDirty = true;
@@ -23658,7 +23671,7 @@ var BABYLON;
             var geometryId = geometry.id;
             var geometryId = geometry.id;
             serializationObject.geometryId = geometryId;
             serializationObject.geometryId = geometryId;
             if (!mesh.getScene().getGeometryByID(geometryId)) {
             if (!mesh.getScene().getGeometryByID(geometryId)) {
-                // geometry was in the memory but not added to the scene, nevertheless it's better to serialize too be able to reload the mesh with its geometry
+                // geometry was in the memory but not added to the scene, nevertheless it's better to serialize to be able to reload the mesh with its geometry
                 serializeGeometry(geometry, serializationScene.geometries);
                 serializeGeometry(geometry, serializationScene.geometries);
             }
             }
             // SubMeshes
             // SubMeshes
@@ -23820,6 +23833,46 @@ var BABYLON;
             }
             }
             return serializationObject;
             return serializationObject;
         };
         };
+        SceneSerializer.SerializeMesh = function (mesh) {
+            var serializationObject = {};
+            //only works if the mesh is already loaded
+            if (mesh.delayLoadState === BABYLON.Engine.DELAYLOADSTATE_LOADED || mesh.delayLoadState === BABYLON.Engine.DELAYLOADSTATE_NONE) {
+                //serialize material
+                if (mesh.material) {
+                    if (mesh.material instanceof BABYLON.StandardMaterial) {
+                        serializationObject.materials = [];
+                        serializationObject.materials.push(serializeMaterial(mesh.material));
+                    }
+                    else if (mesh.material instanceof BABYLON.MultiMaterial) {
+                        serializationObject.multiMaterials = [];
+                        serializationObject.multiMaterials.push(serializeMultiMaterial(mesh.material));
+                    }
+                }
+                //serialize geometry
+                var geometry = mesh._geometry;
+                if (geometry) {
+                    serializationObject.geometries = {};
+                    serializationObject.geometries.boxes = [];
+                    serializationObject.geometries.spheres = [];
+                    serializationObject.geometries.cylinders = [];
+                    serializationObject.geometries.toruses = [];
+                    serializationObject.geometries.grounds = [];
+                    serializationObject.geometries.planes = [];
+                    serializationObject.geometries.torusKnots = [];
+                    serializationObject.geometries.vertexData = [];
+                    serializeGeometry(geometry, serializationObject.geometries);
+                }
+                // Skeletons
+                if (mesh.skeleton) {
+                    serializationObject.skeletons = [];
+                    serializationObject.skeletons.push(serializeSkeleton(mesh.skeleton));
+                }
+                //serialize the actual mesh
+                serializationObject.meshes = [];
+                serializationObject.meshes.push(serializeMesh(mesh, serializationObject));
+            }
+            return serializationObject;
+        };
         return SceneSerializer;
         return SceneSerializer;
     })();
     })();
     BABYLON.SceneSerializer = SceneSerializer;
     BABYLON.SceneSerializer = SceneSerializer;
@@ -29956,61 +30009,6 @@ var BABYLON;
 
 
 var BABYLON;
 var BABYLON;
 (function (BABYLON) {
 (function (BABYLON) {
-    var RawTexture = (function (_super) {
-        __extends(RawTexture, _super);
-        function RawTexture(data, width, height, format, scene, generateMipMaps, invertY, samplingMode) {
-            if (generateMipMaps === void 0) { generateMipMaps = true; }
-            if (invertY === void 0) { invertY = false; }
-            if (samplingMode === void 0) { samplingMode = BABYLON.Texture.TRILINEAR_SAMPLINGMODE; }
-            _super.call(this, null, scene, !generateMipMaps, invertY);
-            this.format = format;
-            this._texture = scene.getEngine().createRawTexture(data, width, height, format, generateMipMaps, invertY, samplingMode);
-            this.wrapU = BABYLON.Texture.CLAMP_ADDRESSMODE;
-            this.wrapV = BABYLON.Texture.CLAMP_ADDRESSMODE;
-        }
-        RawTexture.prototype.update = function (data) {
-            this.getScene().getEngine().updateRawTexture(this._texture, data, this.format, this._invertY);
-        };
-        ;
-        // Statics
-        RawTexture.CreateLuminanceTexture = function (data, width, height, scene, generateMipMaps, invertY, samplingMode) {
-            if (generateMipMaps === void 0) { generateMipMaps = true; }
-            if (invertY === void 0) { invertY = false; }
-            if (samplingMode === void 0) { samplingMode = BABYLON.Texture.TRILINEAR_SAMPLINGMODE; }
-            return new RawTexture(data, width, height, BABYLON.Engine.TEXTUREFORMAT_LUMINANCE, scene, generateMipMaps, invertY, samplingMode);
-        };
-        RawTexture.CreateLuminanceAlphaTexture = function (data, width, height, scene, generateMipMaps, invertY, samplingMode) {
-            if (generateMipMaps === void 0) { generateMipMaps = true; }
-            if (invertY === void 0) { invertY = false; }
-            if (samplingMode === void 0) { samplingMode = BABYLON.Texture.TRILINEAR_SAMPLINGMODE; }
-            return new RawTexture(data, width, height, BABYLON.Engine.TEXTUREFORMAT_LUMINANCE_ALPHA, scene, generateMipMaps, invertY, samplingMode);
-        };
-        RawTexture.CreateAlphaTexture = function (data, width, height, scene, generateMipMaps, invertY, samplingMode) {
-            if (generateMipMaps === void 0) { generateMipMaps = true; }
-            if (invertY === void 0) { invertY = false; }
-            if (samplingMode === void 0) { samplingMode = BABYLON.Texture.TRILINEAR_SAMPLINGMODE; }
-            return new RawTexture(data, width, height, BABYLON.Engine.TEXTUREFORMAT_ALPHA, scene, generateMipMaps, invertY, samplingMode);
-        };
-        RawTexture.CreateRGBTexture = function (data, width, height, scene, generateMipMaps, invertY, samplingMode) {
-            if (generateMipMaps === void 0) { generateMipMaps = true; }
-            if (invertY === void 0) { invertY = false; }
-            if (samplingMode === void 0) { samplingMode = BABYLON.Texture.TRILINEAR_SAMPLINGMODE; }
-            return new RawTexture(data, width, height, BABYLON.Engine.TEXTUREFORMAT_RGB, scene, generateMipMaps, invertY, samplingMode);
-        };
-        RawTexture.CreateRGBATexture = function (data, width, height, scene, generateMipMaps, invertY, samplingMode) {
-            if (generateMipMaps === void 0) { generateMipMaps = true; }
-            if (invertY === void 0) { invertY = false; }
-            if (samplingMode === void 0) { samplingMode = BABYLON.Texture.TRILINEAR_SAMPLINGMODE; }
-            return new RawTexture(data, width, height, BABYLON.Engine.TEXTUREFORMAT_RGBA, scene, generateMipMaps, invertY, samplingMode);
-        };
-        return RawTexture;
-    })(BABYLON.Texture);
-    BABYLON.RawTexture = RawTexture;
-})(BABYLON || (BABYLON = {}));
-//# sourceMappingURL=babylon.rawTexture.js.map
-
-var BABYLON;
-(function (BABYLON) {
     var IndexedVector2 = (function (_super) {
     var IndexedVector2 = (function (_super) {
         __extends(IndexedVector2, _super);
         __extends(IndexedVector2, _super);
         function IndexedVector2(original, index) {
         function IndexedVector2(original, index) {
@@ -32130,8 +32128,8 @@ var BABYLON;
                 }
                 }
                 _this._hdrOutputLuminance = BABYLON.Tools.Clamp(_this._hdrOutputLuminance, _this.minimumLuminance, _this.maximumLuminance);
                 _this._hdrOutputLuminance = BABYLON.Tools.Clamp(_this._hdrOutputLuminance, _this.minimumLuminance, _this.maximumLuminance);
                 hdrLastLuminance += scene.getEngine().getDeltaTime();
                 hdrLastLuminance += scene.getEngine().getDeltaTime();
-                effect.setTextureFromPostProcess("textureSampler", _this._originalPostProcess);
-                effect.setTextureFromPostProcess("otherSampler", _this._textureAdderPostProcess);
+                effect.setTextureFromPostProcess("textureSampler", _this._textureAdderPostProcess);
+                effect.setTextureFromPostProcess("otherSampler", _this._originalPostProcess);
                 effect.setFloat("exposure", _this.exposure);
                 effect.setFloat("exposure", _this.exposure);
                 effect.setFloat("avgLuminance", _this._hdrOutputLuminance);
                 effect.setFloat("avgLuminance", _this._hdrOutputLuminance);
                 _this._needUpdate = false;
                 _this._needUpdate = false;

File diff suppressed because it is too large
+ 18 - 17
dist/preview release - alpha/babylon.2.2.noworker.js


+ 2 - 0
dist/preview release - alpha/what's new.md

@@ -2,6 +2,7 @@
   - **Major updates**
   - **Major updates**
     - HDR Rendering pipeline. See [demo here]() [julien-moreau](https://github.com/julien-moreau)
     - HDR Rendering pipeline. See [demo here]() [julien-moreau](https://github.com/julien-moreau)
   - **Updates**
   - **Updates**
+    - Meshes can now be attached to bones [deltakosh](https://github.com/deltakosh)
     - Depth-of-field improvements [PR](https://github.com/BabylonJS/Babylon.js/pull/567) [jahow](https://github.com/jahow)
     - Depth-of-field improvements [PR](https://github.com/BabylonJS/Babylon.js/pull/567) [jahow](https://github.com/jahow)
     - Engine now initialize WebGL with preserveDrawingBuffer = false by default [deltakosh](https://github.com/deltakosh)
     - Engine now initialize WebGL with preserveDrawingBuffer = false by default [deltakosh](https://github.com/deltakosh)
     - withEpsilon with a user defined epsilon [PR](https://github.com/BabylonJS/Babylon.js/pull/573) [RaananW](https://github.com/RaananW)
     - withEpsilon with a user defined epsilon [PR](https://github.com/BabylonJS/Babylon.js/pull/573) [RaananW](https://github.com/RaananW)
@@ -10,6 +11,7 @@
     - Added some utility functions to Vector2/3/4 [PR](https://github.com/BabylonJS/Babylon.js/pull/578) [jahow](https://github.com/jahow)
     - Added some utility functions to Vector2/3/4 [PR](https://github.com/BabylonJS/Babylon.js/pull/578) [jahow](https://github.com/jahow)
     - New rawTexture.update function [robgdl](https://github.com/robgdl)
     - New rawTexture.update function [robgdl](https://github.com/robgdl)
     - Changes to meshes transform baking and added flipFaces [PR](https://github.com/BabylonJS/Babylon.js/pull/579) [jahow](https://github.com/jahow)
     - Changes to meshes transform baking and added flipFaces [PR](https://github.com/BabylonJS/Babylon.js/pull/579) [jahow](https://github.com/jahow)
+    - SerializeMesh serializes a single mesh to be imported with the loader's ImportMesh. [PR](https://github.com/BabylonJS/Babylon.js/pull/583) [RaananW](https://github.com/RaananW)
   - **Bug fixes**
   - **Bug fixes**
     - Fixing bug with rig cameras positioning [deltakosh](https://github.com/deltakosh)
     - Fixing bug with rig cameras positioning [deltakosh](https://github.com/deltakosh)
   - **Breaking changes**
   - **Breaking changes**

+ 10 - 2
src/Bones/babylon.bone.js

@@ -1,7 +1,15 @@
+var __extends = (this && this.__extends) || function (d, b) {
+    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+    function __() { this.constructor = d; }
+    __.prototype = b.prototype;
+    d.prototype = new __();
+};
 var BABYLON;
 var BABYLON;
 (function (BABYLON) {
 (function (BABYLON) {
-    var Bone = (function () {
+    var Bone = (function (_super) {
+        __extends(Bone, _super);
         function Bone(name, skeleton, parentBone, matrix) {
         function Bone(name, skeleton, parentBone, matrix) {
+            _super.call(this, name, skeleton.getScene());
             this.name = name;
             this.name = name;
             this.children = new Array();
             this.children = new Array();
             this.animations = new Array();
             this.animations = new Array();
@@ -68,7 +76,7 @@ var BABYLON;
             this._skeleton._markAsDirty();
             this._skeleton._markAsDirty();
         };
         };
         return Bone;
         return Bone;
-    })();
+    })(BABYLON.Node);
     BABYLON.Bone = Bone;
     BABYLON.Bone = Bone;
 })(BABYLON || (BABYLON = {}));
 })(BABYLON || (BABYLON = {}));
 //# sourceMappingURL=babylon.bone.js.map
 //# sourceMappingURL=babylon.bone.js.map

+ 2 - 1
src/Bones/babylon.bone.ts

@@ -1,5 +1,5 @@
 module BABYLON {
 module BABYLON {
-    export class Bone {
+    export class Bone extends Node {
         public children = new Array<Bone>();
         public children = new Array<Bone>();
         public animations = new Array<Animation>();
         public animations = new Array<Animation>();
 
 
@@ -12,6 +12,7 @@
         private _parent: Bone;
         private _parent: Bone;
 
 
         constructor(public name: string, skeleton: Skeleton, parentBone: Bone, matrix: Matrix) {
         constructor(public name: string, skeleton: Skeleton, parentBone: Bone, matrix: Matrix) {
+            super(name, skeleton.getScene());
             this._skeleton = skeleton;
             this._skeleton = skeleton;
             this._matrix = matrix;
             this._matrix = matrix;
             this._baseMatrix = matrix;
             this._baseMatrix = matrix;

+ 3 - 0
src/Bones/babylon.skeleton.js

@@ -18,6 +18,9 @@ var BABYLON;
         Skeleton.prototype.getTransformMatrices = function () {
         Skeleton.prototype.getTransformMatrices = function () {
             return this._transformMatrices;
             return this._transformMatrices;
         };
         };
+        Skeleton.prototype.getScene = function () {
+            return this._scene;
+        };
         // Methods
         // Methods
         Skeleton.prototype._markAsDirty = function () {
         Skeleton.prototype._markAsDirty = function () {
             this._isDirty = true;
             this._isDirty = true;

+ 5 - 1
src/Bones/babylon.skeleton.ts

@@ -21,10 +21,14 @@
         }
         }
 
 
         // Members
         // Members
-        public getTransformMatrices() {
+        public getTransformMatrices(): Float32Array {
             return this._transformMatrices;
             return this._transformMatrices;
         }
         }
 
 
+        public getScene(): Scene {
+            return this._scene;
+        }
+
         // Methods
         // Methods
         public _markAsDirty(): void {
         public _markAsDirty(): void {
             this._isDirty = true;
             this._isDirty = true;

+ 8 - 12
src/Loading/Plugins/babylon.babylonFileLoader.js

@@ -677,7 +677,6 @@ var BABYLON;
                 }
                 }
                 var effectiveTarget = propertyPath.split(".");
                 var effectiveTarget = propertyPath.split(".");
                 var values = value.split(",");
                 var values = value.split(",");
-                // Get effective Target
                 for (var i = 0; i < effectiveTarget.length; i++) {
                 for (var i = 0; i < effectiveTarget.length; i++) {
                     target = target[effectiveTarget[i]];
                     target = target[effectiveTarget[i]];
                 }
                 }
@@ -780,7 +779,6 @@ var BABYLON;
                 for (var i = 0; i < parsedAction.children.length; i++)
                 for (var i = 0; i < parsedAction.children.length; i++)
                     traverse(parsedAction.children[i], trigger, condition, newAction, null);
                     traverse(parsedAction.children[i], trigger, condition, newAction, null);
             };
             };
-            // triggers
             for (var i = 0; i < parsedActions.children.length; i++) {
             for (var i = 0; i < parsedActions.children.length; i++) {
                 var triggerParams;
                 var triggerParams;
                 var trigger = parsedActions.children[i];
                 var trigger = parsedActions.children[i];
@@ -801,14 +799,19 @@ var BABYLON;
             var soundName = parsedSound.name;
             var soundName = parsedSound.name;
             var soundUrl = rootUrl + soundName;
             var soundUrl = rootUrl + soundName;
             var options = {
             var options = {
-                autoplay: parsedSound.autoplay, loop: parsedSound.loop, volume: parsedSound.volume,
-                spatialSound: parsedSound.spatialSound, maxDistance: parsedSound.maxDistance,
+                autoplay: parsedSound.autoplay,
+                loop: parsedSound.loop,
+                volume: parsedSound.volume,
+                spatialSound: parsedSound.spatialSound,
+                maxDistance: parsedSound.maxDistance,
                 rolloffFactor: parsedSound.rolloffFactor,
                 rolloffFactor: parsedSound.rolloffFactor,
                 refDistance: parsedSound.refDistance,
                 refDistance: parsedSound.refDistance,
                 distanceModel: parsedSound.distanceModel,
                 distanceModel: parsedSound.distanceModel,
                 playbackRate: parsedSound.playbackRate
                 playbackRate: parsedSound.playbackRate
             };
             };
-            var newSound = new BABYLON.Sound(soundName, soundUrl, scene, function () { scene._removePendingData(newSound); }, options);
+            var newSound = new BABYLON.Sound(soundName, soundUrl, scene, function () {
+                scene._removePendingData(newSound);
+            }, options);
             scene._addPendingData(newSound);
             scene._addPendingData(newSound);
             if (parsedSound.position) {
             if (parsedSound.position) {
                 var soundPosition = BABYLON.Vector3.FromArray(parsedSound.position);
                 var soundPosition = BABYLON.Vector3.FromArray(parsedSound.position);
@@ -1103,7 +1106,6 @@ var BABYLON;
                         meshes.push(mesh);
                         meshes.push(mesh);
                     }
                     }
                 }
                 }
-                // Connecting parents
                 for (index = 0; index < scene.meshes.length; index++) {
                 for (index = 0; index < scene.meshes.length; index++) {
                     var currentMesh = scene.meshes[index];
                     var currentMesh = scene.meshes[index];
                     if (currentMesh._waitingParentId) {
                     if (currentMesh._waitingParentId) {
@@ -1138,7 +1140,6 @@ var BABYLON;
                     scene.fogEnd = parsedData.fogEnd;
                     scene.fogEnd = parsedData.fogEnd;
                     scene.fogDensity = parsedData.fogDensity;
                     scene.fogDensity = parsedData.fogDensity;
                 }
                 }
-                // Lights
                 for (var index = 0; index < parsedData.lights.length; index++) {
                 for (var index = 0; index < parsedData.lights.length; index++) {
                     var parsedLight = parsedData.lights[index];
                     var parsedLight = parsedData.lights[index];
                     parseLight(parsedLight, scene);
                     parseLight(parsedLight, scene);
@@ -1231,12 +1232,10 @@ var BABYLON;
                         }
                         }
                     }
                     }
                 }
                 }
-                // Meshes
                 for (index = 0; index < parsedData.meshes.length; index++) {
                 for (index = 0; index < parsedData.meshes.length; index++) {
                     var parsedMesh = parsedData.meshes[index];
                     var parsedMesh = parsedData.meshes[index];
                     parseMesh(parsedMesh, scene, rootUrl);
                     parseMesh(parsedMesh, scene, rootUrl);
                 }
                 }
-                // Cameras
                 for (index = 0; index < parsedData.cameras.length; index++) {
                 for (index = 0; index < parsedData.cameras.length; index++) {
                     var parsedCamera = parsedData.cameras[index];
                     var parsedCamera = parsedData.cameras[index];
                     parseCamera(parsedCamera, scene);
                     parseCamera(parsedCamera, scene);
@@ -1244,7 +1243,6 @@ var BABYLON;
                 if (parsedData.activeCameraID) {
                 if (parsedData.activeCameraID) {
                     scene.setActiveCameraByID(parsedData.activeCameraID);
                     scene.setActiveCameraByID(parsedData.activeCameraID);
                 }
                 }
-                // Browsing all the graph to connect the dots
                 for (index = 0; index < scene.cameras.length; index++) {
                 for (index = 0; index < scene.cameras.length; index++) {
                     var camera = scene.cameras[index];
                     var camera = scene.cameras[index];
                     if (camera._waitingParentId) {
                     if (camera._waitingParentId) {
@@ -1271,7 +1269,6 @@ var BABYLON;
                         }
                         }
                     }
                     }
                 }
                 }
-                // Connect parents & children and parse actions
                 for (index = 0; index < scene.meshes.length; index++) {
                 for (index = 0; index < scene.meshes.length; index++) {
                     var mesh = scene.meshes[index];
                     var mesh = scene.meshes[index];
                     if (mesh._waitingParentId) {
                     if (mesh._waitingParentId) {
@@ -1314,4 +1311,3 @@ var BABYLON;
         });
         });
     })(Internals = BABYLON.Internals || (BABYLON.Internals = {}));
     })(Internals = BABYLON.Internals || (BABYLON.Internals = {}));
 })(BABYLON || (BABYLON = {}));
 })(BABYLON || (BABYLON = {}));
-//# sourceMappingURL=babylon.babylonFileLoader.js.map

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

@@ -730,4 +730,3 @@ var BABYLON;
     })();
     })();
     BABYLON.SceneSerializer = SceneSerializer;
     BABYLON.SceneSerializer = SceneSerializer;
 })(BABYLON || (BABYLON = {}));
 })(BABYLON || (BABYLON = {}));
-//# sourceMappingURL=babylon.sceneSerializer.js.map