Преглед изворни кода

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

Sebastien Vandenberghe пре 7 година
родитељ
комит
06a0898af1
39 измењених фајлова са 17005 додато и 16755 уклоњено
  1. 6 5
      Tools/Gulp/config.json
  2. 24 10
      Tools/Gulp/gulp-addModuleExports.js
  3. 5 4
      Tools/Gulp/gulpfile.js
  4. 4 0
      Tools/Publisher/index.js
  5. 4030 4019
      dist/preview release/babylon.d.ts
  6. 41 41
      dist/preview release/babylon.js
  7. 71 26
      dist/preview release/babylon.max.js
  8. 4030 4019
      dist/preview release/babylon.module.d.ts
  9. 41 41
      dist/preview release/babylon.worker.js
  10. 4252 4241
      dist/preview release/customConfigurations/minimalGLTFViewer/babylon.d.ts
  11. 14 14
      dist/preview release/customConfigurations/minimalGLTFViewer/babylon.js
  12. 43 25
      dist/preview release/customConfigurations/minimalGLTFViewer/babylon.max.js
  13. 4252 4241
      dist/preview release/customConfigurations/minimalGLTFViewer/babylon.module.d.ts
  14. 7 4
      dist/preview release/gui/babylon.gui.js
  15. 2 2
      dist/preview release/gui/babylon.gui.min.js
  16. 17 3
      dist/preview release/inspector/babylon.inspector.bundle.js
  17. 33 0
      dist/preview release/inspector/package.json
  18. 34 0
      dist/preview release/inspector/readme.md
  19. 7 4
      dist/preview release/loaders/babylonjs.loaders.js
  20. 3 3
      dist/preview release/loaders/babylonjs.loaders.min.js
  21. 7 4
      dist/preview release/materialsLibrary/babylonjs.materials.js
  22. 2 2
      dist/preview release/materialsLibrary/babylonjs.materials.min.js
  23. 7 4
      dist/preview release/postProcessesLibrary/babylonjs.postProcess.js
  24. 1 1
      dist/preview release/postProcessesLibrary/babylonjs.postProcess.min.js
  25. 7 4
      dist/preview release/proceduralTexturesLibrary/babylonjs.proceduralTextures.js
  26. 1 1
      dist/preview release/proceduralTexturesLibrary/babylonjs.proceduralTextures.min.js
  27. 7 4
      dist/preview release/serializers/babylonjs.serializers.js
  28. 1 1
      dist/preview release/serializers/babylonjs.serializers.min.js
  29. 1 1
      inspector/webpack.config.js
  30. 4 0
      src/Behaviors/Cameras/babylon.autoRotationBehavior.ts
  31. 5 0
      src/Behaviors/Cameras/babylon.bouncingBehavior.ts
  32. 6 2
      src/Behaviors/Cameras/babylon.framingBehavior.ts
  33. 1 0
      src/Behaviors/babylon.behavior.ts
  34. 13 23
      src/Materials/Textures/babylon.mirrorTexture.ts
  35. 20 2
      src/Materials/Textures/babylon.renderTargetTexture.ts
  36. 0 4
      src/Physics/Plugins/babylon.cannonJSPlugin.ts
  37. 5 0
      src/Physics/babylon.physicsImpostor.ts
  38. 1 0
      src/babylon.node.ts
  39. BIN
      tests/validation/ReferenceImages/GLTF LOD.png

+ 6 - 5
Tools/Gulp/config.json

@@ -245,7 +245,7 @@
             "dependUpon": [
                 "core"
             ]
-        },    
+        },
         "instrumentation": {
             "files": [
                 "../../src/Instrumentation/babylon.engineInstrumentation.js",
@@ -255,7 +255,7 @@
             "dependUpon": [
                 "core"
             ]
-        },      
+        },
         "cameraBehaviors": {
             "files": [
                 "../../src/Behaviors/Cameras/babylon.framingBehavior.js",
@@ -408,7 +408,7 @@
                 "defaultUboDeclaration",
                 "shadowsFragmentFunctions",
                 "fresnelFunction",
-                "reflectionFunction",                
+                "reflectionFunction",
                 "imageProcessingDeclaration",
                 "imageProcessingFunctions",
                 "bumpFragmentFunctions",
@@ -464,7 +464,7 @@
                 "shadowsFragmentFunctions",
                 "pbrFunctions",
                 "imageProcessingDeclaration",
-                "imageProcessingFunctions",                
+                "imageProcessingFunctions",
                 "harmonicsFunctions",
                 "pbrLightFunctions",
                 "helperFunctions",
@@ -1645,7 +1645,8 @@
                 ],
                 "output": "babylon.inspector.js",
                 "webpack": "../../inspector/webpack.config.js",
-                "bundle": "true"
+                "bundle": "true",
+                "moduleDeclaration": "GUI"
             }
         ],
         "build": {

+ 24 - 10
Tools/Gulp/gulp-addModuleExports.js

@@ -1,34 +1,45 @@
 var gutil = require('gulp-util');
 var through = require('through2');
 
-module.exports = function (varName, subModule, extendsRoot) {
+/**
+ * The parameters for this function has grown during development.
+ * Eventually, this function will need to be reorganized. 
+ */
+module.exports = function (varName, subModule, extendsRoot, requireOnly) {
     return through.obj(function (file, enc, cb) {
 
-        var optionalRequire = `var babylonDependency; try { babylonDependency = BABYLON || (typeof require !== 'undefined' && require("../babylon.max")); } catch (e) { babylonDependency = BABYLON || (typeof require !== 'undefined' && require("babylonjs")); } 
+        var optionalRequire = `var globalObject = (typeof global !== 'undefined') ? global : ((typeof window !== 'undefined') ? window : this);
+var babylonDependency = (globalObject && globalObject.BABYLON) || BABYLON || (typeof require !== 'undefined' && require("babylonjs"));
 var BABYLON = babylonDependency;
 `;
         function moduleExportAddition(varName) {
 
-            let basicInit = `root["BABYLON"]${(subModule && !extendsRoot) ? '["' + varName + '"]' : ''} = factory();`;
+            let base = subModule ? 'BABYLON' : varName;
+
+            let basicInit = `root["${base}"]${(subModule && !extendsRoot) ? '["' + varName + '"]' : ''} = f;`;
+            let sadGlobalPolution = (!subModule) ? `var globalObject = (typeof global !== 'undefined') ? global : ((typeof window !== 'undefined') ? window : this);
+globalObject["${base}"] = f;` : '';
             /*if (extendsRoot) {
                 basicInit = `__extends(root["BABYLON"], factory()); `
             }*/
 
             return `\n\n(function universalModuleDefinition(root, factory) {
-                if (root && root["BABYLON"]) {
+                if (root && root["${base}"]) {
                     return;
                 }
+                var f = factory();
+                ${sadGlobalPolution}
     if(typeof exports === 'object' && typeof module === 'object')
-        module.exports = factory();
+        module.exports = f;
     else if(typeof define === 'function' && define.amd)
         define([], factory);
     else if(typeof exports === 'object')
-        exports["${varName}"] = factory();
+        exports["${varName}"] = f;
     else {
         ${basicInit}
     }
 })(this, function() {
-    return BABYLON${(subModule && !extendsRoot) ? '.' + varName : ''};
+    return ${base}${(subModule && !extendsRoot) ? '.' + varName : ''};
 });
 `;
         }
@@ -65,10 +76,13 @@ var BABYLON = babylonDependency;
         }
 
         try {
-            let pretext = subModule ? optionalRequire : '';
-            file.contents = new Buffer(pretext.concat(decorateAddition).concat(new Buffer(extendsAddition.concat(String(file.contents)).concat(moduleExportAddition(varName)))));
+            if (requireOnly) {
+                file.contents = new Buffer(optionalRequire.concat(String(file.contents)));
+            } else {
+                let pretext = subModule ? optionalRequire : '';
+                file.contents = new Buffer(pretext.concat(decorateAddition).concat(new Buffer(extendsAddition.concat(String(file.contents)).concat(moduleExportAddition(varName)))));
+            }
             this.push(file);
-
         } catch (err) {
             this.emit('error', new gutil.PluginError('gulp-add-module-exports', err, { fileName: file.path }));
         }

+ 5 - 4
Tools/Gulp/gulpfile.js

@@ -402,6 +402,7 @@ var buildExternalLibrary = function (library, settings, watch) {
             return waitAll.on("end", function () {
                 webpack(require(library.webpack))
                     .pipe(rename(library.output.replace(".js", ".bundle.js")))
+                    .pipe(addModuleExports(library.moduleDeclaration, false, false, true))
                     .pipe(gulp.dest(outputDirectory))
             });
         }
@@ -474,21 +475,21 @@ gulp.task("typescript-all", function (cb) {
  */
 gulp.task("watch", [], function () {
     var interval = 1000;
-    var tasks = [gulp.watch(config.typescript, { interval: interval}, ["typescript-compile"])];
+    var tasks = [gulp.watch(config.typescript, { interval: interval }, ["typescript-compile"])];
 
     config.modules.map(function (module) {
         config[module].libraries.map(function (library) {
-            tasks.push(gulp.watch(library.files, { interval: interval}, function () {
+            tasks.push(gulp.watch(library.files, { interval: interval }, function () {
                 console.log(library.output);
                 return buildExternalLibrary(library, config[module], true)
                     .pipe(debug());
             }));
-            tasks.push(gulp.watch(library.shaderFiles, { interval: interval}, function () {
+            tasks.push(gulp.watch(library.shaderFiles, { interval: interval }, function () {
                 console.log(library.output);
                 return buildExternalLibrary(library, config[module], true)
                     .pipe(debug())
             }));
-            tasks.push(gulp.watch(library.sassFiles, { interval: interval}, function () {
+            tasks.push(gulp.watch(library.sassFiles, { interval: interval }, function () {
                 console.log(library.output);
                 return buildExternalLibrary(library, config[module], true)
                     .pipe(debug())

+ 4 - 0
Tools/Publisher/index.js

@@ -35,6 +35,10 @@ let packages = [
     {
         name: 'proceduralTextures',
         path: basePath + '/proceduralTexturesLibrary/'
+    },
+    {
+        name: 'inspector',
+        path: basePath + '/inspector/'
     }
 ];
 

Разлика између датотеке није приказан због своје велике величине
+ 4030 - 4019
dist/preview release/babylon.d.ts


Разлика између датотеке није приказан због своје велике величине
+ 41 - 41
dist/preview release/babylon.js


+ 71 - 26
dist/preview release/babylon.max.js

@@ -12293,11 +12293,22 @@ var BABYLON;
             return this._scene.getEngine();
         };
         Node.prototype.addBehavior = function (behavior) {
+            var _this = this;
             var index = this._behaviors.indexOf(behavior);
             if (index !== -1) {
                 return this;
             }
-            behavior.attach(this);
+            behavior.init();
+            if (this._scene.isLoading) {
+                // We defer the attach when the scene will be loaded
+                var observer = this._scene.onDataLoadedObservable.add(function () {
+                    behavior.attach(_this);
+                    _this._scene.onDataLoadedObservable.remove(observer);
+                });
+            }
+            else {
+                behavior.attach(this);
+            }
             this._behaviors.push(behavior);
             return this;
         };
@@ -17487,6 +17498,11 @@ var BABYLON;
             */
             this.onAfterSpritesRenderingObservable = new BABYLON.Observable();
             /**
+            * An event triggered when SceneLoader.Append or SceneLoader.Load or SceneLoader.ImportMesh were successfully executed
+            * @type {BABYLON.Observable}
+            */
+            this.onDataLoadedObservable = new BABYLON.Observable();
+            /**
             * An event triggered when a camera is created
             * @type {BABYLON.Observable}
             */
@@ -18925,14 +18941,25 @@ var BABYLON;
             this._pendingData.push(data);
         };
         Scene.prototype._removePendingData = function (data) {
+            var wasLoading = this.isLoading;
             var index = this._pendingData.indexOf(data);
             if (index !== -1) {
                 this._pendingData.splice(index, 1);
             }
+            if (wasLoading && !this.isLoading) {
+                this.onDataLoadedObservable.notifyObservers(this);
+            }
         };
         Scene.prototype.getWaitingItemsCount = function () {
             return this._pendingData.length;
         };
+        Object.defineProperty(Scene.prototype, "isLoading", {
+            get: function () {
+                return this._pendingData.length > 0;
+            },
+            enumerable: true,
+            configurable: true
+        });
         /**
          * Registers a function to be executed when the scene is ready.
          * @param {Function} func - the function to be executed.
@@ -20446,6 +20473,7 @@ var BABYLON;
             this.onAfterPhysicsObservable.clear();
             this.onBeforeAnimationsObservable.clear();
             this.onAfterAnimationsObservable.clear();
+            this.onDataLoadedObservable.clear();
             this.detachControl();
             // Release sounds & sounds tracks
             if (BABYLON.AudioEngine) {
@@ -49760,7 +49788,10 @@ var BABYLON;
             _this._engine = scene.getEngine();
             _this.name = name;
             _this.isRenderTarget = true;
+            _this._initialSizeParameter = size;
             _this._processSizeParameter(size);
+            _this._resizeObserver = _this.getScene().getEngine().onResizeObservable.add(function () {
+            });
             _this._generateMipMaps = generateMipMaps ? true : false;
             _this._doNotChangeAspectRatio = doNotChangeAspectRatio;
             // Rendering groups
@@ -49857,6 +49888,11 @@ var BABYLON;
             enumerable: true,
             configurable: true
         });
+        RenderTargetTexture.prototype._onRatioRescale = function () {
+            if (this._sizeRatio) {
+                this.resize(this._initialSizeParameter);
+            }
+        };
         RenderTargetTexture.prototype._processSizeParameter = function (size) {
             if (size.ratio) {
                 this._sizeRatio = size.ratio;
@@ -50250,6 +50286,10 @@ var BABYLON;
                 this._postProcessManager = null;
             }
             this.clearPostProcesses(true);
+            if (this._resizeObserver) {
+                this.getScene().getEngine().onResizeObservable.remove(this._resizeObserver);
+                this._resizeObserver = null;
+            }
             this.renderList = null;
             // Remove from custom render targets
             var scene = this.getScene();
@@ -50464,17 +50504,6 @@ var BABYLON;
             _this._blurKernelY = 0;
             _this._blurRatio = 1.0;
             _this.ignoreCameraViewport = true;
-            _this._resizeObserver = _this.getScene().getEngine().onResizeObservable.add(function () {
-                if (size.ratio) {
-                    _this.resize(size);
-                    if (!_this._adaptiveBlurKernel) {
-                        _this._preparePostProcesses();
-                    }
-                }
-                if (_this._adaptiveBlurKernel) {
-                    _this._autoComputeBlurKernel();
-                }
-            });
             _this.onBeforeRenderObservable.add(function () {
                 BABYLON.Matrix.ReflectionToRef(_this.mirrorPlane, _this._mirrorMatrix);
                 _this._savedViewMatrix = scene.getViewMatrix();
@@ -50557,6 +50586,17 @@ var BABYLON;
             this.blurKernelX = this._adaptiveBlurKernel * dw;
             this.blurKernelY = this._adaptiveBlurKernel * dh;
         };
+        MirrorTexture.prototype._onRatioRescale = function () {
+            if (this._sizeRatio) {
+                this.resize(this._initialSizeParameter);
+                if (!this._adaptiveBlurKernel) {
+                    this._preparePostProcesses();
+                }
+            }
+            if (this._adaptiveBlurKernel) {
+                this._autoComputeBlurKernel();
+            }
+        };
         MirrorTexture.prototype._preparePostProcesses = function () {
             this.clearPostProcesses(true);
             if (this._blurKernelX && this._blurKernelY) {
@@ -50602,13 +50642,6 @@ var BABYLON;
             serializationObject.mirrorPlane = this.mirrorPlane.asArray();
             return serializationObject;
         };
-        MirrorTexture.prototype.dispose = function () {
-            if (this._resizeObserver) {
-                this.getScene().getEngine().onResizeObservable.remove(this._resizeObserver);
-                this._resizeObserver = null;
-            }
-            _super.prototype.dispose.call(this);
-        };
         return MirrorTexture;
     }(BABYLON.RenderTargetTexture));
     BABYLON.MirrorTexture = MirrorTexture;
@@ -65901,6 +65934,7 @@ var BABYLON;
                 }
                 _this.object.translate(_this._deltaPosition, -1);
                 _this._deltaRotationConjugated && _this.object.rotationQuaternion && _this.object.rotationQuaternion.multiplyToRef(_this._deltaRotationConjugated, _this.object.rotationQuaternion);
+                _this.object.computeWorldMatrix(false);
                 if (_this.object.parent && _this.object.rotationQuaternion) {
                     _this.getParentsRotation();
                     _this._tmpQuat.multiplyToRef(_this.object.rotationQuaternion, _this._tmpQuat);
@@ -65922,6 +65956,9 @@ var BABYLON;
                 if (!_this._physicsEngine) {
                     return;
                 }
+                _this._onAfterPhysicsStepCallbacks.forEach(function (func) {
+                    func(_this);
+                });
                 _this._physicsEngine.getPhysicsPlugin().setTransformationFromPhysicsBody(_this);
                 // object has now its world rotation. needs to be converted to local.
                 if (_this.object.parent && _this.object.rotationQuaternion) {
@@ -67039,14 +67076,10 @@ var BABYLON;
             impostor.object.position.copyFrom(impostor.physicsBody.position);
             if (impostor.object.rotationQuaternion) {
                 impostor.object.rotationQuaternion.copyFrom(impostor.physicsBody.quaternion);
-                //impostor.object.rotationQuaternion.y *= -1;
-                //impostor.object.rotationQuaternion.z *= -1;
             }
         };
         CannonJSPlugin.prototype.setPhysicsBodyTransformation = function (impostor, newPosition, newRotation) {
             impostor.physicsBody.position.copy(newPosition);
-            //newRotation.y *= -1;
-            //newRotation.z *= -1;
             impostor.physicsBody.quaternion.copy(newRotation);
         };
         CannonJSPlugin.prototype.isSupported = function () {
@@ -74575,6 +74608,9 @@ var BABYLON;
             enumerable: true,
             configurable: true
         });
+        FramingBehavior.prototype.init = function () {
+            // Do notihng
+        };
         FramingBehavior.prototype.attach = function (camera) {
             var _this = this;
             this._attachedCamera = camera;
@@ -74931,6 +74967,9 @@ var BABYLON;
             enumerable: true,
             configurable: true
         });
+        BouncingBehavior.prototype.init = function () {
+            // Do notihng
+        };
         BouncingBehavior.prototype.attach = function (camera) {
             var _this = this;
             this._attachedCamera = camera;
@@ -75131,6 +75170,9 @@ var BABYLON;
             enumerable: true,
             configurable: true
         });
+        AutoRotationBehavior.prototype.init = function () {
+            // Do notihng
+        };
         AutoRotationBehavior.prototype.attach = function (camera) {
             var _this = this;
             this._attachedCamera = camera;
@@ -76204,14 +76246,17 @@ BABYLON.Effect.IncludesShadersStore={"depthPrePass":"#ifdef DEPTHPREPASS\ngl_Fra
                 if (root && root["BABYLON"]) {
                     return;
                 }
+                var f = factory();
+                var globalObject = (typeof global !== 'undefined') ? global : ((typeof window !== 'undefined') ? window : this);
+globalObject["BABYLON"] = f;
     if(typeof exports === 'object' && typeof module === 'object')
-        module.exports = factory();
+        module.exports = f;
     else if(typeof define === 'function' && define.amd)
         define([], factory);
     else if(typeof exports === 'object')
-        exports["BABYLON"] = factory();
+        exports["BABYLON"] = f;
     else {
-        root["BABYLON"] = factory();
+        root["BABYLON"] = f;
     }
 })(this, function() {
     return BABYLON;

Разлика између датотеке није приказан због своје велике величине
+ 4030 - 4019
dist/preview release/babylon.module.d.ts


Разлика између датотеке није приказан због своје велике величине
+ 41 - 41
dist/preview release/babylon.worker.js


Разлика између датотеке није приказан због своје велике величине
+ 4252 - 4241
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.d.ts


Разлика између датотеке није приказан због своје велике величине
+ 14 - 14
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.js


+ 43 - 25
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.max.js

@@ -12298,6 +12298,7 @@ var BABYLON;
             if (index !== -1) {
                 return this;
             }
+            behavior.init();
             if (this._scene.isLoading) {
                 // We defer the attach when the scene will be loaded
                 var observer = this._scene.onDataLoadedObservable.add(function () {
@@ -49633,7 +49634,10 @@ var BABYLON;
             _this._engine = scene.getEngine();
             _this.name = name;
             _this.isRenderTarget = true;
+            _this._initialSizeParameter = size;
             _this._processSizeParameter(size);
+            _this._resizeObserver = _this.getScene().getEngine().onResizeObservable.add(function () {
+            });
             _this._generateMipMaps = generateMipMaps ? true : false;
             _this._doNotChangeAspectRatio = doNotChangeAspectRatio;
             // Rendering groups
@@ -49730,6 +49734,11 @@ var BABYLON;
             enumerable: true,
             configurable: true
         });
+        RenderTargetTexture.prototype._onRatioRescale = function () {
+            if (this._sizeRatio) {
+                this.resize(this._initialSizeParameter);
+            }
+        };
         RenderTargetTexture.prototype._processSizeParameter = function (size) {
             if (size.ratio) {
                 this._sizeRatio = size.ratio;
@@ -50123,6 +50132,10 @@ var BABYLON;
                 this._postProcessManager = null;
             }
             this.clearPostProcesses(true);
+            if (this._resizeObserver) {
+                this.getScene().getEngine().onResizeObservable.remove(this._resizeObserver);
+                this._resizeObserver = null;
+            }
             this.renderList = null;
             // Remove from custom render targets
             var scene = this.getScene();
@@ -50337,17 +50350,6 @@ var BABYLON;
             _this._blurKernelY = 0;
             _this._blurRatio = 1.0;
             _this.ignoreCameraViewport = true;
-            _this._resizeObserver = _this.getScene().getEngine().onResizeObservable.add(function () {
-                if (size.ratio) {
-                    _this.resize(size);
-                    if (!_this._adaptiveBlurKernel) {
-                        _this._preparePostProcesses();
-                    }
-                }
-                if (_this._adaptiveBlurKernel) {
-                    _this._autoComputeBlurKernel();
-                }
-            });
             _this.onBeforeRenderObservable.add(function () {
                 BABYLON.Matrix.ReflectionToRef(_this.mirrorPlane, _this._mirrorMatrix);
                 _this._savedViewMatrix = scene.getViewMatrix();
@@ -50430,6 +50432,17 @@ var BABYLON;
             this.blurKernelX = this._adaptiveBlurKernel * dw;
             this.blurKernelY = this._adaptiveBlurKernel * dh;
         };
+        MirrorTexture.prototype._onRatioRescale = function () {
+            if (this._sizeRatio) {
+                this.resize(this._initialSizeParameter);
+                if (!this._adaptiveBlurKernel) {
+                    this._preparePostProcesses();
+                }
+            }
+            if (this._adaptiveBlurKernel) {
+                this._autoComputeBlurKernel();
+            }
+        };
         MirrorTexture.prototype._preparePostProcesses = function () {
             this.clearPostProcesses(true);
             if (this._blurKernelX && this._blurKernelY) {
@@ -50475,13 +50488,6 @@ var BABYLON;
             serializationObject.mirrorPlane = this.mirrorPlane.asArray();
             return serializationObject;
         };
-        MirrorTexture.prototype.dispose = function () {
-            if (this._resizeObserver) {
-                this.getScene().getEngine().onResizeObservable.remove(this._resizeObserver);
-                this._resizeObserver = null;
-            }
-            _super.prototype.dispose.call(this);
-        };
         return MirrorTexture;
     }(BABYLON.RenderTargetTexture));
     BABYLON.MirrorTexture = MirrorTexture;
@@ -65774,6 +65780,7 @@ var BABYLON;
                 }
                 _this.object.translate(_this._deltaPosition, -1);
                 _this._deltaRotationConjugated && _this.object.rotationQuaternion && _this.object.rotationQuaternion.multiplyToRef(_this._deltaRotationConjugated, _this.object.rotationQuaternion);
+                _this.object.computeWorldMatrix(false);
                 if (_this.object.parent && _this.object.rotationQuaternion) {
                     _this.getParentsRotation();
                     _this._tmpQuat.multiplyToRef(_this.object.rotationQuaternion, _this._tmpQuat);
@@ -65795,6 +65802,9 @@ var BABYLON;
                 if (!_this._physicsEngine) {
                     return;
                 }
+                _this._onAfterPhysicsStepCallbacks.forEach(function (func) {
+                    func(_this);
+                });
                 _this._physicsEngine.getPhysicsPlugin().setTransformationFromPhysicsBody(_this);
                 // object has now its world rotation. needs to be converted to local.
                 if (_this.object.parent && _this.object.rotationQuaternion) {
@@ -66912,14 +66922,10 @@ var BABYLON;
             impostor.object.position.copyFrom(impostor.physicsBody.position);
             if (impostor.object.rotationQuaternion) {
                 impostor.object.rotationQuaternion.copyFrom(impostor.physicsBody.quaternion);
-                //impostor.object.rotationQuaternion.y *= -1;
-                //impostor.object.rotationQuaternion.z *= -1;
             }
         };
         CannonJSPlugin.prototype.setPhysicsBodyTransformation = function (impostor, newPosition, newRotation) {
             impostor.physicsBody.position.copy(newPosition);
-            //newRotation.y *= -1;
-            //newRotation.z *= -1;
             impostor.physicsBody.quaternion.copy(newRotation);
         };
         CannonJSPlugin.prototype.isSupported = function () {
@@ -74448,6 +74454,9 @@ var BABYLON;
             enumerable: true,
             configurable: true
         });
+        FramingBehavior.prototype.init = function () {
+            // Do notihng
+        };
         FramingBehavior.prototype.attach = function (camera) {
             var _this = this;
             this._attachedCamera = camera;
@@ -74804,6 +74813,9 @@ var BABYLON;
             enumerable: true,
             configurable: true
         });
+        BouncingBehavior.prototype.init = function () {
+            // Do notihng
+        };
         BouncingBehavior.prototype.attach = function (camera) {
             var _this = this;
             this._attachedCamera = camera;
@@ -75004,6 +75016,9 @@ var BABYLON;
             enumerable: true,
             configurable: true
         });
+        AutoRotationBehavior.prototype.init = function () {
+            // Do notihng
+        };
         AutoRotationBehavior.prototype.attach = function (camera) {
             var _this = this;
             this._attachedCamera = camera;
@@ -81005,14 +81020,17 @@ var BABYLON;
                 if (root && root["BABYLON"]) {
                     return;
                 }
+                var f = factory();
+                var globalObject = (typeof global !== 'undefined') ? global : ((typeof window !== 'undefined') ? window : this);
+globalObject["BABYLON"] = f;
     if(typeof exports === 'object' && typeof module === 'object')
-        module.exports = factory();
+        module.exports = f;
     else if(typeof define === 'function' && define.amd)
         define([], factory);
     else if(typeof exports === 'object')
-        exports["BABYLON"] = factory();
+        exports["BABYLON"] = f;
     else {
-        root["BABYLON"] = factory();
+        root["BABYLON"] = f;
     }
 })(this, function() {
     return BABYLON;

Разлика између датотеке није приказан због своје велике величине
+ 4252 - 4241
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.module.d.ts


+ 7 - 4
dist/preview release/gui/babylon.gui.js

@@ -1,4 +1,5 @@
-var babylonDependency; try { babylonDependency = BABYLON || (typeof require !== 'undefined' && require("../babylon.max")); } catch (e) { babylonDependency = BABYLON || (typeof require !== 'undefined' && require("babylonjs")); } 
+var globalObject = (typeof global !== 'undefined') ? global : ((typeof window !== 'undefined') ? window : this);
+var babylonDependency = (globalObject && globalObject.BABYLON) || BABYLON || (typeof require !== 'undefined' && require("babylonjs"));
 var BABYLON = babylonDependency;
 var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -4500,14 +4501,16 @@ var BABYLON;
                 if (root && root["BABYLON"]) {
                     return;
                 }
+                var f = factory();
+                
     if(typeof exports === 'object' && typeof module === 'object')
-        module.exports = factory();
+        module.exports = f;
     else if(typeof define === 'function' && define.amd)
         define([], factory);
     else if(typeof exports === 'object')
-        exports["GUI"] = factory();
+        exports["GUI"] = f;
     else {
-        root["BABYLON"]["GUI"] = factory();
+        root["BABYLON"]["GUI"] = f;
     }
 })(this, function() {
     return BABYLON.GUI;

Разлика између датотеке није приказан због своје велике величине
+ 2 - 2
dist/preview release/gui/babylon.gui.min.js


Разлика између датотеке није приказан због своје велике величине
+ 17 - 3
dist/preview release/inspector/babylon.inspector.bundle.js


+ 33 - 0
dist/preview release/inspector/package.json

@@ -0,0 +1,33 @@
+{
+    "author": {
+        "name": "David CATUHE"
+    },
+    "name": "babylonjs-inspector",
+    "description": "The Babylon.js inspector.",
+    "version": "3.1.0-beta1.0",
+    "repository": {
+        "type": "git",
+        "url": "https://github.com/BabylonJS/Babylon.js.git"
+    },
+    "main": "babylonjs.inspector.bundle.js",
+    "files": [
+        "babylonjs.inspector.bundle.js",
+        "readme.md",
+        "package.json"
+    ],
+    "keywords": [
+        "3D",
+        "javascript",
+        "html5",
+        "webgl",
+        "babylonjs",
+        "inspector"
+    ],
+    "license": "Apache-2.0",
+    "peerDependencies": {
+        "babylonjs": ">=3.1.0-alpha"
+    },
+    "engines": {
+        "node": "*"
+    }
+}

+ 34 - 0
dist/preview release/inspector/readme.md

@@ -0,0 +1,34 @@
+Babylon.js inspector module
+=====================
+
+For usage documentation please visit http://doc.babylonjs.com/how_to/debug_layer and search "inspector".
+
+# Installation instructions
+
+The inspector will be **automatically** (async) loaded when starting the debug layer, if not already included. So technically, nothing needs to be done!
+
+If you wish however to use a different version of the inspector or host it on your own, follow these instructions:
+
+## CDN
+
+The latest compiled js file is offered on our public CDN here:
+
+* https://preview.babylonjs.com/inspector/babylonjs.inspector.bundle.js
+
+## NPM
+
+To install using npm :
+
+```
+npm install --save babylonjs babylonjs-inspector
+```
+Afterwards it can be imported to the project using:
+
+```
+import * as BABYLON from 'babylonjs';
+import 'babylonjs-inspector';
+```
+
+This will create a global INSPECTOR variable that will be used bay BabylonJS
+
+Webpack is supported.

+ 7 - 4
dist/preview release/loaders/babylonjs.loaders.js

@@ -1,4 +1,5 @@
-var babylonDependency; try { babylonDependency = BABYLON || (typeof require !== 'undefined' && require("../babylon.max")); } catch (e) { babylonDependency = BABYLON || (typeof require !== 'undefined' && require("babylonjs")); } 
+var globalObject = (typeof global !== 'undefined') ? global : ((typeof window !== 'undefined') ? window : this);
+var babylonDependency = (globalObject && globalObject.BABYLON) || BABYLON || (typeof require !== 'undefined' && require("babylonjs"));
 var BABYLON = babylonDependency;
 var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -5118,14 +5119,16 @@ var BABYLON;
                 if (root && root["BABYLON"]) {
                     return;
                 }
+                var f = factory();
+                
     if(typeof exports === 'object' && typeof module === 'object')
-        module.exports = factory();
+        module.exports = f;
     else if(typeof define === 'function' && define.amd)
         define([], factory);
     else if(typeof exports === 'object')
-        exports["BJSLoaders"] = factory();
+        exports["BJSLoaders"] = f;
     else {
-        root["BABYLON"] = factory();
+        root["BABYLON"] = f;
     }
 })(this, function() {
     return BABYLON;

Разлика између датотеке није приказан због своје велике величине
+ 3 - 3
dist/preview release/loaders/babylonjs.loaders.min.js


+ 7 - 4
dist/preview release/materialsLibrary/babylonjs.materials.js

@@ -1,4 +1,5 @@
-var babylonDependency; try { babylonDependency = BABYLON || (typeof require !== 'undefined' && require("../babylon.max")); } catch (e) { babylonDependency = BABYLON || (typeof require !== 'undefined' && require("babylonjs")); } 
+var globalObject = (typeof global !== 'undefined') ? global : ((typeof window !== 'undefined') ? window : this);
+var babylonDependency = (globalObject && globalObject.BABYLON) || BABYLON || (typeof require !== 'undefined' && require("babylonjs"));
 var BABYLON = babylonDependency;
 var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -7232,14 +7233,16 @@ BABYLON.Effect.IncludesShadersStore['backgroundVertexDeclaration'] = "uniform ma
                 if (root && root["BABYLON"]) {
                     return;
                 }
+                var f = factory();
+                
     if(typeof exports === 'object' && typeof module === 'object')
-        module.exports = factory();
+        module.exports = f;
     else if(typeof define === 'function' && define.amd)
         define([], factory);
     else if(typeof exports === 'object')
-        exports["BJSMaterials"] = factory();
+        exports["BJSMaterials"] = f;
     else {
-        root["BABYLON"] = factory();
+        root["BABYLON"] = f;
     }
 })(this, function() {
     return BABYLON;

Разлика између датотеке није приказан због своје велике величине
+ 2 - 2
dist/preview release/materialsLibrary/babylonjs.materials.min.js


+ 7 - 4
dist/preview release/postProcessesLibrary/babylonjs.postProcess.js

@@ -1,4 +1,5 @@
-var babylonDependency; try { babylonDependency = BABYLON || (typeof require !== 'undefined' && require("../babylon.max")); } catch (e) { babylonDependency = BABYLON || (typeof require !== 'undefined' && require("babylonjs")); } 
+var globalObject = (typeof global !== 'undefined') ? global : ((typeof window !== 'undefined') ? window : this);
+var babylonDependency = (globalObject && globalObject.BABYLON) || BABYLON || (typeof require !== 'undefined' && require("babylonjs"));
 var BABYLON = babylonDependency;
 var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -448,14 +449,16 @@ BABYLON.Effect.ShadersStore['digitalrainPixelShader'] = "\nvarying vec2 vUV;\nun
                 if (root && root["BABYLON"]) {
                     return;
                 }
+                var f = factory();
+                
     if(typeof exports === 'object' && typeof module === 'object')
-        module.exports = factory();
+        module.exports = f;
     else if(typeof define === 'function' && define.amd)
         define([], factory);
     else if(typeof exports === 'object')
-        exports["BJSPostProcess"] = factory();
+        exports["BJSPostProcess"] = f;
     else {
-        root["BABYLON"] = factory();
+        root["BABYLON"] = f;
     }
 })(this, function() {
     return BABYLON;

Разлика између датотеке није приказан због своје велике величине
+ 1 - 1
dist/preview release/postProcessesLibrary/babylonjs.postProcess.min.js


+ 7 - 4
dist/preview release/proceduralTexturesLibrary/babylonjs.proceduralTextures.js

@@ -1,4 +1,5 @@
-var babylonDependency; try { babylonDependency = BABYLON || (typeof require !== 'undefined' && require("../babylon.max")); } catch (e) { babylonDependency = BABYLON || (typeof require !== 'undefined' && require("babylonjs")); } 
+var globalObject = (typeof global !== 'undefined') ? global : ((typeof window !== 'undefined') ? window : this);
+var babylonDependency = (globalObject && globalObject.BABYLON) || BABYLON || (typeof require !== 'undefined' && require("babylonjs"));
 var BABYLON = babylonDependency;
 var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -749,14 +750,16 @@ BABYLON.Effect.ShadersStore['perlinNoiseProceduralTexturePixelShader'] = "\nprec
                 if (root && root["BABYLON"]) {
                     return;
                 }
+                var f = factory();
+                
     if(typeof exports === 'object' && typeof module === 'object')
-        module.exports = factory();
+        module.exports = f;
     else if(typeof define === 'function' && define.amd)
         define([], factory);
     else if(typeof exports === 'object')
-        exports["BJSProceduralTextures"] = factory();
+        exports["BJSProceduralTextures"] = f;
     else {
-        root["BABYLON"] = factory();
+        root["BABYLON"] = f;
     }
 })(this, function() {
     return BABYLON;

Разлика између датотеке није приказан због своје велике величине
+ 1 - 1
dist/preview release/proceduralTexturesLibrary/babylonjs.proceduralTextures.min.js


+ 7 - 4
dist/preview release/serializers/babylonjs.serializers.js

@@ -1,4 +1,5 @@
-var babylonDependency; try { babylonDependency = BABYLON || (typeof require !== 'undefined' && require("../babylon.max")); } catch (e) { babylonDependency = BABYLON || (typeof require !== 'undefined' && require("babylonjs")); } 
+var globalObject = (typeof global !== 'undefined') ? global : ((typeof window !== 'undefined') ? window : this);
+var babylonDependency = (globalObject && globalObject.BABYLON) || BABYLON || (typeof require !== 'undefined' && require("babylonjs"));
 var BABYLON = babylonDependency;
 var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -146,14 +147,16 @@ var BABYLON;
                 if (root && root["BABYLON"]) {
                     return;
                 }
+                var f = factory();
+                
     if(typeof exports === 'object' && typeof module === 'object')
-        module.exports = factory();
+        module.exports = f;
     else if(typeof define === 'function' && define.amd)
         define([], factory);
     else if(typeof exports === 'object')
-        exports["BJSSerializers"] = factory();
+        exports["BJSSerializers"] = f;
     else {
-        root["BABYLON"] = factory();
+        root["BABYLON"] = f;
     }
 })(this, function() {
     return BABYLON;

Разлика између датотеке није приказан због своје велике величине
+ 1 - 1
dist/preview release/serializers/babylonjs.serializers.min.js


+ 1 - 1
inspector/webpack.config.js

@@ -4,7 +4,7 @@ module.exports = {
         "../../dist/preview release/inspector/babylon.inspector.min.js"
     ],
     output: {
-        libraryTarget: "var",
+        libraryTarget: "umd",
         library: "INSPECTOR",
         umdNamedDefine: true
     },

+ 4 - 0
src/Behaviors/Cameras/babylon.autoRotationBehavior.ts

@@ -81,6 +81,10 @@ module BABYLON {
 		private _lastInteractionTime = -Infinity;
 		private _cameraRotationSpeed: number = 0;
 
+		public init(): void {
+			// Do notihng
+		}
+
         public attach(camera: ArcRotateCamera): void {
             this._attachedCamera = camera;
             let scene = this._attachedCamera.getScene();

+ 5 - 0
src/Behaviors/Cameras/babylon.bouncingBehavior.ts

@@ -78,6 +78,11 @@ module BABYLON {
         private _attachedCamera: Nullable<ArcRotateCamera>;
 		private _onAfterCheckInputsObserver: Nullable<Observer<Camera>>;	
 		private _onMeshTargetChangedObserver: Nullable<Observer<AbstractMesh>>;
+
+		public init(): void {
+			// Do notihng
+		}
+		
         public attach(camera: ArcRotateCamera): void {
             this._attachedCamera = camera;
             this._onAfterCheckInputsObserver = camera.onAfterCheckInputsObservable.add(() => {

+ 6 - 2
src/Behaviors/Cameras/babylon.framingBehavior.ts

@@ -145,8 +145,12 @@ module BABYLON {
 		private _onMeshTargetChangedObserver: Nullable<Observer<AbstractMesh>>;
         private _attachedCamera: Nullable<ArcRotateCamera>;
         private _isPointerDown = false;
-        private _lastInteractionTime = -Infinity;
-
+		private _lastInteractionTime = -Infinity;
+		
+		public init(): void {
+			// Do notihng
+		}
+		
         public attach(camera: ArcRotateCamera): void {
             this._attachedCamera = camera;
 			let scene = this._attachedCamera.getScene();

+ 1 - 0
src/Behaviors/babylon.behavior.ts

@@ -2,6 +2,7 @@ module BABYLON {
     export interface Behavior<T extends Node> {
         name: string;
 
+        init(): void
         attach(node: T): void;
         detach(): void;
     }

+ 13 - 23
src/Materials/Textures/babylon.mirrorTexture.ts

@@ -13,8 +13,6 @@
         private _blurKernelY = 0;
         private _blurRatio = 1.0;
 
-        private _resizeObserver: Nullable<Observer<Engine>>;
-
         public set blurRatio(value: number) {
             if (this._blurRatio === value) {
                 return;
@@ -73,24 +71,24 @@
             this.blurKernelY = this._adaptiveBlurKernel * dh;
         }
 
+        protected _onRatioRescale(): void {
+            if (this._sizeRatio) {
+                this.resize(this._initialSizeParameter);
+                if (!this._adaptiveBlurKernel) {
+                    this._preparePostProcesses();
+                }
+            }
+
+            if (this._adaptiveBlurKernel) {
+                this._autoComputeBlurKernel();
+            }
+        }
+
         constructor(name: string, size: number | {width: number, height: number} | {ratio: number}, scene: Scene, generateMipMaps?: boolean, type: number = Engine.TEXTURETYPE_UNSIGNED_INT, samplingMode = Texture.BILINEAR_SAMPLINGMODE, generateDepthBuffer = true) {
             super(name, size, scene, generateMipMaps, true, type, false, samplingMode, generateDepthBuffer);
 
             this.ignoreCameraViewport = true;
 
-            this._resizeObserver = this.getScene()!.getEngine().onResizeObservable.add(() => {
-                if ((<{ratio: number}>size).ratio) {
-                    this.resize(size);
-                    if (!this._adaptiveBlurKernel) {
-                        this._preparePostProcesses();
-                    }
-                }
-
-                if (this._adaptiveBlurKernel) {
-                    this._autoComputeBlurKernel();
-                }
-            });
-
             this.onBeforeRenderObservable.add(() => {
                 Matrix.ReflectionToRef(this.mirrorPlane, this._mirrorMatrix);
                 this._savedViewMatrix = scene.getViewMatrix();
@@ -195,13 +193,5 @@
 
             return serializationObject;
         }
-
-        public dispose(): void {
-            if (this._resizeObserver) {
-                this.getScene()!.getEngine().onResizeObservable.remove(this._resizeObserver);
-                this._resizeObserver = null;
-            }
-            super.dispose();
-        }
     }
 } 

+ 20 - 2
src/Materials/Textures/babylon.renderTargetTexture.ts

@@ -35,7 +35,9 @@
         public ignoreCameraViewport: boolean = false;
 
         private _postProcessManager: Nullable<PostProcessManager>;
-        private _postProcesses: PostProcess[];
+        private _postProcesses: PostProcess[];        
+
+        private _resizeObserver: Nullable<Observer<Engine>>;
 
         // Events
 
@@ -103,7 +105,8 @@
 
         public clearColor: Color4;
         protected _size: number | {width: number, height: number};
-        private _sizeRatio: Nullable<number>;
+        protected _initialSizeParameter: number | {width: number, height: number} | {ratio: number}
+        protected _sizeRatio: Nullable<number>;
         public _generateMipMaps: boolean;
         protected _renderingManager: RenderingManager;
         public _waitingRenderList: string[];
@@ -119,6 +122,12 @@
 
         protected _engine: Engine;
 
+        protected _onRatioRescale(): void {
+            if (this._sizeRatio) {
+                this.resize(this._initialSizeParameter);
+            }
+        }
+
         constructor(name: string, size: number | {width: number, height: number} | {ratio: number}, scene: Nullable<Scene>, generateMipMaps?: boolean, doNotChangeAspectRatio: boolean = true, type: number = Engine.TEXTURETYPE_UNSIGNED_INT, public isCube = false, samplingMode = Texture.TRILINEAR_SAMPLINGMODE, generateDepthBuffer = true, generateStencilBuffer = false, isMulti = false) {
             super(null, scene, !generateMipMaps);
             scene = this.getScene();
@@ -130,9 +139,13 @@
             this._engine = scene.getEngine();
             this.name = name;
             this.isRenderTarget = true;
+            this._initialSizeParameter = size;
 
             this._processSizeParameter(size);
 
+            this._resizeObserver = this.getScene()!.getEngine().onResizeObservable.add(() => {
+            });            
+
             this._generateMipMaps = generateMipMaps ? true : false;
             this._doNotChangeAspectRatio = doNotChangeAspectRatio;
 
@@ -648,6 +661,11 @@
 
             this.clearPostProcesses(true);
 
+            if (this._resizeObserver) {
+                this.getScene()!.getEngine().onResizeObservable.remove(this._resizeObserver);
+                this._resizeObserver = null;
+            }
+
             this.renderList = null;
 
             // Remove from custom render targets

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

@@ -462,15 +462,11 @@
             impostor.object.position.copyFrom(impostor.physicsBody.position);
             if (impostor.object.rotationQuaternion) {
                 impostor.object.rotationQuaternion.copyFrom(impostor.physicsBody.quaternion);
-                //impostor.object.rotationQuaternion.y *= -1;
-                //impostor.object.rotationQuaternion.z *= -1;
             }
         }
 
         public setPhysicsBodyTransformation(impostor: PhysicsImpostor, newPosition: Vector3, newRotation: Quaternion) {
             impostor.physicsBody.position.copy(newPosition);
-            //newRotation.y *= -1;
-            //newRotation.z *= -1;
             impostor.physicsBody.quaternion.copy(newRotation);
         }
 

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

@@ -404,6 +404,7 @@ module BABYLON {
 
             this.object.translate(this._deltaPosition, -1);
             this._deltaRotationConjugated && this.object.rotationQuaternion && this.object.rotationQuaternion.multiplyToRef(this._deltaRotationConjugated, this.object.rotationQuaternion);
+            this.object.computeWorldMatrix(false);
             if (this.object.parent && this.object.rotationQuaternion) {
                 this.getParentsRotation();
                 this._tmpQuat.multiplyToRef(this.object.rotationQuaternion, this._tmpQuat);
@@ -427,6 +428,10 @@ module BABYLON {
                 return;
             }
 
+            this._onAfterPhysicsStepCallbacks.forEach((func) => {
+                func(this);
+            });
+
             this._physicsEngine.getPhysicsPlugin().setTransformationFromPhysicsBody(this);
             // object has now its world rotation. needs to be converted to local.
             if (this.object.parent && this.object.rotationQuaternion) {

+ 1 - 0
src/babylon.node.ts

@@ -114,6 +114,7 @@
                 return this;
             }
 
+            behavior.init();
             if (this._scene.isLoading) {
                 // We defer the attach when the scene will be loaded
                 var observer = this._scene.onDataLoadedObservable.add(() => {

BIN
tests/validation/ReferenceImages/GLTF LOD.png