diff --git a/docs/Class_EmbeddedViewer.html b/docs/Class_EmbeddedViewer.html index 3d61cd6..15cf588 100644 --- a/docs/Class_EmbeddedViewer.html +++ b/docs/Class_EmbeddedViewer.html @@ -142,6 +142,14 @@
Callback that is called when the model with all of the textures is fully loaded.
+
+onModelLoadFailed +function +(optional) +
+
+
Callback that is called when the model load failed.
+

Methods

diff --git a/package.json b/package.json index 582943e..16daa6f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "online-3d-viewer", - "version": "0.16.0", + "version": "0.17.0", "description": "Online 3D Viewer", "license": "MIT", "type": "module", diff --git a/source/engine/viewer/embeddedviewer.js b/source/engine/viewer/embeddedviewer.js index 92c8ad2..01bbd5e 100644 --- a/source/engine/viewer/embeddedviewer.js +++ b/source/engine/viewer/embeddedviewer.js @@ -31,6 +31,7 @@ export class EmbeddedViewer * @param {EnvironmentSettings} [parameters.environmentSettings] Environment settings. * @param {function} [parameters.onModelLoaded] Callback that is called when the model with all * of the textures is fully loaded. + * @param {function} [parameters.onModelLoadFailed] Callback that is called when the model load failed. */ constructor (parentElement, parameters) { @@ -69,6 +70,7 @@ export class EmbeddedViewer this.model = null; this.modelLoader = new ThreeModelLoader (); + this.progressDiv = null; window.addEventListener ('resize', () => { this.Resize (); }); @@ -120,26 +122,30 @@ export class EmbeddedViewer } this.model = null; - let progressDiv = null; + if (this.progressDiv !== null) { + this.parentElement.removeChild (this.progressDiv); + this.progressDiv = null; + } this.modelLoader.LoadModel (inputFiles, settings, { onLoadStart : () => { this.canvas.style.display = 'none'; - progressDiv = document.createElement ('div'); - progressDiv.innerHTML = Loc ('Loading model...'); - this.parentElement.appendChild (progressDiv); + this.progressDiv = document.createElement ('div'); + this.progressDiv.innerHTML = Loc ('Loading model...'); + this.parentElement.appendChild (this.progressDiv); }, onFileListProgress : (current, total) => { }, onFileLoadProgress : (current, total) => { }, onImportStart : () => { - progressDiv.innerHTML = Loc ('Importing model...'); + this.progressDiv.innerHTML = Loc ('Importing model...'); }, onVisualizationStart : () => { - progressDiv.innerHTML = Loc ('Visualizing model...'); + this.progressDiv.innerHTML = Loc ('Visualizing model...'); }, onModelFinished : (importResult, threeObject) => { - this.parentElement.removeChild (progressDiv); + this.parentElement.removeChild (this.progressDiv); + this.progressDiv = null; this.canvas.style.display = 'inherit'; this.viewer.SetMainObject (threeObject); let boundingSphere = this.viewer.GetBoundingSphere ((meshUserData) => { @@ -173,7 +179,10 @@ export class EmbeddedViewer if (importError.message !== null) { message += ' (' + importError.message + ')'; } - progressDiv.innerHTML = message; + this.progressDiv.innerHTML = message; + if (this.parameters.onModelLoadFailed) { + this.parameters.onModelLoadFailed (); + } } }); }