David Catuhe 7 年 前
コミット
0f5eb467e1
36 ファイル変更36466 行追加36464 行削除
  1. 6486 6486
      Playground/babylon.d.txt
  2. 18472 18472
      dist/preview release/babylon.d.ts
  3. 47 47
      dist/preview release/babylon.js
  4. 51 73
      dist/preview release/babylon.max.js
  5. 48 48
      dist/preview release/babylon.worker.js
  6. 10863 10863
      dist/preview release/customConfigurations/minimalGLTFViewer/babylon.d.ts
  7. 50 50
      dist/preview release/customConfigurations/minimalGLTFViewer/babylon.js
  8. 88 93
      dist/preview release/customConfigurations/minimalGLTFViewer/babylon.max.js
  9. 88 93
      dist/preview release/customConfigurations/minimalGLTFViewer/es6.js
  10. 51 73
      dist/preview release/es6.js
  11. 3 3
      dist/preview release/gui/babylon.gui.min.js
  12. 4 4
      dist/preview release/inspector/babylon.inspector.bundle.js
  13. 3 3
      dist/preview release/inspector/babylon.inspector.min.js
  14. 8 3
      dist/preview release/loaders/babylon.glTF1FileLoader.js
  15. 2 2
      dist/preview release/loaders/babylon.glTF1FileLoader.min.js
  16. 3 3
      dist/preview release/loaders/babylon.glTF2FileLoader.d.ts
  17. 37 20
      dist/preview release/loaders/babylon.glTF2FileLoader.js
  18. 2 2
      dist/preview release/loaders/babylon.glTF2FileLoader.min.js
  19. 3 3
      dist/preview release/loaders/babylon.glTFFileLoader.d.ts
  20. 37 20
      dist/preview release/loaders/babylon.glTFFileLoader.js
  21. 3 3
      dist/preview release/loaders/babylon.glTFFileLoader.min.js
  22. 1 1
      dist/preview release/loaders/babylon.objFileLoader.min.js
  23. 37 20
      dist/preview release/loaders/babylonjs.loaders.js
  24. 3 3
      dist/preview release/loaders/babylonjs.loaders.min.js
  25. 3 3
      dist/preview release/loaders/babylonjs.loaders.module.d.ts
  26. 1 1
      dist/preview release/materialsLibrary/babylon.customMaterial.min.js
  27. 1 1
      dist/preview release/materialsLibrary/babylon.shadowOnlyMaterial.min.js
  28. 1 1
      dist/preview release/materialsLibrary/babylon.waterMaterial.min.js
  29. 3 3
      dist/preview release/materialsLibrary/babylonjs.materials.min.js
  30. 1 1
      dist/preview release/postProcessesLibrary/babylon.asciiArtPostProcess.min.js
  31. 1 1
      dist/preview release/postProcessesLibrary/babylon.digitalRainPostProcess.min.js
  32. 1 1
      dist/preview release/postProcessesLibrary/babylonjs.postProcess.min.js
  33. 1 1
      dist/preview release/serializers/babylon.glTF2Serializer.min.js
  34. 1 1
      dist/preview release/serializers/babylonjs.serializers.min.js
  35. 61 61
      dist/preview release/viewer/babylon.viewer.js
  36. 1 1
      package.json

ファイルの差分が大きいため隠しています
+ 6486 - 6486
Playground/babylon.d.txt


ファイルの差分が大きいため隠しています
+ 18472 - 18472
dist/preview release/babylon.d.ts


ファイルの差分が大きいため隠しています
+ 47 - 47
dist/preview release/babylon.js


+ 51 - 73
dist/preview release/babylon.max.js

@@ -8057,15 +8057,21 @@ var BABYLON;
             url = Tools.PreprocessUrl(url);
             var img = new Image();
             Tools.SetCorsBehavior(url, img);
-            img.onload = function () {
+            var loadHandler = function () {
+                img.removeEventListener("load", loadHandler);
+                img.removeEventListener("error", errorHandler);
                 onLoad(img);
             };
-            img.onerror = function (err) {
+            var errorHandler = function (err) {
+                img.removeEventListener("load", loadHandler);
+                img.removeEventListener("error", errorHandler);
                 Tools.Error("Error while trying to load image: " + url);
                 if (onError) {
                     onError("Error while trying to load image: " + url, err);
                 }
             };
+            img.addEventListener("load", loadHandler);
+            img.addEventListener("error", errorHandler);
             var noIndexedDB = function () {
                 img.src = url;
             };
@@ -8141,7 +8147,9 @@ var BABYLON;
                         request.addEventListener("progress", onProgress);
                     }
                     var onLoadEnd = function () {
+                        request.removeEventListener("loadend", onLoadEnd);
                         fileRequest.onCompleteObservable.notifyObservers(fileRequest);
+                        fileRequest.onCompleteObservable.clear();
                     };
                     request.addEventListener("loadend", onLoadEnd);
                     var onReadyStateChange = function () {
@@ -9319,84 +9327,47 @@ var BABYLON;
                 this._reject(e);
             }
         }
-        Object.defineProperty(InternalPromise.prototype, "state", {
-            get: function () {
-                return this._state;
-            },
-            enumerable: true,
-            configurable: true
-        });
-        Object.defineProperty(InternalPromise.prototype, "isFulfilled", {
-            get: function () {
-                return this._state === PromiseStates.Fulfilled;
-            },
-            enumerable: true,
-            configurable: true
-        });
-        Object.defineProperty(InternalPromise.prototype, "isRejected", {
-            get: function () {
-                return this._state === PromiseStates.Rejected;
-            },
-            enumerable: true,
-            configurable: true
-        });
-        Object.defineProperty(InternalPromise.prototype, "isPending", {
-            get: function () {
-                return this._state === PromiseStates.Pending;
-            },
-            enumerable: true,
-            configurable: true
-        });
-        InternalPromise.prototype.value = function () {
-            if (!this.isFulfilled) {
-                throw new Error("Promise is not fulfilled");
-            }
-            return this._result;
-        };
-        InternalPromise.prototype.reason = function () {
-            if (!this.isRejected) {
-                throw new Error("Promise is not rejected");
-            }
-            return this._reason;
-        };
         InternalPromise.prototype.catch = function (onRejected) {
             return this.then(undefined, onRejected);
         };
         InternalPromise.prototype.then = function (onFulfilled, onRejected) {
+            var _this = this;
             var newPromise = new InternalPromise();
             newPromise._onFulfilled = onFulfilled;
             newPromise._onRejected = onRejected;
             // Composition
             this._children.push(newPromise);
             if (this._state !== PromiseStates.Pending) {
-                if (this._state === PromiseStates.Fulfilled || this._rejectWasConsumed) {
-                    var returnedValue = newPromise._resolve(this._result);
-                    if (returnedValue !== undefined && returnedValue !== null) {
-                        if (returnedValue._state !== undefined) {
-                            var returnedPromise = returnedValue;
-                            newPromise._children.push(returnedPromise);
-                            newPromise = returnedPromise;
-                        }
-                        else {
-                            newPromise._result = returnedValue;
+                BABYLON.Tools.SetImmediate(function () {
+                    if (_this._state === PromiseStates.Fulfilled || _this._rejectWasConsumed) {
+                        var returnedValue = newPromise._resolve(_this._result);
+                        if (returnedValue !== undefined && returnedValue !== null) {
+                            if (returnedValue._state !== undefined) {
+                                var returnedPromise = returnedValue;
+                                newPromise._children.push(returnedPromise);
+                                newPromise = returnedPromise;
+                            }
+                            else {
+                                newPromise._result = returnedValue;
+                            }
                         }
                     }
-                }
-                else {
-                    newPromise._reject(this._reason);
-                }
+                    else {
+                        newPromise._reject(_this._reason);
+                    }
+                });
             }
             return newPromise;
         };
         InternalPromise.prototype._moveChildren = function (children) {
             (_a = this._children).push.apply(_a, children.splice(0, children.length));
-            if (this.isFulfilled) {
+            if (this._state === PromiseStates.Fulfilled) {
                 for (var _i = 0, _b = this._children; _i < _b.length; _i++) {
                     var child = _b[_i];
                     child._resolve(this._result);
                 }
             }
-            else if (this.isRejected) {
+            else if (this._state === PromiseStates.Rejected) {
                 for (var _c = 0, _d = this._children; _c < _d.length; _c++) {
                     var child = _d[_c];
                     child._reject(this._reason);
@@ -9426,6 +9397,9 @@ var BABYLON;
                     var child = _a[_i];
                     child._resolve(value);
                 }
+                this._children.length = 0;
+                delete this._onFulfilled;
+                delete this._onRejected;
                 return returnedValue;
             }
             catch (e) {
@@ -9437,8 +9411,13 @@ var BABYLON;
             this._state = PromiseStates.Rejected;
             this._reason = reason;
             if (this._onRejected) {
-                this._onRejected(reason);
-                this._rejectWasConsumed = true;
+                try {
+                    this._onRejected(reason);
+                    this._rejectWasConsumed = true;
+                }
+                catch (e) {
+                    reason = e;
+                }
             }
             for (var _i = 0, _a = this._children; _i < _a.length; _i++) {
                 var child = _a[_i];
@@ -9449,6 +9428,9 @@ var BABYLON;
                     child._reject(reason);
                 }
             }
+            this._children.length = 0;
+            delete this._onFulfilled;
+            delete this._onRejected;
         };
         InternalPromise.resolve = function (value) {
             var newPromise = new InternalPromise();
@@ -9464,7 +9446,7 @@ var BABYLON;
                 }
                 return null;
             }, function (reason) {
-                if (!agregator.rootPromise.isRejected) {
+                if (agregator.rootPromise._state !== PromiseStates.Rejected) {
                     agregator.rootPromise._reject(reason);
                 }
             });
@@ -26304,7 +26286,6 @@ var BABYLON;
             this.delayLoad();
         };
         Texture.prototype.delayLoad = function () {
-            var _this = this;
             if (this.delayLoadState !== BABYLON.Engine.DELAYLOADSTATE_NOTLOADED) {
                 return;
             }
@@ -26321,20 +26302,17 @@ var BABYLON;
                 }
             }
             else {
-                if (this._texture.isReady) {
-                    BABYLON.Tools.SetImmediate(function () {
-                        if (!_this._delayedOnLoad) {
-                            return;
-                        }
-                        _this._delayedOnLoad();
-                    });
-                }
-                else {
-                    if (this._delayedOnLoad) {
+                if (this._delayedOnLoad) {
+                    if (this._texture.isReady) {
+                        BABYLON.Tools.SetImmediate(this._delayedOnLoad);
+                    }
+                    else {
                         this._texture.onLoadedObservable.add(this._delayedOnLoad);
                     }
                 }
             }
+            this._delayedOnLoad = null;
+            this._delayedOnError = null;
         };
         Texture.prototype.updateSamplingMode = function (samplingMode) {
             if (!this._texture) {
@@ -51321,7 +51299,7 @@ var BABYLON;
 
 
 
-//# sourceMappingURL=babylon.iParticleEmitterType.js.map
+//# sourceMappingURL=babylon.IParticleEmitterType.js.map
 
 var BABYLON;
 (function (BABYLON) {

ファイルの差分が大きいため隠しています
+ 48 - 48
dist/preview release/babylon.worker.js


ファイルの差分が大きいため隠しています
+ 10863 - 10863
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.d.ts


ファイルの差分が大きいため隠しています
+ 50 - 50
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.js


+ 88 - 93
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.max.js

@@ -8057,15 +8057,21 @@ var BABYLON;
             url = Tools.PreprocessUrl(url);
             var img = new Image();
             Tools.SetCorsBehavior(url, img);
-            img.onload = function () {
+            var loadHandler = function () {
+                img.removeEventListener("load", loadHandler);
+                img.removeEventListener("error", errorHandler);
                 onLoad(img);
             };
-            img.onerror = function (err) {
+            var errorHandler = function (err) {
+                img.removeEventListener("load", loadHandler);
+                img.removeEventListener("error", errorHandler);
                 Tools.Error("Error while trying to load image: " + url);
                 if (onError) {
                     onError("Error while trying to load image: " + url, err);
                 }
             };
+            img.addEventListener("load", loadHandler);
+            img.addEventListener("error", errorHandler);
             var noIndexedDB = function () {
                 img.src = url;
             };
@@ -8141,7 +8147,9 @@ var BABYLON;
                         request.addEventListener("progress", onProgress);
                     }
                     var onLoadEnd = function () {
+                        request.removeEventListener("loadend", onLoadEnd);
                         fileRequest.onCompleteObservable.notifyObservers(fileRequest);
+                        fileRequest.onCompleteObservable.clear();
                     };
                     request.addEventListener("loadend", onLoadEnd);
                     var onReadyStateChange = function () {
@@ -9319,84 +9327,47 @@ var BABYLON;
                 this._reject(e);
             }
         }
-        Object.defineProperty(InternalPromise.prototype, "state", {
-            get: function () {
-                return this._state;
-            },
-            enumerable: true,
-            configurable: true
-        });
-        Object.defineProperty(InternalPromise.prototype, "isFulfilled", {
-            get: function () {
-                return this._state === PromiseStates.Fulfilled;
-            },
-            enumerable: true,
-            configurable: true
-        });
-        Object.defineProperty(InternalPromise.prototype, "isRejected", {
-            get: function () {
-                return this._state === PromiseStates.Rejected;
-            },
-            enumerable: true,
-            configurable: true
-        });
-        Object.defineProperty(InternalPromise.prototype, "isPending", {
-            get: function () {
-                return this._state === PromiseStates.Pending;
-            },
-            enumerable: true,
-            configurable: true
-        });
-        InternalPromise.prototype.value = function () {
-            if (!this.isFulfilled) {
-                throw new Error("Promise is not fulfilled");
-            }
-            return this._result;
-        };
-        InternalPromise.prototype.reason = function () {
-            if (!this.isRejected) {
-                throw new Error("Promise is not rejected");
-            }
-            return this._reason;
-        };
         InternalPromise.prototype.catch = function (onRejected) {
             return this.then(undefined, onRejected);
         };
         InternalPromise.prototype.then = function (onFulfilled, onRejected) {
+            var _this = this;
             var newPromise = new InternalPromise();
             newPromise._onFulfilled = onFulfilled;
             newPromise._onRejected = onRejected;
             // Composition
             this._children.push(newPromise);
             if (this._state !== PromiseStates.Pending) {
-                if (this._state === PromiseStates.Fulfilled || this._rejectWasConsumed) {
-                    var returnedValue = newPromise._resolve(this._result);
-                    if (returnedValue !== undefined && returnedValue !== null) {
-                        if (returnedValue._state !== undefined) {
-                            var returnedPromise = returnedValue;
-                            newPromise._children.push(returnedPromise);
-                            newPromise = returnedPromise;
-                        }
-                        else {
-                            newPromise._result = returnedValue;
+                BABYLON.Tools.SetImmediate(function () {
+                    if (_this._state === PromiseStates.Fulfilled || _this._rejectWasConsumed) {
+                        var returnedValue = newPromise._resolve(_this._result);
+                        if (returnedValue !== undefined && returnedValue !== null) {
+                            if (returnedValue._state !== undefined) {
+                                var returnedPromise = returnedValue;
+                                newPromise._children.push(returnedPromise);
+                                newPromise = returnedPromise;
+                            }
+                            else {
+                                newPromise._result = returnedValue;
+                            }
                         }
                     }
-                }
-                else {
-                    newPromise._reject(this._reason);
-                }
+                    else {
+                        newPromise._reject(_this._reason);
+                    }
+                });
             }
             return newPromise;
         };
         InternalPromise.prototype._moveChildren = function (children) {
             (_a = this._children).push.apply(_a, children.splice(0, children.length));
-            if (this.isFulfilled) {
+            if (this._state === PromiseStates.Fulfilled) {
                 for (var _i = 0, _b = this._children; _i < _b.length; _i++) {
                     var child = _b[_i];
                     child._resolve(this._result);
                 }
             }
-            else if (this.isRejected) {
+            else if (this._state === PromiseStates.Rejected) {
                 for (var _c = 0, _d = this._children; _c < _d.length; _c++) {
                     var child = _d[_c];
                     child._reject(this._reason);
@@ -9426,6 +9397,9 @@ var BABYLON;
                     var child = _a[_i];
                     child._resolve(value);
                 }
+                this._children.length = 0;
+                delete this._onFulfilled;
+                delete this._onRejected;
                 return returnedValue;
             }
             catch (e) {
@@ -9437,8 +9411,13 @@ var BABYLON;
             this._state = PromiseStates.Rejected;
             this._reason = reason;
             if (this._onRejected) {
-                this._onRejected(reason);
-                this._rejectWasConsumed = true;
+                try {
+                    this._onRejected(reason);
+                    this._rejectWasConsumed = true;
+                }
+                catch (e) {
+                    reason = e;
+                }
             }
             for (var _i = 0, _a = this._children; _i < _a.length; _i++) {
                 var child = _a[_i];
@@ -9449,6 +9428,9 @@ var BABYLON;
                     child._reject(reason);
                 }
             }
+            this._children.length = 0;
+            delete this._onFulfilled;
+            delete this._onRejected;
         };
         InternalPromise.resolve = function (value) {
             var newPromise = new InternalPromise();
@@ -9464,7 +9446,7 @@ var BABYLON;
                 }
                 return null;
             }, function (reason) {
-                if (!agregator.rootPromise.isRejected) {
+                if (agregator.rootPromise._state !== PromiseStates.Rejected) {
                     agregator.rootPromise._reject(reason);
                 }
             });
@@ -26304,7 +26286,6 @@ var BABYLON;
             this.delayLoad();
         };
         Texture.prototype.delayLoad = function () {
-            var _this = this;
             if (this.delayLoadState !== BABYLON.Engine.DELAYLOADSTATE_NOTLOADED) {
                 return;
             }
@@ -26321,20 +26302,17 @@ var BABYLON;
                 }
             }
             else {
-                if (this._texture.isReady) {
-                    BABYLON.Tools.SetImmediate(function () {
-                        if (!_this._delayedOnLoad) {
-                            return;
-                        }
-                        _this._delayedOnLoad();
-                    });
-                }
-                else {
-                    if (this._delayedOnLoad) {
+                if (this._delayedOnLoad) {
+                    if (this._texture.isReady) {
+                        BABYLON.Tools.SetImmediate(this._delayedOnLoad);
+                    }
+                    else {
                         this._texture.onLoadedObservable.add(this._delayedOnLoad);
                     }
                 }
             }
+            this._delayedOnLoad = null;
+            this._delayedOnError = null;
         };
         Texture.prototype.updateSamplingMode = function (samplingMode) {
             if (!this._texture) {
@@ -51321,7 +51299,7 @@ var BABYLON;
 
 
 
-//# sourceMappingURL=babylon.iParticleEmitterType.js.map
+//# sourceMappingURL=babylon.IParticleEmitterType.js.map
 
 var BABYLON;
 (function (BABYLON) {
@@ -88844,11 +88822,9 @@ var BABYLON;
                 this._loader.dispose();
                 this._loader = null;
             }
-            this.onParsedObservable.clear();
             this.onMeshLoadedObservable.clear();
             this.onTextureLoadedObservable.clear();
             this.onMaterialLoadedObservable.clear();
-            this.onCompleteObservable.clear();
             this.onDisposeObservable.notifyObservers(this);
             this.onDisposeObservable.clear();
         };
@@ -88901,6 +88877,7 @@ var BABYLON;
                 };
             }
             this.onParsedObservable.notifyObservers(parsedData);
+            this.onParsedObservable.clear();
             return parsedData;
         };
         GLTFFileLoader.prototype._getLoader = function (loaderData) {
@@ -88937,8 +88914,14 @@ var BABYLON;
             loader.onMeshLoadedObservable.add(function (mesh) { return _this.onMeshLoadedObservable.notifyObservers(mesh); });
             loader.onTextureLoadedObservable.add(function (texture) { return _this.onTextureLoadedObservable.notifyObservers(texture); });
             loader.onMaterialLoadedObservable.add(function (material) { return _this.onMaterialLoadedObservable.notifyObservers(material); });
-            loader.onCompleteObservable.add(function () { return _this.onCompleteObservable.notifyObservers(_this); });
             loader.onExtensionLoadedObservable.add(function (extension) { return _this.onExtensionLoadedObservable.notifyObservers(extension); });
+            loader.onCompleteObservable.add(function () {
+                _this.onMeshLoadedObservable.clear();
+                _this.onTextureLoadedObservable.clear();
+                _this.onMaterialLoadedObservable.clear();
+                _this.onCompleteObservable.notifyObservers(_this);
+                _this.onCompleteObservable.clear();
+            });
             return loader;
         };
         GLTFFileLoader._parseBinary = function (data) {
@@ -91333,9 +91316,9 @@ var BABYLON;
                     return;
                 }
                 this._disposed = true;
-                this._abortRequests();
-                this._releaseResources();
                 this.onDisposeObservable.notifyObservers(this);
+                this.onDisposeObservable.clear();
+                this._clear();
             };
             GLTFLoader.prototype.importMeshAsync = function (meshesNames, scene, data, rootUrl, onProgress) {
                 var _this = this;
@@ -91375,12 +91358,7 @@ var BABYLON;
             GLTFLoader.prototype._loadAsync = function (nodes, scene, data, rootUrl, onProgress) {
                 var _this = this;
                 return Promise.resolve().then(function () {
-                    for (var _i = 0, _a = GLTFLoader._Names; _i < _a.length; _i++) {
-                        var name_1 = _a[_i];
-                        var extension = GLTFLoader._Factories[name_1](_this);
-                        _this._extensions[name_1] = extension;
-                        _this.onExtensionLoadedObservable.notifyObservers(extension);
-                    }
+                    _this._loadExtensions();
                     _this._babylonScene = scene;
                     _this._rootUrl = rootUrl;
                     _this._progressCallback = onProgress;
@@ -91406,22 +91384,32 @@ var BABYLON;
                         BABYLON.Tools.SetImmediate(function () {
                             if (!_this._disposed) {
                                 Promise.all(_this._completePromises).then(function () {
-                                    _this._releaseResources();
                                     _this._state = BABYLON.GLTFLoaderState.Complete;
                                     _this.onCompleteObservable.notifyObservers(_this);
+                                    _this.onCompleteObservable.clear();
+                                    _this._clear();
                                 }).catch(function (error) {
                                     BABYLON.Tools.Error("glTF Loader: " + error.message);
-                                    _this.dispose();
+                                    _this._clear();
                                 });
                             }
                         });
                     });
                 }).catch(function (error) {
                     BABYLON.Tools.Error("glTF Loader: " + error.message);
-                    _this.dispose();
+                    _this._clear();
                     throw error;
                 });
             };
+            GLTFLoader.prototype._loadExtensions = function () {
+                for (var _i = 0, _a = GLTFLoader._Names; _i < _a.length; _i++) {
+                    var name_1 = _a[_i];
+                    var extension = GLTFLoader._Factories[name_1](this);
+                    this._extensions[name_1] = extension;
+                    this.onExtensionLoadedObservable.notifyObservers(extension);
+                }
+                this.onExtensionLoadedObservable.clear();
+            };
             GLTFLoader.prototype._loadData = function (data) {
                 this._gltf = data.json;
                 this._setupData();
@@ -92574,17 +92562,15 @@ var BABYLON;
                 }
                 return Promise.all(promises).then(function () { });
             };
-            GLTFLoader.prototype._abortRequests = function () {
+            GLTFLoader.prototype._clear = function () {
                 for (var _i = 0, _a = this._requests; _i < _a.length; _i++) {
                     var request = _a[_i];
                     request.abort();
                 }
                 this._requests.length = 0;
-            };
-            GLTFLoader.prototype._releaseResources = function () {
-                if (this._gltf.images) {
-                    for (var _i = 0, _a = this._gltf.images; _i < _a.length; _i++) {
-                        var image = _a[_i];
+                if (this._gltf && this._gltf.images) {
+                    for (var _b = 0, _c = this._gltf.images; _b < _c.length; _b++) {
+                        var image = _c[_b];
                         if (image._objectURL) {
                             image._objectURL.then(function (value) {
                                 URL.revokeObjectURL(value);
@@ -92593,6 +92579,15 @@ var BABYLON;
                         }
                     }
                 }
+                delete this._gltf;
+                delete this._babylonScene;
+                this._completePromises.length = 0;
+                this._extensions = {};
+                delete this._rootBabylonMesh;
+                delete this._progressCallback;
+                this.onMeshLoadedObservable.clear();
+                this.onTextureLoadedObservable.clear();
+                this.onMaterialLoadedObservable.clear();
             };
             GLTFLoader.prototype._applyExtensions = function (actionAsync) {
                 for (var _i = 0, _a = GLTFLoader._Names; _i < _a.length; _i++) {

+ 88 - 93
dist/preview release/customConfigurations/minimalGLTFViewer/es6.js

@@ -8043,15 +8043,21 @@ var BABYLON;
             url = Tools.PreprocessUrl(url);
             var img = new Image();
             Tools.SetCorsBehavior(url, img);
-            img.onload = function () {
+            var loadHandler = function () {
+                img.removeEventListener("load", loadHandler);
+                img.removeEventListener("error", errorHandler);
                 onLoad(img);
             };
-            img.onerror = function (err) {
+            var errorHandler = function (err) {
+                img.removeEventListener("load", loadHandler);
+                img.removeEventListener("error", errorHandler);
                 Tools.Error("Error while trying to load image: " + url);
                 if (onError) {
                     onError("Error while trying to load image: " + url, err);
                 }
             };
+            img.addEventListener("load", loadHandler);
+            img.addEventListener("error", errorHandler);
             var noIndexedDB = function () {
                 img.src = url;
             };
@@ -8127,7 +8133,9 @@ var BABYLON;
                         request.addEventListener("progress", onProgress);
                     }
                     var onLoadEnd = function () {
+                        request.removeEventListener("loadend", onLoadEnd);
                         fileRequest.onCompleteObservable.notifyObservers(fileRequest);
+                        fileRequest.onCompleteObservable.clear();
                     };
                     request.addEventListener("loadend", onLoadEnd);
                     var onReadyStateChange = function () {
@@ -9305,84 +9313,47 @@ var BABYLON;
                 this._reject(e);
             }
         }
-        Object.defineProperty(InternalPromise.prototype, "state", {
-            get: function () {
-                return this._state;
-            },
-            enumerable: true,
-            configurable: true
-        });
-        Object.defineProperty(InternalPromise.prototype, "isFulfilled", {
-            get: function () {
-                return this._state === PromiseStates.Fulfilled;
-            },
-            enumerable: true,
-            configurable: true
-        });
-        Object.defineProperty(InternalPromise.prototype, "isRejected", {
-            get: function () {
-                return this._state === PromiseStates.Rejected;
-            },
-            enumerable: true,
-            configurable: true
-        });
-        Object.defineProperty(InternalPromise.prototype, "isPending", {
-            get: function () {
-                return this._state === PromiseStates.Pending;
-            },
-            enumerable: true,
-            configurable: true
-        });
-        InternalPromise.prototype.value = function () {
-            if (!this.isFulfilled) {
-                throw new Error("Promise is not fulfilled");
-            }
-            return this._result;
-        };
-        InternalPromise.prototype.reason = function () {
-            if (!this.isRejected) {
-                throw new Error("Promise is not rejected");
-            }
-            return this._reason;
-        };
         InternalPromise.prototype.catch = function (onRejected) {
             return this.then(undefined, onRejected);
         };
         InternalPromise.prototype.then = function (onFulfilled, onRejected) {
+            var _this = this;
             var newPromise = new InternalPromise();
             newPromise._onFulfilled = onFulfilled;
             newPromise._onRejected = onRejected;
             // Composition
             this._children.push(newPromise);
             if (this._state !== PromiseStates.Pending) {
-                if (this._state === PromiseStates.Fulfilled || this._rejectWasConsumed) {
-                    var returnedValue = newPromise._resolve(this._result);
-                    if (returnedValue !== undefined && returnedValue !== null) {
-                        if (returnedValue._state !== undefined) {
-                            var returnedPromise = returnedValue;
-                            newPromise._children.push(returnedPromise);
-                            newPromise = returnedPromise;
-                        }
-                        else {
-                            newPromise._result = returnedValue;
+                BABYLON.Tools.SetImmediate(function () {
+                    if (_this._state === PromiseStates.Fulfilled || _this._rejectWasConsumed) {
+                        var returnedValue = newPromise._resolve(_this._result);
+                        if (returnedValue !== undefined && returnedValue !== null) {
+                            if (returnedValue._state !== undefined) {
+                                var returnedPromise = returnedValue;
+                                newPromise._children.push(returnedPromise);
+                                newPromise = returnedPromise;
+                            }
+                            else {
+                                newPromise._result = returnedValue;
+                            }
                         }
                     }
-                }
-                else {
-                    newPromise._reject(this._reason);
-                }
+                    else {
+                        newPromise._reject(_this._reason);
+                    }
+                });
             }
             return newPromise;
         };
         InternalPromise.prototype._moveChildren = function (children) {
             (_a = this._children).push.apply(_a, children.splice(0, children.length));
-            if (this.isFulfilled) {
+            if (this._state === PromiseStates.Fulfilled) {
                 for (var _i = 0, _b = this._children; _i < _b.length; _i++) {
                     var child = _b[_i];
                     child._resolve(this._result);
                 }
             }
-            else if (this.isRejected) {
+            else if (this._state === PromiseStates.Rejected) {
                 for (var _c = 0, _d = this._children; _c < _d.length; _c++) {
                     var child = _d[_c];
                     child._reject(this._reason);
@@ -9412,6 +9383,9 @@ var BABYLON;
                     var child = _a[_i];
                     child._resolve(value);
                 }
+                this._children.length = 0;
+                delete this._onFulfilled;
+                delete this._onRejected;
                 return returnedValue;
             }
             catch (e) {
@@ -9423,8 +9397,13 @@ var BABYLON;
             this._state = PromiseStates.Rejected;
             this._reason = reason;
             if (this._onRejected) {
-                this._onRejected(reason);
-                this._rejectWasConsumed = true;
+                try {
+                    this._onRejected(reason);
+                    this._rejectWasConsumed = true;
+                }
+                catch (e) {
+                    reason = e;
+                }
             }
             for (var _i = 0, _a = this._children; _i < _a.length; _i++) {
                 var child = _a[_i];
@@ -9435,6 +9414,9 @@ var BABYLON;
                     child._reject(reason);
                 }
             }
+            this._children.length = 0;
+            delete this._onFulfilled;
+            delete this._onRejected;
         };
         InternalPromise.resolve = function (value) {
             var newPromise = new InternalPromise();
@@ -9450,7 +9432,7 @@ var BABYLON;
                 }
                 return null;
             }, function (reason) {
-                if (!agregator.rootPromise.isRejected) {
+                if (agregator.rootPromise._state !== PromiseStates.Rejected) {
                     agregator.rootPromise._reject(reason);
                 }
             });
@@ -26290,7 +26272,6 @@ var BABYLON;
             this.delayLoad();
         };
         Texture.prototype.delayLoad = function () {
-            var _this = this;
             if (this.delayLoadState !== BABYLON.Engine.DELAYLOADSTATE_NOTLOADED) {
                 return;
             }
@@ -26307,20 +26288,17 @@ var BABYLON;
                 }
             }
             else {
-                if (this._texture.isReady) {
-                    BABYLON.Tools.SetImmediate(function () {
-                        if (!_this._delayedOnLoad) {
-                            return;
-                        }
-                        _this._delayedOnLoad();
-                    });
-                }
-                else {
-                    if (this._delayedOnLoad) {
+                if (this._delayedOnLoad) {
+                    if (this._texture.isReady) {
+                        BABYLON.Tools.SetImmediate(this._delayedOnLoad);
+                    }
+                    else {
                         this._texture.onLoadedObservable.add(this._delayedOnLoad);
                     }
                 }
             }
+            this._delayedOnLoad = null;
+            this._delayedOnError = null;
         };
         Texture.prototype.updateSamplingMode = function (samplingMode) {
             if (!this._texture) {
@@ -51307,7 +51285,7 @@ var BABYLON;
 
 
 
-//# sourceMappingURL=babylon.iParticleEmitterType.js.map
+//# sourceMappingURL=babylon.IParticleEmitterType.js.map
 
 var BABYLON;
 (function (BABYLON) {
@@ -88830,11 +88808,9 @@ var BABYLON;
                 this._loader.dispose();
                 this._loader = null;
             }
-            this.onParsedObservable.clear();
             this.onMeshLoadedObservable.clear();
             this.onTextureLoadedObservable.clear();
             this.onMaterialLoadedObservable.clear();
-            this.onCompleteObservable.clear();
             this.onDisposeObservable.notifyObservers(this);
             this.onDisposeObservable.clear();
         };
@@ -88887,6 +88863,7 @@ var BABYLON;
                 };
             }
             this.onParsedObservable.notifyObservers(parsedData);
+            this.onParsedObservable.clear();
             return parsedData;
         };
         GLTFFileLoader.prototype._getLoader = function (loaderData) {
@@ -88923,8 +88900,14 @@ var BABYLON;
             loader.onMeshLoadedObservable.add(function (mesh) { return _this.onMeshLoadedObservable.notifyObservers(mesh); });
             loader.onTextureLoadedObservable.add(function (texture) { return _this.onTextureLoadedObservable.notifyObservers(texture); });
             loader.onMaterialLoadedObservable.add(function (material) { return _this.onMaterialLoadedObservable.notifyObservers(material); });
-            loader.onCompleteObservable.add(function () { return _this.onCompleteObservable.notifyObservers(_this); });
             loader.onExtensionLoadedObservable.add(function (extension) { return _this.onExtensionLoadedObservable.notifyObservers(extension); });
+            loader.onCompleteObservable.add(function () {
+                _this.onMeshLoadedObservable.clear();
+                _this.onTextureLoadedObservable.clear();
+                _this.onMaterialLoadedObservable.clear();
+                _this.onCompleteObservable.notifyObservers(_this);
+                _this.onCompleteObservable.clear();
+            });
             return loader;
         };
         GLTFFileLoader._parseBinary = function (data) {
@@ -91319,9 +91302,9 @@ var BABYLON;
                     return;
                 }
                 this._disposed = true;
-                this._abortRequests();
-                this._releaseResources();
                 this.onDisposeObservable.notifyObservers(this);
+                this.onDisposeObservable.clear();
+                this._clear();
             };
             GLTFLoader.prototype.importMeshAsync = function (meshesNames, scene, data, rootUrl, onProgress) {
                 var _this = this;
@@ -91361,12 +91344,7 @@ var BABYLON;
             GLTFLoader.prototype._loadAsync = function (nodes, scene, data, rootUrl, onProgress) {
                 var _this = this;
                 return Promise.resolve().then(function () {
-                    for (var _i = 0, _a = GLTFLoader._Names; _i < _a.length; _i++) {
-                        var name_1 = _a[_i];
-                        var extension = GLTFLoader._Factories[name_1](_this);
-                        _this._extensions[name_1] = extension;
-                        _this.onExtensionLoadedObservable.notifyObservers(extension);
-                    }
+                    _this._loadExtensions();
                     _this._babylonScene = scene;
                     _this._rootUrl = rootUrl;
                     _this._progressCallback = onProgress;
@@ -91392,22 +91370,32 @@ var BABYLON;
                         BABYLON.Tools.SetImmediate(function () {
                             if (!_this._disposed) {
                                 Promise.all(_this._completePromises).then(function () {
-                                    _this._releaseResources();
                                     _this._state = BABYLON.GLTFLoaderState.Complete;
                                     _this.onCompleteObservable.notifyObservers(_this);
+                                    _this.onCompleteObservable.clear();
+                                    _this._clear();
                                 }).catch(function (error) {
                                     BABYLON.Tools.Error("glTF Loader: " + error.message);
-                                    _this.dispose();
+                                    _this._clear();
                                 });
                             }
                         });
                     });
                 }).catch(function (error) {
                     BABYLON.Tools.Error("glTF Loader: " + error.message);
-                    _this.dispose();
+                    _this._clear();
                     throw error;
                 });
             };
+            GLTFLoader.prototype._loadExtensions = function () {
+                for (var _i = 0, _a = GLTFLoader._Names; _i < _a.length; _i++) {
+                    var name_1 = _a[_i];
+                    var extension = GLTFLoader._Factories[name_1](this);
+                    this._extensions[name_1] = extension;
+                    this.onExtensionLoadedObservable.notifyObservers(extension);
+                }
+                this.onExtensionLoadedObservable.clear();
+            };
             GLTFLoader.prototype._loadData = function (data) {
                 this._gltf = data.json;
                 this._setupData();
@@ -92560,17 +92548,15 @@ var BABYLON;
                 }
                 return Promise.all(promises).then(function () { });
             };
-            GLTFLoader.prototype._abortRequests = function () {
+            GLTFLoader.prototype._clear = function () {
                 for (var _i = 0, _a = this._requests; _i < _a.length; _i++) {
                     var request = _a[_i];
                     request.abort();
                 }
                 this._requests.length = 0;
-            };
-            GLTFLoader.prototype._releaseResources = function () {
-                if (this._gltf.images) {
-                    for (var _i = 0, _a = this._gltf.images; _i < _a.length; _i++) {
-                        var image = _a[_i];
+                if (this._gltf && this._gltf.images) {
+                    for (var _b = 0, _c = this._gltf.images; _b < _c.length; _b++) {
+                        var image = _c[_b];
                         if (image._objectURL) {
                             image._objectURL.then(function (value) {
                                 URL.revokeObjectURL(value);
@@ -92579,6 +92565,15 @@ var BABYLON;
                         }
                     }
                 }
+                delete this._gltf;
+                delete this._babylonScene;
+                this._completePromises.length = 0;
+                this._extensions = {};
+                delete this._rootBabylonMesh;
+                delete this._progressCallback;
+                this.onMeshLoadedObservable.clear();
+                this.onTextureLoadedObservable.clear();
+                this.onMaterialLoadedObservable.clear();
             };
             GLTFLoader.prototype._applyExtensions = function (actionAsync) {
                 for (var _i = 0, _a = GLTFLoader._Names; _i < _a.length; _i++) {

+ 51 - 73
dist/preview release/es6.js

@@ -8043,15 +8043,21 @@ var BABYLON;
             url = Tools.PreprocessUrl(url);
             var img = new Image();
             Tools.SetCorsBehavior(url, img);
-            img.onload = function () {
+            var loadHandler = function () {
+                img.removeEventListener("load", loadHandler);
+                img.removeEventListener("error", errorHandler);
                 onLoad(img);
             };
-            img.onerror = function (err) {
+            var errorHandler = function (err) {
+                img.removeEventListener("load", loadHandler);
+                img.removeEventListener("error", errorHandler);
                 Tools.Error("Error while trying to load image: " + url);
                 if (onError) {
                     onError("Error while trying to load image: " + url, err);
                 }
             };
+            img.addEventListener("load", loadHandler);
+            img.addEventListener("error", errorHandler);
             var noIndexedDB = function () {
                 img.src = url;
             };
@@ -8127,7 +8133,9 @@ var BABYLON;
                         request.addEventListener("progress", onProgress);
                     }
                     var onLoadEnd = function () {
+                        request.removeEventListener("loadend", onLoadEnd);
                         fileRequest.onCompleteObservable.notifyObservers(fileRequest);
+                        fileRequest.onCompleteObservable.clear();
                     };
                     request.addEventListener("loadend", onLoadEnd);
                     var onReadyStateChange = function () {
@@ -9305,84 +9313,47 @@ var BABYLON;
                 this._reject(e);
             }
         }
-        Object.defineProperty(InternalPromise.prototype, "state", {
-            get: function () {
-                return this._state;
-            },
-            enumerable: true,
-            configurable: true
-        });
-        Object.defineProperty(InternalPromise.prototype, "isFulfilled", {
-            get: function () {
-                return this._state === PromiseStates.Fulfilled;
-            },
-            enumerable: true,
-            configurable: true
-        });
-        Object.defineProperty(InternalPromise.prototype, "isRejected", {
-            get: function () {
-                return this._state === PromiseStates.Rejected;
-            },
-            enumerable: true,
-            configurable: true
-        });
-        Object.defineProperty(InternalPromise.prototype, "isPending", {
-            get: function () {
-                return this._state === PromiseStates.Pending;
-            },
-            enumerable: true,
-            configurable: true
-        });
-        InternalPromise.prototype.value = function () {
-            if (!this.isFulfilled) {
-                throw new Error("Promise is not fulfilled");
-            }
-            return this._result;
-        };
-        InternalPromise.prototype.reason = function () {
-            if (!this.isRejected) {
-                throw new Error("Promise is not rejected");
-            }
-            return this._reason;
-        };
         InternalPromise.prototype.catch = function (onRejected) {
             return this.then(undefined, onRejected);
         };
         InternalPromise.prototype.then = function (onFulfilled, onRejected) {
+            var _this = this;
             var newPromise = new InternalPromise();
             newPromise._onFulfilled = onFulfilled;
             newPromise._onRejected = onRejected;
             // Composition
             this._children.push(newPromise);
             if (this._state !== PromiseStates.Pending) {
-                if (this._state === PromiseStates.Fulfilled || this._rejectWasConsumed) {
-                    var returnedValue = newPromise._resolve(this._result);
-                    if (returnedValue !== undefined && returnedValue !== null) {
-                        if (returnedValue._state !== undefined) {
-                            var returnedPromise = returnedValue;
-                            newPromise._children.push(returnedPromise);
-                            newPromise = returnedPromise;
-                        }
-                        else {
-                            newPromise._result = returnedValue;
+                BABYLON.Tools.SetImmediate(function () {
+                    if (_this._state === PromiseStates.Fulfilled || _this._rejectWasConsumed) {
+                        var returnedValue = newPromise._resolve(_this._result);
+                        if (returnedValue !== undefined && returnedValue !== null) {
+                            if (returnedValue._state !== undefined) {
+                                var returnedPromise = returnedValue;
+                                newPromise._children.push(returnedPromise);
+                                newPromise = returnedPromise;
+                            }
+                            else {
+                                newPromise._result = returnedValue;
+                            }
                         }
                     }
-                }
-                else {
-                    newPromise._reject(this._reason);
-                }
+                    else {
+                        newPromise._reject(_this._reason);
+                    }
+                });
             }
             return newPromise;
         };
         InternalPromise.prototype._moveChildren = function (children) {
             (_a = this._children).push.apply(_a, children.splice(0, children.length));
-            if (this.isFulfilled) {
+            if (this._state === PromiseStates.Fulfilled) {
                 for (var _i = 0, _b = this._children; _i < _b.length; _i++) {
                     var child = _b[_i];
                     child._resolve(this._result);
                 }
             }
-            else if (this.isRejected) {
+            else if (this._state === PromiseStates.Rejected) {
                 for (var _c = 0, _d = this._children; _c < _d.length; _c++) {
                     var child = _d[_c];
                     child._reject(this._reason);
@@ -9412,6 +9383,9 @@ var BABYLON;
                     var child = _a[_i];
                     child._resolve(value);
                 }
+                this._children.length = 0;
+                delete this._onFulfilled;
+                delete this._onRejected;
                 return returnedValue;
             }
             catch (e) {
@@ -9423,8 +9397,13 @@ var BABYLON;
             this._state = PromiseStates.Rejected;
             this._reason = reason;
             if (this._onRejected) {
-                this._onRejected(reason);
-                this._rejectWasConsumed = true;
+                try {
+                    this._onRejected(reason);
+                    this._rejectWasConsumed = true;
+                }
+                catch (e) {
+                    reason = e;
+                }
             }
             for (var _i = 0, _a = this._children; _i < _a.length; _i++) {
                 var child = _a[_i];
@@ -9435,6 +9414,9 @@ var BABYLON;
                     child._reject(reason);
                 }
             }
+            this._children.length = 0;
+            delete this._onFulfilled;
+            delete this._onRejected;
         };
         InternalPromise.resolve = function (value) {
             var newPromise = new InternalPromise();
@@ -9450,7 +9432,7 @@ var BABYLON;
                 }
                 return null;
             }, function (reason) {
-                if (!agregator.rootPromise.isRejected) {
+                if (agregator.rootPromise._state !== PromiseStates.Rejected) {
                     agregator.rootPromise._reject(reason);
                 }
             });
@@ -26290,7 +26272,6 @@ var BABYLON;
             this.delayLoad();
         };
         Texture.prototype.delayLoad = function () {
-            var _this = this;
             if (this.delayLoadState !== BABYLON.Engine.DELAYLOADSTATE_NOTLOADED) {
                 return;
             }
@@ -26307,20 +26288,17 @@ var BABYLON;
                 }
             }
             else {
-                if (this._texture.isReady) {
-                    BABYLON.Tools.SetImmediate(function () {
-                        if (!_this._delayedOnLoad) {
-                            return;
-                        }
-                        _this._delayedOnLoad();
-                    });
-                }
-                else {
-                    if (this._delayedOnLoad) {
+                if (this._delayedOnLoad) {
+                    if (this._texture.isReady) {
+                        BABYLON.Tools.SetImmediate(this._delayedOnLoad);
+                    }
+                    else {
                         this._texture.onLoadedObservable.add(this._delayedOnLoad);
                     }
                 }
             }
+            this._delayedOnLoad = null;
+            this._delayedOnError = null;
         };
         Texture.prototype.updateSamplingMode = function (samplingMode) {
             if (!this._texture) {
@@ -51307,7 +51285,7 @@ var BABYLON;
 
 
 
-//# sourceMappingURL=babylon.iParticleEmitterType.js.map
+//# sourceMappingURL=babylon.IParticleEmitterType.js.map
 
 var BABYLON;
 (function (BABYLON) {

ファイルの差分が大きいため隠しています
+ 3 - 3
dist/preview release/gui/babylon.gui.min.js


ファイルの差分が大きいため隠しています
+ 4 - 4
dist/preview release/inspector/babylon.inspector.bundle.js


ファイルの差分が大きいため隠しています
+ 3 - 3
dist/preview release/inspector/babylon.inspector.min.js


+ 8 - 3
dist/preview release/loaders/babylon.glTF1FileLoader.js

@@ -187,11 +187,9 @@ var BABYLON;
                 this._loader.dispose();
                 this._loader = null;
             }
-            this.onParsedObservable.clear();
             this.onMeshLoadedObservable.clear();
             this.onTextureLoadedObservable.clear();
             this.onMaterialLoadedObservable.clear();
-            this.onCompleteObservable.clear();
             this.onDisposeObservable.notifyObservers(this);
             this.onDisposeObservable.clear();
         };
@@ -244,6 +242,7 @@ var BABYLON;
                 };
             }
             this.onParsedObservable.notifyObservers(parsedData);
+            this.onParsedObservable.clear();
             return parsedData;
         };
         GLTFFileLoader.prototype._getLoader = function (loaderData) {
@@ -280,8 +279,14 @@ var BABYLON;
             loader.onMeshLoadedObservable.add(function (mesh) { return _this.onMeshLoadedObservable.notifyObservers(mesh); });
             loader.onTextureLoadedObservable.add(function (texture) { return _this.onTextureLoadedObservable.notifyObservers(texture); });
             loader.onMaterialLoadedObservable.add(function (material) { return _this.onMaterialLoadedObservable.notifyObservers(material); });
-            loader.onCompleteObservable.add(function () { return _this.onCompleteObservable.notifyObservers(_this); });
             loader.onExtensionLoadedObservable.add(function (extension) { return _this.onExtensionLoadedObservable.notifyObservers(extension); });
+            loader.onCompleteObservable.add(function () {
+                _this.onMeshLoadedObservable.clear();
+                _this.onTextureLoadedObservable.clear();
+                _this.onMaterialLoadedObservable.clear();
+                _this.onCompleteObservable.notifyObservers(_this);
+                _this.onCompleteObservable.clear();
+            });
             return loader;
         };
         GLTFFileLoader._parseBinary = function (data) {

ファイルの差分が大きいため隠しています
+ 2 - 2
dist/preview release/loaders/babylon.glTF1FileLoader.min.js


+ 3 - 3
dist/preview release/loaders/babylon.glTF2FileLoader.d.ts

@@ -301,6 +301,7 @@ declare module BABYLON.GLTF2 {
         }>;
         loadAsync(scene: Scene, data: IGLTFLoaderData, rootUrl: string, onProgress?: (event: SceneLoaderProgressEvent) => void): Promise<void>;
         private _loadAsync(nodes, scene, data, rootUrl, onProgress?);
+        private _loadExtensions();
         private _loadData(data);
         private _setupData();
         private _createRootNode();
@@ -351,8 +352,7 @@ declare module BABYLON.GLTF2 {
         private static _ValidateUri(uri);
         private _compileMaterialsAsync();
         private _compileShadowGeneratorsAsync();
-        private _abortRequests();
-        private _releaseResources();
+        private _clear();
         _applyExtensions<T>(actionAsync: (extension: GLTFLoaderExtension) => Nullable<Promise<T>>): Nullable<Promise<T>>;
     }
 }
@@ -361,9 +361,9 @@ declare module BABYLON.GLTF2 {
 declare module BABYLON.GLTF2 {
     abstract class GLTFLoaderExtension implements IGLTFLoaderExtension {
         enabled: boolean;
+        readonly abstract name: string;
         protected _loader: GLTFLoader;
         constructor(loader: GLTFLoader);
-        readonly abstract name: string;
         /** Override this method to modify the default behavior for loading scenes. */
         protected _loadSceneAsync(context: string, node: ILoaderScene): Nullable<Promise<void>>;
         /** Override this method to modify the default behavior for loading nodes. */

+ 37 - 20
dist/preview release/loaders/babylon.glTF2FileLoader.js

@@ -187,11 +187,9 @@ var BABYLON;
                 this._loader.dispose();
                 this._loader = null;
             }
-            this.onParsedObservable.clear();
             this.onMeshLoadedObservable.clear();
             this.onTextureLoadedObservable.clear();
             this.onMaterialLoadedObservable.clear();
-            this.onCompleteObservable.clear();
             this.onDisposeObservable.notifyObservers(this);
             this.onDisposeObservable.clear();
         };
@@ -244,6 +242,7 @@ var BABYLON;
                 };
             }
             this.onParsedObservable.notifyObservers(parsedData);
+            this.onParsedObservable.clear();
             return parsedData;
         };
         GLTFFileLoader.prototype._getLoader = function (loaderData) {
@@ -280,8 +279,14 @@ var BABYLON;
             loader.onMeshLoadedObservable.add(function (mesh) { return _this.onMeshLoadedObservable.notifyObservers(mesh); });
             loader.onTextureLoadedObservable.add(function (texture) { return _this.onTextureLoadedObservable.notifyObservers(texture); });
             loader.onMaterialLoadedObservable.add(function (material) { return _this.onMaterialLoadedObservable.notifyObservers(material); });
-            loader.onCompleteObservable.add(function () { return _this.onCompleteObservable.notifyObservers(_this); });
             loader.onExtensionLoadedObservable.add(function (extension) { return _this.onExtensionLoadedObservable.notifyObservers(extension); });
+            loader.onCompleteObservable.add(function () {
+                _this.onMeshLoadedObservable.clear();
+                _this.onTextureLoadedObservable.clear();
+                _this.onMaterialLoadedObservable.clear();
+                _this.onCompleteObservable.notifyObservers(_this);
+                _this.onCompleteObservable.clear();
+            });
             return loader;
         };
         GLTFFileLoader._parseBinary = function (data) {
@@ -518,9 +523,9 @@ var BABYLON;
                     return;
                 }
                 this._disposed = true;
-                this._abortRequests();
-                this._releaseResources();
                 this.onDisposeObservable.notifyObservers(this);
+                this.onDisposeObservable.clear();
+                this._clear();
             };
             GLTFLoader.prototype.importMeshAsync = function (meshesNames, scene, data, rootUrl, onProgress) {
                 var _this = this;
@@ -560,12 +565,7 @@ var BABYLON;
             GLTFLoader.prototype._loadAsync = function (nodes, scene, data, rootUrl, onProgress) {
                 var _this = this;
                 return Promise.resolve().then(function () {
-                    for (var _i = 0, _a = GLTFLoader._Names; _i < _a.length; _i++) {
-                        var name_1 = _a[_i];
-                        var extension = GLTFLoader._Factories[name_1](_this);
-                        _this._extensions[name_1] = extension;
-                        _this.onExtensionLoadedObservable.notifyObservers(extension);
-                    }
+                    _this._loadExtensions();
                     _this._babylonScene = scene;
                     _this._rootUrl = rootUrl;
                     _this._progressCallback = onProgress;
@@ -591,22 +591,32 @@ var BABYLON;
                         BABYLON.Tools.SetImmediate(function () {
                             if (!_this._disposed) {
                                 Promise.all(_this._completePromises).then(function () {
-                                    _this._releaseResources();
                                     _this._state = BABYLON.GLTFLoaderState.Complete;
                                     _this.onCompleteObservable.notifyObservers(_this);
+                                    _this.onCompleteObservable.clear();
+                                    _this._clear();
                                 }).catch(function (error) {
                                     BABYLON.Tools.Error("glTF Loader: " + error.message);
-                                    _this.dispose();
+                                    _this._clear();
                                 });
                             }
                         });
                     });
                 }).catch(function (error) {
                     BABYLON.Tools.Error("glTF Loader: " + error.message);
-                    _this.dispose();
+                    _this._clear();
                     throw error;
                 });
             };
+            GLTFLoader.prototype._loadExtensions = function () {
+                for (var _i = 0, _a = GLTFLoader._Names; _i < _a.length; _i++) {
+                    var name_1 = _a[_i];
+                    var extension = GLTFLoader._Factories[name_1](this);
+                    this._extensions[name_1] = extension;
+                    this.onExtensionLoadedObservable.notifyObservers(extension);
+                }
+                this.onExtensionLoadedObservable.clear();
+            };
             GLTFLoader.prototype._loadData = function (data) {
                 this._gltf = data.json;
                 this._setupData();
@@ -1759,17 +1769,15 @@ var BABYLON;
                 }
                 return Promise.all(promises).then(function () { });
             };
-            GLTFLoader.prototype._abortRequests = function () {
+            GLTFLoader.prototype._clear = function () {
                 for (var _i = 0, _a = this._requests; _i < _a.length; _i++) {
                     var request = _a[_i];
                     request.abort();
                 }
                 this._requests.length = 0;
-            };
-            GLTFLoader.prototype._releaseResources = function () {
-                if (this._gltf.images) {
-                    for (var _i = 0, _a = this._gltf.images; _i < _a.length; _i++) {
-                        var image = _a[_i];
+                if (this._gltf && this._gltf.images) {
+                    for (var _b = 0, _c = this._gltf.images; _b < _c.length; _b++) {
+                        var image = _c[_b];
                         if (image._objectURL) {
                             image._objectURL.then(function (value) {
                                 URL.revokeObjectURL(value);
@@ -1778,6 +1786,15 @@ var BABYLON;
                         }
                     }
                 }
+                delete this._gltf;
+                delete this._babylonScene;
+                this._completePromises.length = 0;
+                this._extensions = {};
+                delete this._rootBabylonMesh;
+                delete this._progressCallback;
+                this.onMeshLoadedObservable.clear();
+                this.onTextureLoadedObservable.clear();
+                this.onMaterialLoadedObservable.clear();
             };
             GLTFLoader.prototype._applyExtensions = function (actionAsync) {
                 for (var _i = 0, _a = GLTFLoader._Names; _i < _a.length; _i++) {

ファイルの差分が大きいため隠しています
+ 2 - 2
dist/preview release/loaders/babylon.glTF2FileLoader.min.js


+ 3 - 3
dist/preview release/loaders/babylon.glTFFileLoader.d.ts

@@ -856,6 +856,7 @@ declare module BABYLON.GLTF2 {
         }>;
         loadAsync(scene: Scene, data: IGLTFLoaderData, rootUrl: string, onProgress?: (event: SceneLoaderProgressEvent) => void): Promise<void>;
         private _loadAsync(nodes, scene, data, rootUrl, onProgress?);
+        private _loadExtensions();
         private _loadData(data);
         private _setupData();
         private _createRootNode();
@@ -906,8 +907,7 @@ declare module BABYLON.GLTF2 {
         private static _ValidateUri(uri);
         private _compileMaterialsAsync();
         private _compileShadowGeneratorsAsync();
-        private _abortRequests();
-        private _releaseResources();
+        private _clear();
         _applyExtensions<T>(actionAsync: (extension: GLTFLoaderExtension) => Nullable<Promise<T>>): Nullable<Promise<T>>;
     }
 }
@@ -916,9 +916,9 @@ declare module BABYLON.GLTF2 {
 declare module BABYLON.GLTF2 {
     abstract class GLTFLoaderExtension implements IGLTFLoaderExtension {
         enabled: boolean;
+        readonly abstract name: string;
         protected _loader: GLTFLoader;
         constructor(loader: GLTFLoader);
-        readonly abstract name: string;
         /** Override this method to modify the default behavior for loading scenes. */
         protected _loadSceneAsync(context: string, node: ILoaderScene): Nullable<Promise<void>>;
         /** Override this method to modify the default behavior for loading nodes. */

+ 37 - 20
dist/preview release/loaders/babylon.glTFFileLoader.js

@@ -187,11 +187,9 @@ var BABYLON;
                 this._loader.dispose();
                 this._loader = null;
             }
-            this.onParsedObservable.clear();
             this.onMeshLoadedObservable.clear();
             this.onTextureLoadedObservable.clear();
             this.onMaterialLoadedObservable.clear();
-            this.onCompleteObservable.clear();
             this.onDisposeObservable.notifyObservers(this);
             this.onDisposeObservable.clear();
         };
@@ -244,6 +242,7 @@ var BABYLON;
                 };
             }
             this.onParsedObservable.notifyObservers(parsedData);
+            this.onParsedObservable.clear();
             return parsedData;
         };
         GLTFFileLoader.prototype._getLoader = function (loaderData) {
@@ -280,8 +279,14 @@ var BABYLON;
             loader.onMeshLoadedObservable.add(function (mesh) { return _this.onMeshLoadedObservable.notifyObservers(mesh); });
             loader.onTextureLoadedObservable.add(function (texture) { return _this.onTextureLoadedObservable.notifyObservers(texture); });
             loader.onMaterialLoadedObservable.add(function (material) { return _this.onMaterialLoadedObservable.notifyObservers(material); });
-            loader.onCompleteObservable.add(function () { return _this.onCompleteObservable.notifyObservers(_this); });
             loader.onExtensionLoadedObservable.add(function (extension) { return _this.onExtensionLoadedObservable.notifyObservers(extension); });
+            loader.onCompleteObservable.add(function () {
+                _this.onMeshLoadedObservable.clear();
+                _this.onTextureLoadedObservable.clear();
+                _this.onMaterialLoadedObservable.clear();
+                _this.onCompleteObservable.notifyObservers(_this);
+                _this.onCompleteObservable.clear();
+            });
             return loader;
         };
         GLTFFileLoader._parseBinary = function (data) {
@@ -2694,9 +2699,9 @@ var BABYLON;
                     return;
                 }
                 this._disposed = true;
-                this._abortRequests();
-                this._releaseResources();
                 this.onDisposeObservable.notifyObservers(this);
+                this.onDisposeObservable.clear();
+                this._clear();
             };
             GLTFLoader.prototype.importMeshAsync = function (meshesNames, scene, data, rootUrl, onProgress) {
                 var _this = this;
@@ -2736,12 +2741,7 @@ var BABYLON;
             GLTFLoader.prototype._loadAsync = function (nodes, scene, data, rootUrl, onProgress) {
                 var _this = this;
                 return Promise.resolve().then(function () {
-                    for (var _i = 0, _a = GLTFLoader._Names; _i < _a.length; _i++) {
-                        var name_1 = _a[_i];
-                        var extension = GLTFLoader._Factories[name_1](_this);
-                        _this._extensions[name_1] = extension;
-                        _this.onExtensionLoadedObservable.notifyObservers(extension);
-                    }
+                    _this._loadExtensions();
                     _this._babylonScene = scene;
                     _this._rootUrl = rootUrl;
                     _this._progressCallback = onProgress;
@@ -2767,22 +2767,32 @@ var BABYLON;
                         BABYLON.Tools.SetImmediate(function () {
                             if (!_this._disposed) {
                                 Promise.all(_this._completePromises).then(function () {
-                                    _this._releaseResources();
                                     _this._state = BABYLON.GLTFLoaderState.Complete;
                                     _this.onCompleteObservable.notifyObservers(_this);
+                                    _this.onCompleteObservable.clear();
+                                    _this._clear();
                                 }).catch(function (error) {
                                     BABYLON.Tools.Error("glTF Loader: " + error.message);
-                                    _this.dispose();
+                                    _this._clear();
                                 });
                             }
                         });
                     });
                 }).catch(function (error) {
                     BABYLON.Tools.Error("glTF Loader: " + error.message);
-                    _this.dispose();
+                    _this._clear();
                     throw error;
                 });
             };
+            GLTFLoader.prototype._loadExtensions = function () {
+                for (var _i = 0, _a = GLTFLoader._Names; _i < _a.length; _i++) {
+                    var name_1 = _a[_i];
+                    var extension = GLTFLoader._Factories[name_1](this);
+                    this._extensions[name_1] = extension;
+                    this.onExtensionLoadedObservable.notifyObservers(extension);
+                }
+                this.onExtensionLoadedObservable.clear();
+            };
             GLTFLoader.prototype._loadData = function (data) {
                 this._gltf = data.json;
                 this._setupData();
@@ -3935,17 +3945,15 @@ var BABYLON;
                 }
                 return Promise.all(promises).then(function () { });
             };
-            GLTFLoader.prototype._abortRequests = function () {
+            GLTFLoader.prototype._clear = function () {
                 for (var _i = 0, _a = this._requests; _i < _a.length; _i++) {
                     var request = _a[_i];
                     request.abort();
                 }
                 this._requests.length = 0;
-            };
-            GLTFLoader.prototype._releaseResources = function () {
-                if (this._gltf.images) {
-                    for (var _i = 0, _a = this._gltf.images; _i < _a.length; _i++) {
-                        var image = _a[_i];
+                if (this._gltf && this._gltf.images) {
+                    for (var _b = 0, _c = this._gltf.images; _b < _c.length; _b++) {
+                        var image = _c[_b];
                         if (image._objectURL) {
                             image._objectURL.then(function (value) {
                                 URL.revokeObjectURL(value);
@@ -3954,6 +3962,15 @@ var BABYLON;
                         }
                     }
                 }
+                delete this._gltf;
+                delete this._babylonScene;
+                this._completePromises.length = 0;
+                this._extensions = {};
+                delete this._rootBabylonMesh;
+                delete this._progressCallback;
+                this.onMeshLoadedObservable.clear();
+                this.onTextureLoadedObservable.clear();
+                this.onMaterialLoadedObservable.clear();
             };
             GLTFLoader.prototype._applyExtensions = function (actionAsync) {
                 for (var _i = 0, _a = GLTFLoader._Names; _i < _a.length; _i++) {

ファイルの差分が大きいため隠しています
+ 3 - 3
dist/preview release/loaders/babylon.glTFFileLoader.min.js


ファイルの差分が大きいため隠しています
+ 1 - 1
dist/preview release/loaders/babylon.objFileLoader.min.js


+ 37 - 20
dist/preview release/loaders/babylonjs.loaders.js

@@ -1173,11 +1173,9 @@ var BABYLON;
                 this._loader.dispose();
                 this._loader = null;
             }
-            this.onParsedObservable.clear();
             this.onMeshLoadedObservable.clear();
             this.onTextureLoadedObservable.clear();
             this.onMaterialLoadedObservable.clear();
-            this.onCompleteObservable.clear();
             this.onDisposeObservable.notifyObservers(this);
             this.onDisposeObservable.clear();
         };
@@ -1230,6 +1228,7 @@ var BABYLON;
                 };
             }
             this.onParsedObservable.notifyObservers(parsedData);
+            this.onParsedObservable.clear();
             return parsedData;
         };
         GLTFFileLoader.prototype._getLoader = function (loaderData) {
@@ -1266,8 +1265,14 @@ var BABYLON;
             loader.onMeshLoadedObservable.add(function (mesh) { return _this.onMeshLoadedObservable.notifyObservers(mesh); });
             loader.onTextureLoadedObservable.add(function (texture) { return _this.onTextureLoadedObservable.notifyObservers(texture); });
             loader.onMaterialLoadedObservable.add(function (material) { return _this.onMaterialLoadedObservable.notifyObservers(material); });
-            loader.onCompleteObservable.add(function () { return _this.onCompleteObservable.notifyObservers(_this); });
             loader.onExtensionLoadedObservable.add(function (extension) { return _this.onExtensionLoadedObservable.notifyObservers(extension); });
+            loader.onCompleteObservable.add(function () {
+                _this.onMeshLoadedObservable.clear();
+                _this.onTextureLoadedObservable.clear();
+                _this.onMaterialLoadedObservable.clear();
+                _this.onCompleteObservable.notifyObservers(_this);
+                _this.onCompleteObservable.clear();
+            });
             return loader;
         };
         GLTFFileLoader._parseBinary = function (data) {
@@ -3662,9 +3667,9 @@ var BABYLON;
                     return;
                 }
                 this._disposed = true;
-                this._abortRequests();
-                this._releaseResources();
                 this.onDisposeObservable.notifyObservers(this);
+                this.onDisposeObservable.clear();
+                this._clear();
             };
             GLTFLoader.prototype.importMeshAsync = function (meshesNames, scene, data, rootUrl, onProgress) {
                 var _this = this;
@@ -3704,12 +3709,7 @@ var BABYLON;
             GLTFLoader.prototype._loadAsync = function (nodes, scene, data, rootUrl, onProgress) {
                 var _this = this;
                 return Promise.resolve().then(function () {
-                    for (var _i = 0, _a = GLTFLoader._Names; _i < _a.length; _i++) {
-                        var name_1 = _a[_i];
-                        var extension = GLTFLoader._Factories[name_1](_this);
-                        _this._extensions[name_1] = extension;
-                        _this.onExtensionLoadedObservable.notifyObservers(extension);
-                    }
+                    _this._loadExtensions();
                     _this._babylonScene = scene;
                     _this._rootUrl = rootUrl;
                     _this._progressCallback = onProgress;
@@ -3735,22 +3735,32 @@ var BABYLON;
                         BABYLON.Tools.SetImmediate(function () {
                             if (!_this._disposed) {
                                 Promise.all(_this._completePromises).then(function () {
-                                    _this._releaseResources();
                                     _this._state = BABYLON.GLTFLoaderState.Complete;
                                     _this.onCompleteObservable.notifyObservers(_this);
+                                    _this.onCompleteObservable.clear();
+                                    _this._clear();
                                 }).catch(function (error) {
                                     BABYLON.Tools.Error("glTF Loader: " + error.message);
-                                    _this.dispose();
+                                    _this._clear();
                                 });
                             }
                         });
                     });
                 }).catch(function (error) {
                     BABYLON.Tools.Error("glTF Loader: " + error.message);
-                    _this.dispose();
+                    _this._clear();
                     throw error;
                 });
             };
+            GLTFLoader.prototype._loadExtensions = function () {
+                for (var _i = 0, _a = GLTFLoader._Names; _i < _a.length; _i++) {
+                    var name_1 = _a[_i];
+                    var extension = GLTFLoader._Factories[name_1](this);
+                    this._extensions[name_1] = extension;
+                    this.onExtensionLoadedObservable.notifyObservers(extension);
+                }
+                this.onExtensionLoadedObservable.clear();
+            };
             GLTFLoader.prototype._loadData = function (data) {
                 this._gltf = data.json;
                 this._setupData();
@@ -4903,17 +4913,15 @@ var BABYLON;
                 }
                 return Promise.all(promises).then(function () { });
             };
-            GLTFLoader.prototype._abortRequests = function () {
+            GLTFLoader.prototype._clear = function () {
                 for (var _i = 0, _a = this._requests; _i < _a.length; _i++) {
                     var request = _a[_i];
                     request.abort();
                 }
                 this._requests.length = 0;
-            };
-            GLTFLoader.prototype._releaseResources = function () {
-                if (this._gltf.images) {
-                    for (var _i = 0, _a = this._gltf.images; _i < _a.length; _i++) {
-                        var image = _a[_i];
+                if (this._gltf && this._gltf.images) {
+                    for (var _b = 0, _c = this._gltf.images; _b < _c.length; _b++) {
+                        var image = _c[_b];
                         if (image._objectURL) {
                             image._objectURL.then(function (value) {
                                 URL.revokeObjectURL(value);
@@ -4922,6 +4930,15 @@ var BABYLON;
                         }
                     }
                 }
+                delete this._gltf;
+                delete this._babylonScene;
+                this._completePromises.length = 0;
+                this._extensions = {};
+                delete this._rootBabylonMesh;
+                delete this._progressCallback;
+                this.onMeshLoadedObservable.clear();
+                this.onTextureLoadedObservable.clear();
+                this.onMaterialLoadedObservable.clear();
             };
             GLTFLoader.prototype._applyExtensions = function (actionAsync) {
                 for (var _i = 0, _a = GLTFLoader._Names; _i < _a.length; _i++) {

ファイルの差分が大きいため隠しています
+ 3 - 3
dist/preview release/loaders/babylonjs.loaders.min.js


+ 3 - 3
dist/preview release/loaders/babylonjs.loaders.module.d.ts

@@ -957,6 +957,7 @@ declare module BABYLON.GLTF2 {
         }>;
         loadAsync(scene: Scene, data: IGLTFLoaderData, rootUrl: string, onProgress?: (event: SceneLoaderProgressEvent) => void): Promise<void>;
         private _loadAsync(nodes, scene, data, rootUrl, onProgress?);
+        private _loadExtensions();
         private _loadData(data);
         private _setupData();
         private _createRootNode();
@@ -1007,8 +1008,7 @@ declare module BABYLON.GLTF2 {
         private static _ValidateUri(uri);
         private _compileMaterialsAsync();
         private _compileShadowGeneratorsAsync();
-        private _abortRequests();
-        private _releaseResources();
+        private _clear();
         _applyExtensions<T>(actionAsync: (extension: GLTFLoaderExtension) => Nullable<Promise<T>>): Nullable<Promise<T>>;
     }
 }
@@ -1017,9 +1017,9 @@ declare module BABYLON.GLTF2 {
 declare module BABYLON.GLTF2 {
     abstract class GLTFLoaderExtension implements IGLTFLoaderExtension {
         enabled: boolean;
+        readonly abstract name: string;
         protected _loader: GLTFLoader;
         constructor(loader: GLTFLoader);
-        readonly abstract name: string;
         /** Override this method to modify the default behavior for loading scenes. */
         protected _loadSceneAsync(context: string, node: ILoaderScene): Nullable<Promise<void>>;
         /** Override this method to modify the default behavior for loading nodes. */

ファイルの差分が大きいため隠しています
+ 1 - 1
dist/preview release/materialsLibrary/babylon.customMaterial.min.js


ファイルの差分が大きいため隠しています
+ 1 - 1
dist/preview release/materialsLibrary/babylon.shadowOnlyMaterial.min.js


ファイルの差分が大きいため隠しています
+ 1 - 1
dist/preview release/materialsLibrary/babylon.waterMaterial.min.js


ファイルの差分が大きいため隠しています
+ 3 - 3
dist/preview release/materialsLibrary/babylonjs.materials.min.js


ファイルの差分が大きいため隠しています
+ 1 - 1
dist/preview release/postProcessesLibrary/babylon.asciiArtPostProcess.min.js


ファイルの差分が大きいため隠しています
+ 1 - 1
dist/preview release/postProcessesLibrary/babylon.digitalRainPostProcess.min.js


ファイルの差分が大きいため隠しています
+ 1 - 1
dist/preview release/postProcessesLibrary/babylonjs.postProcess.min.js


ファイルの差分が大きいため隠しています
+ 1 - 1
dist/preview release/serializers/babylon.glTF2Serializer.min.js


ファイルの差分が大きいため隠しています
+ 1 - 1
dist/preview release/serializers/babylonjs.serializers.min.js


ファイルの差分が大きいため隠しています
+ 61 - 61
dist/preview release/viewer/babylon.viewer.js


+ 1 - 1
package.json

@@ -41,4 +41,4 @@
     },
     "readme": "Babylon.js is a 3D engine based on webgl and javascript",
     "readmeFilename": "README.md"
-}
+}