David Catuhe 7 lat temu
rodzic
commit
0be872717b

Plik diff jest za duży
+ 1520 - 1513
dist/preview release/babylon.d.ts


Plik diff jest za duży
+ 12 - 12
dist/preview release/babylon.js


+ 18 - 9
dist/preview release/babylon.max.js

@@ -6175,7 +6175,7 @@ var BABYLON;
                     if (req.readyState === (XMLHttpRequest.DONE || 4)) {
                         req.onreadystatechange = function () { }; //some browsers have issues where onreadystatechange can be called multiple times with the same value
                         if (req.status >= 200 && req.status < 300 || (!Tools.IsWindowObjectExist() && (req.status === 0))) {
-                            callback(!useArrayBuffer ? req.responseText : req.response);
+                            callback(!useArrayBuffer ? req.responseText : req.response, req.responseURL);
                         }
                         else {
                             var e = new Error("Error status: " + req.status + " - Unable to load " + loadUrl);
@@ -52739,18 +52739,24 @@ var BABYLON;
         SceneLoader._loadData = function (rootUrl, sceneFilename, scene, onSuccess, onProgress, onError, pluginExtension) {
             var directLoad = SceneLoader._getDirectLoad(sceneFilename);
             var registeredPlugin = pluginExtension ? SceneLoader._getPluginForExtension(pluginExtension) : (directLoad ? SceneLoader._getPluginForDirectLoad(sceneFilename) : SceneLoader._getPluginForFilename(sceneFilename));
-            var plugin = registeredPlugin.plugin;
+            var plugin;
+            if (registeredPlugin.plugin.createPlugin) {
+                plugin = registeredPlugin.plugin.createPlugin();
+            }
+            else {
+                plugin = registeredPlugin.plugin;
+            }
             var useArrayBuffer = registeredPlugin.isBinary;
             var database;
-            SceneLoader.OnPluginActivatedObservable.notifyObservers(registeredPlugin.plugin);
-            var dataCallback = function (data) {
+            SceneLoader.OnPluginActivatedObservable.notifyObservers(plugin);
+            var dataCallback = function (data, responseURL) {
                 if (scene.isDisposed) {
                     onError("Scene has been disposed");
                     return;
                 }
                 scene.database = database;
                 try {
-                    onSuccess(plugin, data);
+                    onSuccess(plugin, data, responseURL);
                 }
                 catch (e) {
                     onError(null, e);
@@ -52765,7 +52771,7 @@ var BABYLON;
             };
             if (directLoad) {
                 dataCallback(directLoad);
-                return registeredPlugin.plugin;
+                return plugin;
             }
             if (rootUrl.indexOf("file:") === -1) {
                 if (scene.getEngine().enableOfflineSupport) {
@@ -52788,7 +52794,7 @@ var BABYLON;
                     onError("Unable to find file named " + sceneFilename);
                 }
             }
-            return registeredPlugin.plugin;
+            return plugin;
         };
         // Public functions
         SceneLoader.GetPluginForExtension = function (extension) {
@@ -52848,7 +52854,10 @@ var BABYLON;
                     onProgress(event);
                 }
             };
-            return SceneLoader._loadData(rootUrl, sceneFilename, scene, function (plugin, data) {
+            return SceneLoader._loadData(rootUrl, sceneFilename, scene, function (plugin, data, responseURL) {
+                if (plugin.rewriteRootURL) {
+                    rootUrl = plugin.rewriteRootURL(rootUrl, responseURL);
+                }
                 if (plugin.importMesh) {
                     var syncedPlugin = plugin;
                     var meshes = new Array();
@@ -52936,7 +52945,7 @@ var BABYLON;
                     onProgress(event);
                 }
             };
-            return SceneLoader._loadData(rootUrl, sceneFilename, scene, function (plugin, data) {
+            return SceneLoader._loadData(rootUrl, sceneFilename, scene, function (plugin, data, responseURL) {
                 if (plugin.load) {
                     var syncedPlugin = plugin;
                     if (!syncedPlugin.load(scene, data, rootUrl, errorHandler)) {

Plik diff jest za duży
+ 1520 - 1513
dist/preview release/babylon.module.d.ts


Plik diff jest za duży
+ 12 - 12
dist/preview release/babylon.worker.js


Plik diff jest za duży
+ 4794 - 4787
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.d.ts


Plik diff jest za duży
+ 4 - 4
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.js


+ 21 - 9
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.max.js

@@ -6175,7 +6175,7 @@ var BABYLON;
                     if (req.readyState === (XMLHttpRequest.DONE || 4)) {
                         req.onreadystatechange = function () { }; //some browsers have issues where onreadystatechange can be called multiple times with the same value
                         if (req.status >= 200 && req.status < 300 || (!Tools.IsWindowObjectExist() && (req.status === 0))) {
-                            callback(!useArrayBuffer ? req.responseText : req.response);
+                            callback(!useArrayBuffer ? req.responseText : req.response, req.responseURL);
                         }
                         else {
                             var e = new Error("Error status: " + req.status + " - Unable to load " + loadUrl);
@@ -52585,18 +52585,24 @@ var BABYLON;
         SceneLoader._loadData = function (rootUrl, sceneFilename, scene, onSuccess, onProgress, onError, pluginExtension) {
             var directLoad = SceneLoader._getDirectLoad(sceneFilename);
             var registeredPlugin = pluginExtension ? SceneLoader._getPluginForExtension(pluginExtension) : (directLoad ? SceneLoader._getPluginForDirectLoad(sceneFilename) : SceneLoader._getPluginForFilename(sceneFilename));
-            var plugin = registeredPlugin.plugin;
+            var plugin;
+            if (registeredPlugin.plugin.createPlugin) {
+                plugin = registeredPlugin.plugin.createPlugin();
+            }
+            else {
+                plugin = registeredPlugin.plugin;
+            }
             var useArrayBuffer = registeredPlugin.isBinary;
             var database;
-            SceneLoader.OnPluginActivatedObservable.notifyObservers(registeredPlugin.plugin);
-            var dataCallback = function (data) {
+            SceneLoader.OnPluginActivatedObservable.notifyObservers(plugin);
+            var dataCallback = function (data, responseURL) {
                 if (scene.isDisposed) {
                     onError("Scene has been disposed");
                     return;
                 }
                 scene.database = database;
                 try {
-                    onSuccess(plugin, data);
+                    onSuccess(plugin, data, responseURL);
                 }
                 catch (e) {
                     onError(null, e);
@@ -52611,7 +52617,7 @@ var BABYLON;
             };
             if (directLoad) {
                 dataCallback(directLoad);
-                return registeredPlugin.plugin;
+                return plugin;
             }
             if (rootUrl.indexOf("file:") === -1) {
                 if (scene.getEngine().enableOfflineSupport) {
@@ -52634,7 +52640,7 @@ var BABYLON;
                     onError("Unable to find file named " + sceneFilename);
                 }
             }
-            return registeredPlugin.plugin;
+            return plugin;
         };
         // Public functions
         SceneLoader.GetPluginForExtension = function (extension) {
@@ -52694,7 +52700,10 @@ var BABYLON;
                     onProgress(event);
                 }
             };
-            return SceneLoader._loadData(rootUrl, sceneFilename, scene, function (plugin, data) {
+            return SceneLoader._loadData(rootUrl, sceneFilename, scene, function (plugin, data, responseURL) {
+                if (plugin.rewriteRootURL) {
+                    rootUrl = plugin.rewriteRootURL(rootUrl, responseURL);
+                }
                 if (plugin.importMesh) {
                     var syncedPlugin = plugin;
                     var meshes = new Array();
@@ -52782,7 +52791,7 @@ var BABYLON;
                     onProgress(event);
                 }
             };
-            return SceneLoader._loadData(rootUrl, sceneFilename, scene, function (plugin, data) {
+            return SceneLoader._loadData(rootUrl, sceneFilename, scene, function (plugin, data, responseURL) {
                 if (plugin.load) {
                     var syncedPlugin = plugin;
                     if (!syncedPlugin.load(scene, data, rootUrl, errorHandler)) {
@@ -77551,6 +77560,9 @@ var BABYLON;
         GLTFFileLoader.prototype.canDirectLoad = function (data) {
             return ((data.indexOf("scene") !== -1) && (data.indexOf("node") !== -1));
         };
+        GLTFFileLoader.prototype.createPlugin = function () {
+            return new GLTFFileLoader();
+        };
         GLTFFileLoader._parse = function (data) {
             if (data instanceof ArrayBuffer) {
                 return GLTFFileLoader._parseBinary(data);

Plik diff jest za duży
+ 4794 - 4787
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.module.d.ts


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

@@ -13,7 +13,7 @@ declare module BABYLON {
         importMeshAsync: (meshesNames: any, scene: Scene, data: IGLTFLoaderData, rootUrl: string, onSuccess: (meshes: AbstractMesh[], particleSystems: ParticleSystem[], skeletons: Skeleton[]) => void, onProgress: (event: ProgressEvent) => void, onError: (message: string) => void) => void;
         loadAsync: (scene: Scene, data: IGLTFLoaderData, rootUrl: string, onSuccess: () => void, onProgress: (event: ProgressEvent) => void, onError: (message: string) => void) => void;
     }
-    class GLTFFileLoader implements IDisposable, ISceneLoaderPluginAsync {
+    class GLTFFileLoader implements IDisposable, ISceneLoaderPluginAsync, ISceneLoaderPluginFactory {
         static CreateGLTFLoaderV1: (parent: GLTFFileLoader) => IGLTFLoader;
         static CreateGLTFLoaderV2: (parent: GLTFFileLoader) => IGLTFLoader;
         onParsed: (data: IGLTFLoaderData) => void;
@@ -39,6 +39,8 @@ declare module BABYLON {
         importMeshAsync(meshesNames: any, scene: Scene, data: any, rootUrl: string, onSuccess: (meshes: AbstractMesh[], particleSystems: ParticleSystem[], skeletons: Skeleton[]) => void, onProgress: (event: ProgressEvent) => void, onError: (message: string) => void): void;
         loadAsync(scene: Scene, data: string | ArrayBuffer, rootUrl: string, onSuccess: () => void, onProgress: (event: ProgressEvent) => void, onError: (message: string) => void): void;
         canDirectLoad(data: string): boolean;
+        rewriteRootURL: (rootUrl: string, responseURL?: string) => string;
+        createPlugin(): ISceneLoaderPlugin | ISceneLoaderPluginAsync;
         private static _parse(data);
         private _getLoader(loaderData);
         private static _parseBinary(data);

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

@@ -55,6 +55,9 @@ var BABYLON;
         GLTFFileLoader.prototype.canDirectLoad = function (data) {
             return ((data.indexOf("scene") !== -1) && (data.indexOf("node") !== -1));
         };
+        GLTFFileLoader.prototype.createPlugin = function () {
+            return new GLTFFileLoader();
+        };
         GLTFFileLoader._parse = function (data) {
             if (data instanceof ArrayBuffer) {
                 return GLTFFileLoader._parseBinary(data);

Plik diff jest za duży
+ 2 - 2
dist/preview release/loaders/babylon.glTF1FileLoader.min.js


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

@@ -13,7 +13,7 @@ declare module BABYLON {
         importMeshAsync: (meshesNames: any, scene: Scene, data: IGLTFLoaderData, rootUrl: string, onSuccess: (meshes: AbstractMesh[], particleSystems: ParticleSystem[], skeletons: Skeleton[]) => void, onProgress: (event: ProgressEvent) => void, onError: (message: string) => void) => void;
         loadAsync: (scene: Scene, data: IGLTFLoaderData, rootUrl: string, onSuccess: () => void, onProgress: (event: ProgressEvent) => void, onError: (message: string) => void) => void;
     }
-    class GLTFFileLoader implements IDisposable, ISceneLoaderPluginAsync {
+    class GLTFFileLoader implements IDisposable, ISceneLoaderPluginAsync, ISceneLoaderPluginFactory {
         static CreateGLTFLoaderV1: (parent: GLTFFileLoader) => IGLTFLoader;
         static CreateGLTFLoaderV2: (parent: GLTFFileLoader) => IGLTFLoader;
         onParsed: (data: IGLTFLoaderData) => void;
@@ -39,6 +39,8 @@ declare module BABYLON {
         importMeshAsync(meshesNames: any, scene: Scene, data: any, rootUrl: string, onSuccess: (meshes: AbstractMesh[], particleSystems: ParticleSystem[], skeletons: Skeleton[]) => void, onProgress: (event: ProgressEvent) => void, onError: (message: string) => void): void;
         loadAsync(scene: Scene, data: string | ArrayBuffer, rootUrl: string, onSuccess: () => void, onProgress: (event: ProgressEvent) => void, onError: (message: string) => void): void;
         canDirectLoad(data: string): boolean;
+        rewriteRootURL: (rootUrl: string, responseURL?: string) => string;
+        createPlugin(): ISceneLoaderPlugin | ISceneLoaderPluginAsync;
         private static _parse(data);
         private _getLoader(loaderData);
         private static _parseBinary(data);

+ 3 - 0
dist/preview release/loaders/babylon.glTF2FileLoader.js

@@ -55,6 +55,9 @@ var BABYLON;
         GLTFFileLoader.prototype.canDirectLoad = function (data) {
             return ((data.indexOf("scene") !== -1) && (data.indexOf("node") !== -1));
         };
+        GLTFFileLoader.prototype.createPlugin = function () {
+            return new GLTFFileLoader();
+        };
         GLTFFileLoader._parse = function (data) {
             if (data instanceof ArrayBuffer) {
                 return GLTFFileLoader._parseBinary(data);

Plik diff jest za duży
+ 2 - 2
dist/preview release/loaders/babylon.glTF2FileLoader.min.js


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

@@ -13,7 +13,7 @@ declare module BABYLON {
         importMeshAsync: (meshesNames: any, scene: Scene, data: IGLTFLoaderData, rootUrl: string, onSuccess: (meshes: AbstractMesh[], particleSystems: ParticleSystem[], skeletons: Skeleton[]) => void, onProgress: (event: ProgressEvent) => void, onError: (message: string) => void) => void;
         loadAsync: (scene: Scene, data: IGLTFLoaderData, rootUrl: string, onSuccess: () => void, onProgress: (event: ProgressEvent) => void, onError: (message: string) => void) => void;
     }
-    class GLTFFileLoader implements IDisposable, ISceneLoaderPluginAsync {
+    class GLTFFileLoader implements IDisposable, ISceneLoaderPluginAsync, ISceneLoaderPluginFactory {
         static CreateGLTFLoaderV1: (parent: GLTFFileLoader) => IGLTFLoader;
         static CreateGLTFLoaderV2: (parent: GLTFFileLoader) => IGLTFLoader;
         onParsed: (data: IGLTFLoaderData) => void;
@@ -39,6 +39,8 @@ declare module BABYLON {
         importMeshAsync(meshesNames: any, scene: Scene, data: any, rootUrl: string, onSuccess: (meshes: AbstractMesh[], particleSystems: ParticleSystem[], skeletons: Skeleton[]) => void, onProgress: (event: ProgressEvent) => void, onError: (message: string) => void): void;
         loadAsync(scene: Scene, data: string | ArrayBuffer, rootUrl: string, onSuccess: () => void, onProgress: (event: ProgressEvent) => void, onError: (message: string) => void): void;
         canDirectLoad(data: string): boolean;
+        rewriteRootURL: (rootUrl: string, responseURL?: string) => string;
+        createPlugin(): ISceneLoaderPlugin | ISceneLoaderPluginAsync;
         private static _parse(data);
         private _getLoader(loaderData);
         private static _parseBinary(data);

+ 3 - 0
dist/preview release/loaders/babylon.glTFFileLoader.js

@@ -55,6 +55,9 @@ var BABYLON;
         GLTFFileLoader.prototype.canDirectLoad = function (data) {
             return ((data.indexOf("scene") !== -1) && (data.indexOf("node") !== -1));
         };
+        GLTFFileLoader.prototype.createPlugin = function () {
+            return new GLTFFileLoader();
+        };
         GLTFFileLoader._parse = function (data) {
             if (data instanceof ArrayBuffer) {
                 return GLTFFileLoader._parseBinary(data);

Plik diff jest za duży
+ 3 - 3
dist/preview release/loaders/babylon.glTFFileLoader.min.js


+ 3 - 0
dist/preview release/loaders/babylonjs.loaders.js

@@ -1029,6 +1029,9 @@ var BABYLON;
         GLTFFileLoader.prototype.canDirectLoad = function (data) {
             return ((data.indexOf("scene") !== -1) && (data.indexOf("node") !== -1));
         };
+        GLTFFileLoader.prototype.createPlugin = function () {
+            return new GLTFFileLoader();
+        };
         GLTFFileLoader._parse = function (data) {
             if (data instanceof ArrayBuffer) {
                 return GLTFFileLoader._parseBinary(data);

Plik diff jest za duży
+ 3 - 3
dist/preview release/loaders/babylonjs.loaders.min.js


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

@@ -111,7 +111,7 @@ declare module BABYLON {
         importMeshAsync: (meshesNames: any, scene: Scene, data: IGLTFLoaderData, rootUrl: string, onSuccess: (meshes: AbstractMesh[], particleSystems: ParticleSystem[], skeletons: Skeleton[]) => void, onProgress: (event: ProgressEvent) => void, onError: (message: string) => void) => void;
         loadAsync: (scene: Scene, data: IGLTFLoaderData, rootUrl: string, onSuccess: () => void, onProgress: (event: ProgressEvent) => void, onError: (message: string) => void) => void;
     }
-    class GLTFFileLoader implements IDisposable, ISceneLoaderPluginAsync {
+    class GLTFFileLoader implements IDisposable, ISceneLoaderPluginAsync, ISceneLoaderPluginFactory {
         static CreateGLTFLoaderV1: (parent: GLTFFileLoader) => IGLTFLoader;
         static CreateGLTFLoaderV2: (parent: GLTFFileLoader) => IGLTFLoader;
         onParsed: (data: IGLTFLoaderData) => void;
@@ -137,6 +137,8 @@ declare module BABYLON {
         importMeshAsync(meshesNames: any, scene: Scene, data: any, rootUrl: string, onSuccess: (meshes: AbstractMesh[], particleSystems: ParticleSystem[], skeletons: Skeleton[]) => void, onProgress: (event: ProgressEvent) => void, onError: (message: string) => void): void;
         loadAsync(scene: Scene, data: string | ArrayBuffer, rootUrl: string, onSuccess: () => void, onProgress: (event: ProgressEvent) => void, onError: (message: string) => void): void;
         canDirectLoad(data: string): boolean;
+        rewriteRootURL: (rootUrl: string, responseURL?: string) => string;
+        createPlugin(): ISceneLoaderPlugin | ISceneLoaderPluginAsync;
         private static _parse(data);
         private _getLoader(loaderData);
         private static _parseBinary(data);