From b3cc003029741022a76f98676411a3a356bf0f11 Mon Sep 17 00:00:00 2001
From: Elohiem <20236-Elohiem@users.noreply.gitgud.io>
Date: Sat, 21 May 2022 05:11:19 +0200
Subject: [PATCH] Load models asynchronously

---
 src/art/artJS.js | 30 +++++++++++++++++-------------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/src/art/artJS.js b/src/art/artJS.js
index c5ffbcbe01a..9ac36f8df0e 100644
--- a/src/art/artJS.js
+++ b/src/art/artJS.js
@@ -273,24 +273,28 @@ App.Art.webglArtElement = function(slave, artSize) {
 	let container = document.createElement("div");
 	container.setAttribute("class", "artContainer");
 	container.style.fontSize = "large";
-	container.innerText = "Loading...";
+	// container.innerText = "Loading...";
 
 	container.addEventListener("engineLoaded", function() {
-		// when engine is ready, attach default scene
-		let scene = JSON.parse(JSON.stringify(App.Art.defaultScene));
+		let img = document.createElement("img"); // hack to simulate onload event
+		img.onerror = function() {
+			// when engine is ready, attach default scene
+			let scene = JSON.parse(JSON.stringify(App.Art.defaultScene));
 
-		// apply the model transforms
-		let p = App.Art.getArtParams(slave);
-		App.Art.applyFigures(slave, scene, p);
-		App.Art.applySurfaces(slave, scene, p);
-		App.Art.applyMaterials(slave, scene, p);
-		App.Art.applyMorphs(slave, scene, p);
+			// apply the model transforms
+			let p = App.Art.getArtParams(slave);
+			App.Art.applyFigures(slave, scene, p);
+			App.Art.applySurfaces(slave, scene, p);
+			App.Art.applyMaterials(slave, scene, p);
+			App.Art.applyMorphs(slave, scene, p);
 
-		// console.log(scene);
+			// console.log(scene);
 
-		// create UI and render based on active view
-		container.innerText = "";
-		App.Art.createWebglUI(container, slave, artSize, scene, p);
+			// create UI and render based on active view
+			container.innerText = "";
+			App.Art.createWebglUI(container, slave, artSize, scene, p);
+		};
+		img.src = '';
 	});
 
 	container.addEventListener("engineFailed", function() {
-- 
GitLab