Переглянути джерело

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

Jaskar 8 роки тому
батько
коміт
2657acbd6c

+ 37 - 34
Playground/debug.html

@@ -16,42 +16,45 @@
     <!--Monaco-->
     <script src="node_modules/monaco-editor/min/vs/loader.js"></script>
     <!-- Babylon.js -->
-    <script src="https://babylonjs.azurewebsites.net/cannon.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/Oimo.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/babylon.max.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/babylon.canvas2d.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/babylon.inspector.bundle.js"></script>
-
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.fireMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.waterMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.lavaMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.normalMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.skyMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.triPlanarMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.terrainMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.gradientMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.furMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.gridMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.shadowOnlyMaterial.min.js"></script>
-
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.brickProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.cloudProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.fireProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.grassProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.marbleProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.roadProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.starfieldProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.woodProceduralTexture.min.js"></script>
-
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.asciiArtPostProcess.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.digitalRainPostProcess.min.js"></script>
-
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.glTFFileLoader.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.objFileLoader.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.stlFileLoader.js"></script>
+    <script src="https://www.babylonjs.com/cannon.js"></script>
+    <script src="https://www.babylonjs.com/Oimo.js"></script>
+    <script src="https://www.babylonjs.com/babylon.max.js"></script>
+    <script src="https://www.babylonjs.com/babylon.canvas2d.js"></script>
+    <script src="https://www.babylonjs.com/babylon.inspector.bundle.js"></script>
+
+    <script src="https://www.babylonjs.com/lib/babylon.fireMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.waterMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.lavaMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.normalMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.skyMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.triPlanarMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.terrainMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.gradientMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.furMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.gridMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.shadowOnlyMaterial.min.js"></script>
+
+    <script src="https://www.babylonjs.com/lib/babylon.brickProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.cloudProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.fireProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.grassProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.marbleProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.roadProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.starfieldProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.woodProceduralTexture.min.js"></script>
+
+    <script src="https://www.babylonjs.com/lib/babylon.asciiArtPostProcess.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.digitalRainPostProcess.min.js"></script>
+
+    <script src="https://www.babylonjs.com/lib/babylon.glTFFileLoader.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.objFileLoader.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.stlFileLoader.js"></script>
 
     <script src="https://rawgit.com/BabylonJS/Extensions/master/ClonerSystem/src/babylonx.cloner.js"></script>
+
+    <script src="https://rawgit.com/BabylonJS/Extensions/master/CompoundShader/src/babylonx.CompoundShader.js"></script>
     <link href="css/index.css" rel="stylesheet" />
+
 </head>
 
 <body>
@@ -148,7 +151,7 @@
         <div id="statusBar"></div>
         <div class="links">
             <div class='link'> <a target='_new' href="http://www.html5gamedevs.com/forum/16-babylonjs/">Forum</a></div>
-            <div class='link'><a target='_new' href="https://babylonjs.azurewebsites.net/sandbox">Sandbox</a></div>
+            <div class='link'><a target='_new' href="https://www.babylonjs.com/sandbox">Sandbox</a></div>
             <div class='link'><a target='_new' href="https://github.com/BabylonJS/Babylon.js/wiki">Wiki</a></div>
             <div class='link'><a target='_new' href="https://doc.babylonjs.com">Documentation</a></div>
             <div class='link'><a target='_new' href="https://doc.babylonjs.com/playground">Playground Search</a></div>

+ 33 - 32
Playground/frame.html

@@ -5,40 +5,41 @@
     <title>Babylon.js Playground</title>
     <script src="https://code.jquery.com/pep/0.4.2/pep.min.js"></script>
     <!-- Babylon.js -->
-    <script src="https://babylonjs.azurewebsites.net/cannon.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/Oimo.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/babylon.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/babylon.canvas2d.js"></script>
-
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.fireMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.waterMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.lavaMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.normalMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.skyMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.triPlanarMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.terrainMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.gradientMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.furMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.gridMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.shadowOnlyMaterial.min.js"></script>
-
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.brickProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.cloudProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.fireProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.grassProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.marbleProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.roadProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.starfieldProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.woodProceduralTexture.min.js"></script>
-
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.asciiArtPostProcess.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.digitalRainPostProcess.min.js"></script>
-
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.glTFFileLoader.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.objFileLoader.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.stlFileLoader.js"></script>
+    <script src="https://www.babylonjs.com/cannon.js"></script>
+    <script src="https://www.babylonjs.com/Oimo.js"></script>
+    <script src="https://www.babylonjs.com/babylon.js"></script>
+    <script src="https://www.babylonjs.com/babylon.canvas2d.js"></script>
+
+    <script src="https://www.babylonjs.com/lib/babylon.fireMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.waterMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.lavaMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.normalMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.skyMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.triPlanarMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.terrainMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.gradientMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.furMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.gridMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.shadowOnlyMaterial.min.js"></script>
+
+    <script src="https://www.babylonjs.com/lib/babylon.brickProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.cloudProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.fireProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.grassProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.marbleProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.roadProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.starfieldProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.woodProceduralTexture.min.js"></script>
+
+    <script src="https://www.babylonjs.com/lib/babylon.asciiArtPostProcess.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.digitalRainPostProcess.min.js"></script>
+
+    <script src="https://www.babylonjs.com/lib/babylon.glTFFileLoader.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.objFileLoader.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.stlFileLoader.js"></script>
 
     <script src="https://rawgit.com/BabylonJS/Extensions/master/ClonerSystem/src/babylonx.cloner.js"></script>
+    <script src="https://rawgit.com/BabylonJS/Extensions/master/CompoundShader/src/babylonx.CompoundShader.js"></script>
     <link href="frame.css" rel="stylesheet" />
 </head>
 

+ 39 - 37
Playground/index.html

@@ -16,41 +16,43 @@
     <!--Monaco-->
     <script src="node_modules/monaco-editor/min/vs/loader.js"></script>
     <!-- Babylon.js -->
-    <script src="https://babylonjs.azurewebsites.net/cannon.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/Oimo.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/babylon.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/babylon.canvas2d.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/babylon.inspector.bundle.js"></script>
-
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.fireMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.waterMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.lavaMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.normalMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.skyMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.triPlanarMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.terrainMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.gradientMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.furMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.gridMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.shadowOnlyMaterial.min.js"></script>
-
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.brickProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.cloudProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.fireProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.grassProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.marbleProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.roadProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.starfieldProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.woodProceduralTexture.min.js"></script>
-
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.asciiArtPostProcess.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.digitalRainPostProcess.min.js"></script>
-
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.glTFFileLoader.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.objFileLoader.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.stlFileLoader.js"></script>
+    <script src="https://www.babylonjs.com/cannon.js"></script>
+    <script src="https://www.babylonjs.com/Oimo.js"></script>
+    <script src="https://www.babylonjs.com/babylon.js"></script>
+    <script src="https://www.babylonjs.com/babylon.canvas2d.js"></script>
+    <script src="https://www.babylonjs.com/babylon.inspector.bundle.js"></script>
+
+    <script src="https://www.babylonjs.com/lib/babylon.fireMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.waterMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.lavaMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.normalMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.skyMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.triPlanarMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.terrainMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.gradientMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.furMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.gridMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.shadowOnlyMaterial.min.js"></script>
+
+    <script src="https://www.babylonjs.com/lib/babylon.brickProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.cloudProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.fireProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.grassProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.marbleProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.roadProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.starfieldProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.woodProceduralTexture.min.js"></script>
+
+    <script src="https://www.babylonjs.com/lib/babylon.asciiArtPostProcess.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.digitalRainPostProcess.min.js"></script>
+
+    <script src="https://www.babylonjs.com/lib/babylon.glTFFileLoader.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.objFileLoader.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.stlFileLoader.js"></script>
 
     <script src="https://rawgit.com/BabylonJS/Extensions/master/ClonerSystem/src/babylonx.cloner.js"></script>
+
+    <script src="https://rawgit.com/BabylonJS/Extensions/master/CompoundShader/src/babylonx.CompoundShader.js"></script>
     <link href="css/index.css" rel="stylesheet" />
 </head>
 
@@ -147,11 +149,11 @@
     <div class="navbarBottom">
         <div id="statusBar"></div>
         <div class="links">
+            <div class='link'><a target='_new' href="https://www.netlify.com/">Deployed by Netlify</a></div>
             <div class='link'> <a target='_new' href="http://www.html5gamedevs.com/forum/16-babylonjs/">Forum</a></div>
-            <div class='link'><a target='_new' href="https://babylonjs.azurewebsites.net/sandbox">Sandbox</a></div>
-            <div class='link'><a target='_new' href="https://github.com/BabylonJS/Babylon.js/wiki">Wiki</a></div>
+            <div class='link'><a target='_new' href="https://www.babylonjs.com/sandbox">Sandbox</a></div>            
             <div class='link'><a target='_new' href="https://doc.babylonjs.com">Documentation</a></div>
-            <div class='link'><a target='_new' href="https://doc.babylonjs.com/playground">Playground Search</a></div>
+            <div class='link'><a target='_new' href="https://doc.babylonjs.com/playground">Search</a></div>
         </div>
     </div>
 
@@ -183,4 +185,4 @@
     <script src="js/index.js"></script>
 </body>
 
-</html>
+</html>

+ 34 - 34
Playground/index2_5.html

@@ -16,39 +16,39 @@
     <!--Monaco-->
     <script src="node_modules/monaco-editor/min/vs/loader.js"></script>
     <!-- Babylon.js -->
-    <script src="https://babylonjs.azurewebsites.net/cannon.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/Oimo.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/versions/babylon.2.5.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/versions/babylon.2.5.canvas2d.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/babylon.inspector.bundle.js"></script>
-
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.fireMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.waterMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.lavaMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.normalMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.skyMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.triPlanarMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.terrainMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.gradientMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.furMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.gridMaterial.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.shadowOnlyMaterial.min.js"></script>
-
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.brickProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.cloudProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.fireProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.grassProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.marbleProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.roadProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.starfieldProceduralTexture.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.woodProceduralTexture.min.js"></script>
-
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.asciiArtPostProcess.min.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.digitalRainPostProcess.min.js"></script>
-
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.glTFFileLoader.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.objFileLoader.js"></script>
-    <script src="https://babylonjs.azurewebsites.net/lib/babylon.stlFileLoader.js"></script>
+    <script src="https://www.babylonjs.com/cannon.js"></script>
+    <script src="https://www.babylonjs.com/Oimo.js"></script>
+    <script src="https://www.babylonjs.com/versions/babylon.2.5.js"></script>
+    <script src="https://www.babylonjs.com/versions/babylon.2.5.canvas2d.js"></script>
+    <script src="https://www.babylonjs.com/babylon.inspector.bundle.js"></script>
+
+    <script src="https://www.babylonjs.com/lib/babylon.fireMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.waterMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.lavaMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.normalMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.skyMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.triPlanarMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.terrainMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.gradientMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.furMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.gridMaterial.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.shadowOnlyMaterial.min.js"></script>
+
+    <script src="https://www.babylonjs.com/lib/babylon.brickProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.cloudProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.fireProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.grassProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.marbleProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.roadProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.starfieldProceduralTexture.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.woodProceduralTexture.min.js"></script>
+
+    <script src="https://www.babylonjs.com/lib/babylon.asciiArtPostProcess.min.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.digitalRainPostProcess.min.js"></script>
+
+    <script src="https://www.babylonjs.com/lib/babylon.glTFFileLoader.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.objFileLoader.js"></script>
+    <script src="https://www.babylonjs.com/lib/babylon.stlFileLoader.js"></script>
 
     <script src="https://rawgit.com/BabylonJS/Extensions/master/ClonerSystem/src/babylonx.cloner.js"></script>
     <link href="css/index.css" rel="stylesheet" />
@@ -148,7 +148,7 @@
         <div id="statusBar"></div>
         <div class="links">
             <div class='link'> <a target='_new' href="http://www.html5gamedevs.com/forum/16-babylonjs/">Forum</a></div>
-            <div class='link'><a target='_new' href="https://babylonjs.azurewebsites.net/sandbox">Sandbox</a></div>
+            <div class='link'><a target='_new' href="https://www.babylonjs.com/sandbox">Sandbox</a></div>
             <div class='link'><a target='_new' href="https://github.com/BabylonJS/Babylon.js/wiki">Wiki</a></div>
             <div class='link'><a target='_new' href="https://doc.babylonjs.com">Documentation</a></div>
             <div class='link'><a target='_new' href="https://doc.babylonjs.com/playground">Playground Search</a></div>

+ 30 - 30
Playground/scripts/scripts.txt

@@ -1,30 +1,30 @@
-Basic scene
-Basic elements
-Rotation and scaling
-Materials
-Cameras
-Lights
-Animations
-Sprites
-Collisions
-Intersections
-Picking
-Particles
-Environment
-Height map
-Shadows
-Import meshes
-Actions
-Drag and drop
-Fresnel
-Easing functions
-ProceduralTexture
-Basic sounds
-Sound on mesh
-SSAO rendering pipeline
-Volumetric Light Scattering
-HDR Rendering Pipeline
-Refraction and Reflection
-PBR
-Instanced bones
-Pointer events handling
+basic scene
+basic elements
+rotation and scaling
+materials
+cameras
+lights
+animations
+sprites
+collisions
+intersections
+picking
+particles
+environment
+height map
+shadows
+import meshes
+actions
+drag and drop
+fresnel
+easing functions
+proceduralTexture
+basic sounds
+sound on mesh
+ssao rendering pipeline
+volumetric Light Scattering
+hdr Rendering Pipeline
+refraction and Reflection
+pbr
+instanced bones
+pointer events handling

+ 40 - 4
Tools/DevLoader/BabylonLoader.js

@@ -185,11 +185,44 @@ var BABYLONDEVTOOLS;
             }
         }
 
+        Loader.prototype.processDependency = function(settings, dependency, filesToLoad) {
+            if (dependency.dependUpon) {
+                for (var i = 0; i < dependency.dependUpon.length; i++ ) {
+                    var dependencyName = dependency.dependUpon[i];
+                    var parent = settings.workloads[dependencyName];
+                    this.processDependency(settings, parent, filesToLoad);
+                }
+            }
+
+            for (var i = 0; i< dependency.files.length; i++) {
+                var file = dependency.files[i];
+
+                if (filesToLoad.indexOf(file) === -1) {
+                    filesToLoad.push(file);
+                }
+            }
+        }
+
         Loader.prototype.loadBJSScripts = function (settings) {
+            var loadModules = true;
 
+            // Main bjs files
             if (!useDist) {
-                this.loadScripts(settings.core.files);
-                this.loadScripts(settings.extras.files);
+                var currentConfig = settings.build.currentConfig;
+                var buildConfiguration = settings.buildConfigurations[currentConfig];
+                var filesToLoad = [];
+
+                for (var index = 0; index < buildConfiguration.length; index++) {
+                    var dependencyName = buildConfiguration[index];
+                    var dependency = settings.workloads[dependencyName];
+                    this.processDependency(settings, dependency, filesToLoad);
+                }
+
+                this.loadScripts(filesToLoad);
+
+                if (currentConfig !== "all") {
+                    loadModules = false;
+                }
             }
             else if (min) {
                 this.loadScript('/dist/preview release/babylon.js');
@@ -198,8 +231,11 @@ var BABYLONDEVTOOLS;
                 this.loadScript('/dist/preview release/babylon.max.js');
             }
 
-            for (var i = 0; i< settings.modules.length; i++) {
-                this.loadModule(settings[settings.modules[i]]);
+            // Modules
+            if (loadModules) {
+                for (var i = 0; i< settings.modules.length; i++) {
+                    this.loadModule(settings[settings.modules[i]]);
+                }
             }
         }
 

Різницю між файлами не показано, бо вона завелика
+ 810 - 209
Tools/Gulp/config.json


+ 0 - 205
Tools/Gulp/custom.config.json

@@ -1,205 +0,0 @@
-{
-  "build": {
-    "filename": "babylon.custom.max.js",
-    "minFilename": "babylon.custom.js",
-    "outputDirectory": "../../dist/preview release",
-    "srcOutputDirectory": "../../src/"
-  },
-  "core": {
-    "typescript": [
-      "../../src/**/*.ts",
-      "!../../src/**/*.d.ts"
-    ],
-    "files": [
-            "../../src/Math/babylon.math.js",
-            "../../src/babylon.mixins.js",
-            "../../src/Tools/babylon.decorators.js",
-            "../../src/Tools/babylon.observable.js",
-            "../../src/Tools/babylon.database.js",
-            "../../src/Tools/babylon.tga.js",
-            "../../src/Tools/babylon.smartArray.js",
-            "../../src/Tools/babylon.stringDictionary.js",
-            "../../src/Tools/babylon.tools.js",
-            "../../src/States/babylon.alphaCullingState.js",
-            "../../src/States/babylon.depthCullingState.js",
-            "../../src/States/babylon.stencilState.js",
-            "../../src/Tools/babylon.loadingScreen.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/Culling/babylon.ray.js",
-            "../../src/Debug/babylon.rayHelper.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.cameraInputsManager.js",
-            "../../src/Cameras/Inputs/babylon.freeCameraMouseInput.js",
-            "../../src/Cameras/Inputs/babylon.freeCameraKeyboardMoveInput.js",
-            "../../src/Cameras/Inputs/babylon.freeCameraTouchInput.js",
-            "../../src/Cameras/Inputs/babylon.freeCameraDeviceOrientationInput.js",
-            "../../src/Cameras/Inputs/babylon.freeCameraGamepadInput.js",
-            "../../src/Cameras/Inputs/babylon.arcRotateCameraKeyboardMoveInput.js",
-            "../../src/Cameras/Inputs/babylon.arcRotateCameraMouseWheelInput.js",
-            "../../src/Cameras/Inputs/babylon.arcRotateCameraPointersInput.js",
-            "../../src/Cameras/Inputs/babylon.arcRotateCameraGamepadInput.js",
-            "../../src/Cameras/Inputs/babylon.arcRotateCameraVRDeviceOrientationInput.js",
-            "../../src/Cameras/babylon.targetCamera.js",
-            "../../src/Cameras/babylon.freeCamera.js",
-            "../../src/Cameras/babylon.freeCameraInputsManager.js",
-            "../../src/Cameras/babylon.followCamera.js",
-            "../../src/Cameras/babylon.touchCamera.js",
-            "../../src/Cameras/babylon.arcRotateCamera.js",
-            "../../src/Cameras/babylon.arcRotateCameraInputsManager.js",
-            "../../src/Rendering/babylon.renderingManager.js",
-            "../../src/Rendering/babylon.renderingGroup.js",
-            "../../src/PostProcess/babylon.postProcessManager.js",
-            "../../src/PostProcess/RenderPipeline/babylon.postProcessRenderPipelineManager.js",
-            "../../src/Rendering/babylon.boundingBoxRenderer.js",
-            "../../src/babylon.scene.js",
-            "../../src/Mesh/babylon.buffer.js",
-            "../../src/Mesh/babylon.vertexBuffer.js",
-            "../../src/Mesh/babylon.instancedMesh.js",
-            "../../src/Mesh/babylon.mesh.js",
-            "../../src/Mesh/babylon.subMesh.js",
-            "../../src/Mesh/babylon.meshBuilder.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.refractionTexture.js",
-            "../../src/Materials/Textures/babylon.dynamicTexture.js",
-            "../../src/Materials/Textures/babylon.videoTexture.js",
-            "../../src/Materials/Textures/Procedurals/babylon.customProceduralTexture.js",
-            "../../src/Materials/babylon.effect.js",
-            "../../src/Materials/babylon.materialHelper.js",
-            "../../src/Materials/babylon.fresnelParameters.js",
-            "../../src/Materials/babylon.material.js",
-            "../../src/Materials/babylon.pushMaterial.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/Bones/babylon.bone.js",
-            "../../src/Bones/babylon.boneIKController.js",
-            "../../src/Bones/babylon.boneLookController.js",
-            "../../src/Bones/babylon.skeleton.js",
-            "../../src/PostProcess/babylon.postProcess.js",
-            "../../src/PostProcess/babylon.passPostProcess.js",
-            "../../src/Physics/babylon.physicsJoint.js",
-            "../../src/Physics/babylon.physicsImpostor.js",
-            "../../src/Physics/babylon.physicsEngine.js",
-            "../../src/Mesh/babylon.mesh.vertexData.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/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/Audio/babylon.audioEngine.js",
-            "../../src/Audio/babylon.sound.js",
-            "../../src/Audio/babylon.soundtrack.js",
-            "../../src/Layer/babylon.highlightlayer.js",
-            "../../src/Math/babylon.math.SIMD.js",
-            "../../src/Tools/babylon.rectPackingMap.js",
-            "../../src/Tools/babylon.dynamicFloatArray.js",
-            "../../src/Materials/Textures/babylon.mapTexture.js",
-            "../../src/Materials/babylon.shaderMaterial.js",
-            "../../src/Tools/babylon.dds.js",
-            "../../src/Tools/babylon.khronosTextureContainer.js",
-            "../../src/Physics/Plugins/babylon.cannonJSPlugin.js",
-            "../../src/Physics/Plugins/babylon.oimoJSPlugin.js",
-            "../../src/PostProcess/babylon.displayPassPostProcess.js",
-            "../../src/Mesh/babylon.meshSimplification.js",
-            "../../src/Tools/babylon.sceneSerializer.js",
-            "../../src/Tools/babylon.earcut.js",
-            "../../src/Mesh/babylon.csg.js",
-            "../../src/PostProcess/babylon.vrDistortionCorrectionPostProcess.js",
-            "../../src/Tools/babylon.virtualJoystick.js",
-            "../../src/Cameras/babylon.virtualJoysticksCamera.js",
-            "../../src/Cameras/Inputs/babylon.freeCameraVirtualJoystickInput.js",
-            "../../src/PostProcess/babylon.anaglyphPostProcess.js",
-            "../../src/Rendering/babylon.outlineRenderer.js",
-            "../../src/Tools/babylon.assetsManager.js",
-            "../../src/Cameras/VR/babylon.vrCameraMetrics.js",
-            "../../src/Cameras/VR/babylon.webVRCamera.js",
-            "../../src/Tools/babylon.sceneOptimizer.js",
-            "../../src/Mesh/babylon.meshLODLevel.js",
-            "../../src/Materials/Textures/babylon.rawTexture.js",
-            "../../src/Mesh/babylon.polygonMesh.js",
-            "../../src/Culling/Octrees/babylon.octree.js",
-            "../../src/Culling/Octrees/babylon.octreeBlock.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/Cameras/babylon.deviceOrientationCamera.js",
-            "../../src/Cameras/VR/babylon.vrDeviceOrientationCamera.js",
-            "../../src/Cameras/babylon.universalCamera.js",
-            "../../src/Tools/babylon.gamepads.js",
-            "../../src/Tools/babylon.extendedGamepad.js",
-            "../../src/Cameras/babylon.gamepadCamera.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",
-            "../../src/Rendering/babylon.edgesRenderer.js",
-            "../../src/PostProcess/babylon.tonemapPostProcess.js",
-            "../../src/Probes/babylon.reflectionProbe.js",
-            "../../src/Particles/babylon.solidParticle.js",
-            "../../src/Particles/babylon.solidParticleSystem.js",
-            "../../src/Tools/HDR/babylon.cubemapToSphericalPolynomial.js",
-            "../../src/Tools/HDR/babylon.panoramaToCubemap.js",
-            "../../src/Tools/HDR/babylon.hdr.js",
-            "../../src/Tools/HDR/babylon.pmremgenerator.js",
-            "../../src/Materials/Textures/babylon.hdrCubeTexture.js",
-            "../../src/Debug/babylon.skeletonViewer.js",
-            "../../src/Debug/babylon.axesViewer.js",
-            "../../src/Debug/babylon.boneAxesViewer.js",
-            "../../src/Materials/Textures/babylon.colorGradingTexture.js",
-            "../../src/Materials/babylon.colorCurves.js",
-            "../../src/Materials/babylon.pbrMaterial.js",
-            "../../src/Debug/babylon.debugLayer.js",
-            "../../src/PostProcess/babylon.standardRenderingPipeline.js",
-            "../../src/Morph/babylon.morphTarget.js",
-            "../../src/Morph/babylon.morphTargetManager.js"
-    ]
-  }
-}

+ 76 - 70
Tools/Gulp/gulpfile.js

@@ -24,7 +24,6 @@ var webpack = require('webpack-stream');
 var zip = require('gulp-zip');
 
 var config = require("./config.json");
-var customConfig = require("./custom.config.json");
 
 var del = require('del');
 
@@ -58,6 +57,54 @@ var externalTsConfig = {
     isolatedModules: false
 };
 
+function processDependency(kind, dependency, filesToLoad) {
+    if (dependency.dependUpon) {
+        for (var i = 0; i < dependency.dependUpon.length; i++ ) {
+            var dependencyName = dependency.dependUpon[i];
+            var parent = config.workloads[dependencyName];
+            processDependency(kind, parent, filesToLoad);
+        }
+    }
+
+    var content = dependency[kind];
+    if (!content) {
+        return;
+    }
+
+    for (var i = 0; i< content.length; i++) {
+        var file = content[i];
+
+        if (filesToLoad.indexOf(file) === -1) {
+            filesToLoad.push(file);
+        }
+    }
+}
+
+function determineFilesToProcess(kind) {
+    var currentConfig = config.build.currentConfig;
+    var buildConfiguration = config.buildConfigurations[currentConfig];
+    var filesToLoad = [];
+
+    for (var index = 0; index < buildConfiguration.length; index++) {
+        var dependencyName = buildConfiguration[index];
+        var dependency = config.workloads[dependencyName];
+        processDependency(kind, dependency, filesToLoad);
+    }
+
+    if (kind === "shaderIncludes") {
+        for (var index = 0; index < filesToLoad.length; index++) {
+            filesToLoad[index] = "../../src/Shaders/ShadersInclude/" + filesToLoad[index] + ".fx";
+        }
+    } else if (kind === "shaders") {
+        for (var index = 0; index < filesToLoad.length; index++) {
+            var name = filesToLoad[index];
+            filesToLoad[index] = "../../src/Shaders/" + filesToLoad[index] + ".fx";
+        }
+    }
+
+    return filesToLoad;
+}
+
 /*
  * Shader Management.
  */
@@ -76,26 +123,24 @@ function includeShadersName(filename) {
  * Main necessary files stream Management.
  */
 gulp.task("includeShaders", function (cb) {
-    includeShadersStream = config.includeShadersDirectories.map(function (shadersDef) {
-        return gulp.src(shadersDef.files).
-            pipe(expect.real({ errorOnFailure: true }, shadersDef.files)).
-            pipe(uncommentShader()).
-            pipe(srcToVariable({
-            variableName: shadersDef.variable, asMap: true, namingCallback: includeShadersName
-        }));
-    });
+    var filesToProcess = determineFilesToProcess("shaderIncludes");
+    includeShadersStream = gulp.src(filesToProcess).
+        pipe(expect.real({ errorOnFailure: true }, filesToProcess)).
+        pipe(uncommentShader()).
+        pipe(srcToVariable({
+            variableName: "BABYLON.Effect.IncludesShadersStore", asMap: true, namingCallback: includeShadersName
+    }));
     cb();
 });
 
 gulp.task("shaders", ["includeShaders"], function (cb) {
-    shadersStream = config.shadersDirectories.map(function (shadersDef) {
-        return gulp.src(shadersDef.files).
-            pipe(expect.real({ errorOnFailure: true }, shadersDef.files)).
-            pipe(uncommentShader()).
-            pipe(srcToVariable({
-            variableName: shadersDef.variable, asMap: true, namingCallback: shadersName
-        }));
-    });
+    var filesToProcess = determineFilesToProcess("shaders");
+    shadersStream = gulp.src(filesToProcess).
+        pipe(expect.real({ errorOnFailure: true}, filesToProcess)).
+        pipe(uncommentShader()).
+        pipe(srcToVariable({
+            variableName: "BABYLON.Effect.ShadersStore", asMap: true, namingCallback: shadersName
+    }));
     cb();
 });
 
@@ -114,14 +159,16 @@ gulp.task("workers", function (cb) {
 /**
  * Build tasks to concat minify uflify optimise the BJS js in different flavor (workers...).
  */
-gulp.task("buildCore", ["shaders"], function () {
+gulp.task("buildWorker", ["workers", "shaders"], function () {
+    var filesToProcess = determineFilesToProcess("files");
     return merge2(
-        gulp.src(config.core.files).        
-            pipe(expect.real({ errorOnFailure: true }, config.core.files)),
+        gulp.src(filesToProcess).        
+            pipe(expect.real({ errorOnFailure: true }, filesToProcess)),
         shadersStream,
-        includeShadersStream
+        includeShadersStream,
+        workersStream
         )
-        .pipe(concat(config.build.minCoreFilename))
+        .pipe(concat(config.build.minWorkerFilename))
         .pipe(cleants())
         .pipe(replace(extendsSearchRegex, ""))
         .pipe(replace(decorateSearchRegex, ""))
@@ -131,35 +178,14 @@ gulp.task("buildCore", ["shaders"], function () {
         .pipe(gulp.dest(config.build.outputDirectory));
 });
 
-gulp.task("buildNoWorker", ["shaders"], function () {
+gulp.task("build", ["shaders"], function () {
+    var filesToProcess = determineFilesToProcess("files");
     return merge2(
-        gulp.src(config.core.files).        
-            pipe(expect.real({ errorOnFailure: true }, config.core.files)),
-        gulp.src(config.extras.files).        
-            pipe(expect.real({ errorOnFailure: true }, config.extras.files)),
+        gulp.src(filesToProcess).        
+            pipe(expect.real({ errorOnFailure: true }, filesToProcess)),
         shadersStream,
         includeShadersStream
         )
-        .pipe(concat(config.build.minNoWorkerFilename))
-        .pipe(cleants())
-        .pipe(replace(extendsSearchRegex, ""))
-        .pipe(replace(decorateSearchRegex, ""))
-        .pipe(addModuleExports("BABYLON"))
-        .pipe(uglify())
-        .pipe(optimisejs())
-        .pipe(gulp.dest(config.build.outputDirectory));
-});
-
-gulp.task("build", ["workers", "shaders"], function () {
-    return merge2(
-        gulp.src(config.core.files).        
-            pipe(expect.real({ errorOnFailure: true }, config.core.files)),
-        gulp.src(config.extras.files).        
-            pipe(expect.real({ errorOnFailure: true }, config.extras.files)),   
-        shadersStream,
-        includeShadersStream,
-        workersStream
-        )
         .pipe(concat(config.build.filename))
         .pipe(cleants())
         .pipe(replace(extendsSearchRegex, ""))
@@ -172,31 +198,11 @@ gulp.task("build", ["workers", "shaders"], function () {
         .pipe(gulp.dest(config.build.outputDirectory));
 });
 
-gulp.task("build-custom", ["shaders"], function () {
-    return merge2(
-        gulp.src(customConfig.core.files).        
-            pipe(expect.real({ errorOnFailure: true }, customConfig.core.files)),  
-        shadersStream,
-        includeShadersStream
-        )
-        .pipe(concat(customConfig.build.filename))
-        .pipe(cleants())
-        .pipe(replace(extendsSearchRegex, ""))
-        .pipe(replace(decorateSearchRegex, ""))
-        .pipe(addModuleExports("BABYLON"))
-        .pipe(gulp.dest(customConfig.build.outputDirectory))
-        .pipe(rename(customConfig.build.minFilename))
-        .pipe(uglify())
-        .pipe(optimisejs())
-        .pipe(gulp.dest(customConfig.build.outputDirectory));
-});
-
-
 /*
 * Compiles all typescript files and creating a js and a declaration file.
 */
 gulp.task('typescript-compile', function () {
-    var tsResult = gulp.src(config.core.typescript)
+    var tsResult = gulp.src(config.typescript)
         .pipe(sourcemaps.init())
         .pipe(tsProject());
 
@@ -307,7 +313,7 @@ var buildExternalLibrary= function(library, settings, watch) {
  * The default task, concat and min the main BJS files.
  */
 gulp.task('default', function (cb) {
-    runSequence("buildNoWorker", "build", "buildCore", cb);
+    runSequence("buildWorker", "build", cb);
 });
 
 /**
@@ -340,7 +346,7 @@ gulp.task("typescript-all", function (cb) {
  * Watch ts files and fire repective tasks.
  */
 gulp.task('watch', [], function () {
-    var tasks = [gulp.watch(config.core.typescript, ['typescript-compile'])];
+    var tasks = [gulp.watch(config.typescript, ['typescript-compile'])];
 
     config.modules.map(function (module) { 
         config[module].libraries.map(function (library) {            

BIN
assets/textures/grass.jpg


BIN
assets/textures/misc.jpg


BIN
assets/textures/room.hdr


BIN
assets/textures/tree.png


Різницю між файлами не показано, бо вона завелика
+ 0 - 31
dist/preview release/babylon.core.js


Різницю між файлами не показано, бо вона завелика
+ 498 - 497
dist/preview release/babylon.d.ts


Різницю між файлами не показано, бо вона завелика
+ 41 - 43
dist/preview release/babylon.js


Різницю між файлами не показано, бо вона завелика
+ 51613 - 51542
dist/preview release/babylon.max.js


Різницю між файлами не показано, бо вона завелика
+ 498 - 497
dist/preview release/babylon.module.d.ts


Різницю між файлами не показано, бо вона завелика
+ 0 - 41
dist/preview release/babylon.noworker.js


Різницю між файлами не показано, бо вона завелика
+ 43 - 0
dist/preview release/babylon.worker.js


Різницю між файлами не показано, бо вона завелика
+ 249 - 249
dist/preview release/inspector/babylon.inspector.bundle.js


Різницю між файлами не показано, бо вона завелика
+ 3 - 3
dist/preview release/inspector/babylon.inspector.min.js


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

@@ -16,6 +16,7 @@
  - babylon.fontTexture.ts was moved from babylon.js to canvas2D ([nockawa](https://github.com/nockawa))
  - Multi-platform Compressed Textures for Desktops & Mobile Devices with fall back.  Batch (dos) scripts to convert entire directories of .jpg's & .png's [Doc](http://doc.babylonjs.com/tutorials/multi-platform_compressed_textures) ([jcpalmer](https://github.com/Palmer-JC))
  - All deprecated functions and properties were removed ([deltakosh](https://github.com/deltakosh))
+ - New build system based on workloads. [More info here](DOC TO DO) ([deltakosh](https://github.com/deltakosh))
 
 ### Updates
 - Added `FIXED_EQUIRECTANGULAR_MIRRORED_MODE` mode for reflection texture. [Demo here](http://www.babylonjs-playground.com/#11GAIH#22) ([deltakosh](https://github.com/deltakosh))

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

@@ -187,7 +187,7 @@ module BABYLON {
         public onCollide: (collidedMesh: AbstractMesh) => void;
         public checkCollisions = false;
         public collisionRadius = new Vector3(0.5, 0.5, 0.5);
-        private _collider = new Collider();
+        private _collider: Collider;
         private _previousPosition = Vector3.Zero();
         private _collisionVelocity = Vector3.Zero();
         private _newPosition = Vector3.Zero();
@@ -214,7 +214,7 @@ module BABYLON {
 
             this.getViewMatrix();
             this.inputs = new ArcRotateCameraInputsManager(this);
-            this.inputs.addKeyboard().addMouseWheel().addPointers().addGamepad();
+            this.inputs.addKeyboard().addMouseWheel().addPointers();
         }      
 
         // Cache
@@ -437,6 +437,9 @@ module BABYLON {
             var target = this._getTargetPosition();
             target.addToRef(new Vector3(this.radius * cosa * sinb, this.radius * cosb, this.radius * sina * sinb), this._newPosition);
             if (this.getScene().collisionsEnabled && this.checkCollisions) {
+                if (!this._collider) {
+                    this._collider = new Collider();
+                }
                 this._collider.radius = this.collisionRadius;
                 this._newPosition.subtractToRef(this.position, this._collisionVelocity);
                 this._collisionTriggered = true;

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

@@ -76,7 +76,7 @@
         
         public onCollide: (collidedMesh: AbstractMesh) => void;
         
-        private _collider = new Collider();
+        private _collider: Collider;
         private _needMoveForGravity = false;
         private _oldPosition = Vector3.Zero();
         private _diffPosition = Vector3.Zero();
@@ -124,6 +124,11 @@
             }
 
             globalPosition.subtractFromFloatsToRef(0, this.ellipsoid.y, 0, this._oldPosition);
+
+            if (!this._collider) {
+                this._collider = new Collider();
+            }
+
             this._collider.radius = this.ellipsoid;
             this._collider.collisionMask = this._collisionMask;
 		

+ 1 - 1
src/Loading/babylon.sceneLoader.ts

@@ -146,7 +146,7 @@
                 return;
             }
 
-            var directLoad = SceneLoader._getDirectLoad(sceneFilename);
+            var directLoad =SceneLoader._getDirectLoad(sceneFilename);
 
             var loadingToken = {};
             scene._addPendingData(loadingToken);

+ 6 - 2
src/Materials/babylon.pbrMaterial.ts

@@ -1152,8 +1152,12 @@
 
                 var samplers = ["albedoSampler", "ambientSampler", "opacitySampler", "reflectionCubeSampler", "reflection2DSampler", "emissiveSampler", "reflectivitySampler", "microSurfaceSampler", "bumpSampler", "lightmapSampler", "refractionCubeSampler", "refraction2DSampler"];
                 
-                ColorCurves.PrepareUniforms(uniforms); 
-                ColorGradingTexture.PrepareUniformsAndSamplers(uniforms, samplers); 
+                if (this._defines.CAMERACOLORCURVES) {
+                    ColorCurves.PrepareUniforms(uniforms);
+                }
+                if (this._defines.CAMERACOLORGRADING) {
+                    ColorGradingTexture.PrepareUniformsAndSamplers(uniforms, samplers);
+                }
                 MaterialHelper.PrepareUniformsAndSamplersList(uniforms, samplers, this._defines, this.maxSimultaneousLights); 
                 
                 this._effect = scene.getEngine().createEffect("pbr",

+ 6 - 1
src/Mesh/babylon.abstractMesh.ts

@@ -258,7 +258,7 @@
         private _collisionGroup = -1;
         public ellipsoid = new Vector3(0.5, 1, 0.5);
         public ellipsoidOffset = new Vector3(0, 0, 0);
-        private _collider = new Collider();
+        private _collider: Collider;
         private _oldPositionForCollisions = new Vector3(0, 0, 0);
         private _diffPositionForCollisions = new Vector3(0, 0, 0);
         private _newPositionForCollisions = new Vector3(0, 0, 0);
@@ -1401,6 +1401,11 @@
 
             globalPosition.subtractFromFloatsToRef(0, this.ellipsoid.y, 0, this._oldPositionForCollisions);
             this._oldPositionForCollisions.addInPlace(this.ellipsoidOffset);
+
+            if (!this._collider) {
+                this._collider = new Collider();
+            }
+
             this._collider.radius = this.ellipsoid;
 
             this.getScene().collisionCoordinator.getNewPosition(this._oldPositionForCollisions, velocity, this._collider, 3, this, this._onCollisionPositionChange, this.uniqueId);

+ 17 - 6
src/babylon.engine.ts

@@ -440,7 +440,7 @@
         public renderEvenInBackground = true;
         public preventCacheWipeBetweenFrames = false;
         // To enable/disable IDB support and avoid XHR on .manifest
-        public enableOfflineSupport = true;
+        public enableOfflineSupport = BABYLON.Database;
         public scenes = new Array<Scene>();
 
         //WebVR 
@@ -554,9 +554,7 @@
         constructor(canvas: HTMLCanvasElement, antialias?: boolean, options?: EngineOptions, adaptToDeviceRatio = false) {
             this._renderingCanvas = canvas;
 
-            Engine.Instances.push(this);
-
-            this._externalData = new StringDictionary<Object>();
+            Engine.Instances.push(this);            
 
             options = options || {};
 
@@ -3121,10 +3119,10 @@
 
             // Video
             var alreadyActivated = false;
-            if (texture instanceof VideoTexture) {
+            if ((<VideoTexture>texture).video) {
                 this.activateTexture(this._gl["TEXTURE" + channel]);
                 alreadyActivated = true;
-                texture.update();
+                (<VideoTexture>texture).update();
             } else if (texture.delayLoadState === Engine.DELAYLOADSTATE_NOTLOADED) { // Delay loading
                 texture.delayLoad();
                 return;
@@ -3237,6 +3235,9 @@
          * @return true if no such key were already present and the data was added successfully, false otherwise
          */
         public addExternalData<T>(key: string, data: T): boolean {
+            if (!this._externalData) {
+                this._externalData = new StringDictionary<Object>();
+            }
             return this._externalData.add(key, data);
         }
 
@@ -3246,6 +3247,9 @@
          * @return the associated data, if present (can be null), or undefined if not present
          */
         public getExternalData<T>(key: string): T {
+            if (!this._externalData) {
+                this._externalData = new StringDictionary<Object>();
+            }
             return <T>this._externalData.get(key);
         }
 
@@ -3256,6 +3260,9 @@
          * @return the associated data, can be null if the factory returned null.
          */
         public getOrAddExternalDataWithFactory<T>(key: string, factory: (k: string) => T): T {
+            if (!this._externalData) {
+                this._externalData = new StringDictionary<Object>();
+            }
             return <T>this._externalData.getOrAddWithFactory(key, factory);
         }
 
@@ -3265,6 +3272,10 @@
          * @return true if the data was successfully removed, false if it doesn't exist
          */
         public removeExternalData(key): boolean {
+            if (!this._externalData) {
+                this._externalData = new StringDictionary<Object>();
+            }
+            
             return this._externalData.remove(key);
         }
 

+ 76 - 28
src/babylon.scene.ts

@@ -582,7 +582,14 @@
         // Postprocesses
         public postProcessesEnabled = true;
         public postProcessManager: PostProcessManager;
-        public postProcessRenderPipelineManager: PostProcessRenderPipelineManager;
+        private _postProcessRenderPipelineManager: PostProcessRenderPipelineManager
+        public get postProcessRenderPipelineManager(): PostProcessRenderPipelineManager {
+            if (!this._postProcessRenderPipelineManager) {
+                this._postProcessRenderPipelineManager = new PostProcessRenderPipelineManager();
+            }
+
+            return this._postProcessRenderPipelineManager;
+        }
 
         // Customs render targets
         public renderTargetsEnabled = true;
@@ -714,18 +721,12 @@
             this._engine = engine || Engine.LastCreatedEngine;
 
             this._engine.scenes.push(this);
-
-            this._externalData = new StringDictionary<Object>();
             this._uid = null;
 
             this._renderingManager = new RenderingManager(this);
 
             this.postProcessManager = new PostProcessManager(this);
 
-            this.postProcessRenderPipelineManager = new PostProcessRenderPipelineManager();
-
-            this._boundingBoxRenderer = new BoundingBoxRenderer(this);
-
             if (OutlineRenderer) {
                 this._outlineRenderer = new OutlineRenderer(this);
             }
@@ -754,6 +755,9 @@
         }
 
         public set workerCollisions(enabled: boolean) {
+            if (!BABYLON.CollisionCoordinatorLegacy) {
+                return;
+            }
 
             enabled = (enabled && !!Worker);
 
@@ -808,6 +812,10 @@
         }
 
         public getBoundingBoxRenderer(): BoundingBoxRenderer {
+            if (!this._boundingBoxRenderer) {
+                this._boundingBoxRenderer = new BoundingBoxRenderer(this);
+            }
+
             return this._boundingBoxRenderer;
         }
 
@@ -940,7 +948,9 @@
                 if (!this._meshPickProceed) {
                     let pickResult = this.pick(this._unTranslatedPointerX, this._unTranslatedPointerY, this.pointerDownPredicate, false, this.cameraToUseForPointers);
                     this._currentPickResult = pickResult;
-                    act = (pickResult.hit && pickResult.pickedMesh) ? pickResult.pickedMesh.actionManager : null;
+                    if (pickResult) {
+                        act = (pickResult.hit && pickResult.pickedMesh) ? pickResult.pickedMesh.actionManager : null;
+                    }
                     this._meshPickProceed = true;
                 }
                 return act;
@@ -965,7 +975,7 @@
                     let checkPicking = obs1.hasSpecificMask(PointerEventTypes.POINTERPICK) || obs2.hasSpecificMask(PointerEventTypes.POINTERPICK)
                                     || obs1.hasSpecificMask(PointerEventTypes.POINTERTAP) || obs2.hasSpecificMask(PointerEventTypes.POINTERTAP)
                                     || obs1.hasSpecificMask(PointerEventTypes.POINTERDOUBLETAP) || obs2.hasSpecificMask(PointerEventTypes.POINTERDOUBLETAP);
-                    if (!checkPicking && ActionManager.HasPickTriggers) {
+                    if (!checkPicking && BABYLON.ActionManager && ActionManager.HasPickTriggers) {
                         act = this._initActionManager(act, clickInfo);
                         if (act)
                             checkPicking = act.hasPickTriggers;
@@ -1097,7 +1107,7 @@
                 // Meshes
                 var pickResult = this.pick(this._unTranslatedPointerX, this._unTranslatedPointerY, this.pointerMovePredicate, false, this.cameraToUseForPointers);
 
-                if (pickResult.hit && pickResult.pickedMesh) {
+                if (pickResult && pickResult.hit && pickResult.pickedMesh) {
                     this.setPointerOverSprite(null);
 
                     this.setPointerOverMesh(pickResult.pickedMesh);
@@ -1116,7 +1126,7 @@
                     // Sprites
                     pickResult = this.pickSprite(this._unTranslatedPointerX, this._unTranslatedPointerY, spritePredicate, false, this.cameraToUseForPointers);
 
-                    if (pickResult.hit && pickResult.pickedSprite) {
+                    if (pickResult && pickResult.hit && pickResult.pickedSprite) {
                         this.setPointerOverSprite(pickResult.pickedSprite);
                         if (this._pointerOverSprite.actionManager && this._pointerOverSprite.actionManager.hoverCursor) {
                             canvas.style.cursor = this._pointerOverSprite.actionManager.hoverCursor;
@@ -1176,7 +1186,7 @@
                 this._pickedDownMesh = null;
                 var pickResult = this.pick(this._unTranslatedPointerX, this._unTranslatedPointerY, this.pointerDownPredicate, false, this.cameraToUseForPointers);
 
-                if (pickResult.hit && pickResult.pickedMesh) {
+                if (pickResult && pickResult.hit && pickResult.pickedMesh) {
                     this._pickedDownMesh = pickResult.pickedMesh;
                     var actionManager = pickResult.pickedMesh.actionManager;
                     if (actionManager) {
@@ -1201,7 +1211,7 @@
                                     (mesh: AbstractMesh): boolean => mesh.isPickable && mesh.isVisible && mesh.isReady() && mesh.actionManager && mesh.actionManager.hasSpecificTrigger(ActionManager.OnLongPressTrigger) && mesh == this._pickedDownMesh,
                                     false, this.cameraToUseForPointers);
 
-                                if (pickResult.hit && pickResult.pickedMesh) {
+                                if (pickResult && pickResult.hit && pickResult.pickedMesh) {
                                     if (this._isButtonPressed &&
                                         ((new Date().getTime() - this._startingPointerTime) > Scene.LongPressDelay) &&
                                         (Math.abs(this._startingPointerPosition.x - this._pointerX) < Scene.DragMovementThreshold &&
@@ -1230,7 +1240,7 @@
                 if (this.spriteManagers.length > 0) {
                     pickResult = this.pickSprite(this._unTranslatedPointerX, this._unTranslatedPointerY, spritePredicate, false, this.cameraToUseForPointers);
 
-                    if (pickResult.hit && pickResult.pickedSprite) {
+                    if (pickResult && pickResult.hit && pickResult.pickedSprite) {
                         if (pickResult.pickedSprite.actionManager) {
                             this._pickedDownSprite = pickResult.pickedSprite;
                             switch (evt.button) {
@@ -1303,14 +1313,14 @@
                     }
 
                     // Meshes
-                    if (!this._meshPickProceed && (ActionManager.HasTriggers || this.onPointerObservable.hasObservers())) {
+                    if (!this._meshPickProceed && (BABYLON.ActionManager && ActionManager.HasTriggers || this.onPointerObservable.hasObservers())) {
                         this._initActionManager(null, clickInfo);
                     }
                     if (!pickResult) {
                         pickResult = this._currentPickResult;
                     }
 
-                    if (pickResult && pickResult.pickedMesh) {
+                    if (pickResult && pickResult && pickResult.pickedMesh) {
                         this._pickedUpMesh = pickResult.pickedMesh;
                         if (this._pickedDownMesh === this._pickedUpMesh) {
                             if (this.onPointerPick) {
@@ -1696,7 +1706,9 @@
             var position = this.meshes.push(newMesh);
 
             //notify the collision coordinator
-            this.collisionCoordinator.onMeshAdded(newMesh);
+            if (this.collisionCoordinator) {
+                this.collisionCoordinator.onMeshAdded(newMesh);
+            }
 
             this.onNewMeshAddedObservable.notifyObservers(newMesh);
         }
@@ -1708,7 +1720,9 @@
                 this.meshes.splice(index, 1);
             }
             //notify the collision coordinator
-            this.collisionCoordinator.onMeshRemoved(toRemove);
+            if (this.collisionCoordinator) {
+                this.collisionCoordinator.onMeshRemoved(toRemove);
+            }
 
             this.onMeshRemovedObservable.notifyObservers(toRemove);
 
@@ -2040,7 +2054,9 @@
             this._geometries.push(geometry);
 
             //notify the collision coordinator
-            this.collisionCoordinator.onGeometryAdded(geometry);
+            if (this.collisionCoordinator) {
+                this.collisionCoordinator.onGeometryAdded(geometry);
+            }
 
             this.onNewGeometryAddedObservable.notifyObservers(geometry);
 
@@ -2059,7 +2075,9 @@
                 this._geometries.splice(index, 1);
 
                 //notify the collision coordinator
-                this.collisionCoordinator.onGeometryDeleted(geometry);
+                if (this.collisionCoordinator) {
+                    this.collisionCoordinator.onGeometryDeleted(geometry);
+                }
 
                 this.onGeometryRemovedObservable.notifyObservers(geometry);
                 return true;
@@ -2307,6 +2325,9 @@
          * @return true if no such key were already present and the data was added successfully, false otherwise
          */
         public addExternalData<T>(key: string, data: T): boolean {
+            if (!this._externalData) {
+                this._externalData = new StringDictionary<Object>();
+            }
             return this._externalData.add(key, data);
         }
 
@@ -2316,6 +2337,9 @@
          * @return the associated data, if present (can be null), or undefined if not present
          */
         public getExternalData<T>(key: string): T {
+            if (!this._externalData) {
+                return null;
+            }
             return <T>this._externalData.get(key);
         }
 
@@ -2326,6 +2350,9 @@
          * @return the associated data, can be null if the factory returned null.
          */
         public getOrAddExternalDataWithFactory<T>(key: string, factory: (k: string) => T): T {
+            if (!this._externalData) {
+                this._externalData = new StringDictionary<Object>();
+            }
             return <T>this._externalData.getOrAddWithFactory(key, factory);
         }
 
@@ -2343,7 +2370,7 @@
                 var material = subMesh.getMaterial();
 
                 if (mesh.showSubMeshesBoundingBox) {
-                    this._boundingBoxRenderer.renderList.push(subMesh.getBoundingInfo().boundingBox);
+                    this.getBoundingBoxRenderer().renderList.push(subMesh.getBoundingInfo().boundingBox);
                 }
 
                 if (material) {
@@ -2375,7 +2402,9 @@
             this._activeParticleSystems.reset();
             this._activeSkeletons.reset();
             this._softwareSkinnedMeshes.reset();
-            this._boundingBoxRenderer.reset();
+            if (this._boundingBoxRenderer) {
+                this._boundingBoxRenderer.reset();
+            }
             this._edgesRenderers.reset();
 
             // Meshes
@@ -2464,7 +2493,7 @@
             }
 
             if (sourceMesh.showBoundingBox || this.forceShowBoundingBoxes) {
-                this._boundingBoxRenderer.renderList.push(sourceMesh.getBoundingInfo().boundingBox);
+                this.getBoundingBoxRenderer().renderList.push(sourceMesh.getBoundingInfo().boundingBox);
             }
 
             if (sourceMesh._edgesRenderer) {
@@ -2628,7 +2657,9 @@
             Tools.EndPerformanceCounter("Main render");
 
             // Bounding boxes
-            this._boundingBoxRenderer.render();
+            if (this._boundingBoxRenderer) {
+                this._boundingBoxRenderer.render();
+            }
 
             // Edges
             for (var edgesRendererIndex = 0; edgesRendererIndex < this._edgesRenderers.length; edgesRendererIndex++) {
@@ -2860,7 +2891,9 @@
             }
 
             // RenderPipeline
-            this.postProcessRenderPipelineManager.update();
+            if (this._postProcessRenderPipelineManager) {
+                this._postProcessRenderPipelineManager.update();
+            }
 
             // Multi-cameras?
             if (this.activeCameras.length > 0) {
@@ -3070,8 +3103,6 @@
             this.skeletons = [];
             this.morphTargetManagers = [];
 
-            this._boundingBoxRenderer.dispose();
-
             if (this._depthRenderer) {
                 this._depthRenderer.dispose();
             }
@@ -3087,7 +3118,9 @@
             this._activeParticleSystems.dispose();
             this._activeSkeletons.dispose();
             this._softwareSkinnedMeshes.dispose();
-            this._boundingBoxRenderer.dispose();
+            if (this._boundingBoxRenderer) {
+                this._boundingBoxRenderer.dispose();
+            }
             this._edgesRenderers.dispose();
             this._meshesForIntersections.dispose();
             this._toBeDisposed.dispose();
@@ -3249,6 +3282,10 @@
         }
 
         public createPickingRayInCameraSpace(x: number, y: number, camera: Camera): Ray {
+            if (!BABYLON.PickingInfo) {
+                return null;
+            }
+
             var engine = this._engine;
 
             if (!camera) {
@@ -3269,6 +3306,10 @@
         }
 
         private _internalPick(rayFunction: (world: Matrix) => Ray, predicate: (mesh: AbstractMesh) => boolean, fastCheck?: boolean): PickingInfo {
+            if (!BABYLON.PickingInfo) {
+                return null;
+            }
+
             var pickingInfo = null;
 
             for (var meshIndex = 0; meshIndex < this.meshes.length; meshIndex++) {
@@ -3303,6 +3344,9 @@
         }
 
         private _internalMultiPick(rayFunction: (world: Matrix) => Ray, predicate: (mesh: AbstractMesh) => boolean): PickingInfo[] {
+            if (!BABYLON.PickingInfo) {
+                return null;
+            }            
             var pickingInfos = new Array<PickingInfo>();
 
             for (var meshIndex = 0; meshIndex < this.meshes.length; meshIndex++) {
@@ -3331,6 +3375,10 @@
 
 
         private _internalPickSprites(ray: Ray, predicate?: (sprite: Sprite) => boolean, fastCheck?: boolean, camera?: Camera): PickingInfo {
+            if (!BABYLON.PickingInfo) {
+                return null;
+            }
+
             var pickingInfo = null;
 
             camera = camera || this.activeCamera;