فهرست منبع

Merge pull request #1 from TrevorDev/textureTransformBugTrevor

playground async working
Kacey Coley 7 سال پیش
والد
کامیت
b16ce274c2
3فایلهای تغییر یافته به همراه40 افزوده شده و 11 حذف شده
  1. 17 8
      Playground/js/index.js
  2. 9 2
      serializers/src/glTF/2.0/Extensions/KHR_texture_transform.ts
  3. 14 1
      tests/validation/validation.js

+ 17 - 8
Playground/js/index.js

@@ -548,6 +548,7 @@ function showError(errorMessage, errorEvent) {
                 document.getElementById("errorZone").innerHTML = "";
                 document.getElementById("statusBar").innerHTML = "Loading assets...Please wait";
                 var checkCamera = true;
+                var checkSceneCount = true;
                 var wrappedEval = false;
                 var createEngineFunction = "createDefaultEngine";
                 var createSceneFunction;
@@ -595,7 +596,11 @@ function showError(errorMessage, errorEvent) {
     
                         //create scene
                         eval("scene = " + createSceneFunction + "()");
-    
+                        // if scene returns a promise avoid checks
+                        if(scene.then){
+                            checkCamera = false
+                            checkSceneCount = false
+                        }
                         if (!scene) {
                             showError(createSceneFunction + " function must return a scene.", null);
                             return;
@@ -631,7 +636,7 @@ function showError(errorMessage, errorEvent) {
                         fpsLabel.innerHTML = engine.getFps().toFixed() + " fps";
                     });
     
-                    if (engine.scenes.length === 0) {
+                    if (checkSceneCount && engine.scenes.length === 0) {
                         showError("You must at least create a scene.", null);
                         return;
                     }
@@ -639,12 +644,16 @@ function showError(errorMessage, errorEvent) {
                     if (checkCamera && engine.scenes[0].activeCamera == null) {
                         showError("You must at least create a camera.", null);
                         return;
-                    }
-    
-                    engine.scenes[0].executeWhenReady(function () {
-                        document.getElementById("statusBar").innerHTML = "";
-                    });
-    
+                    }else if(scene.then){
+                        scene.then(function (){
+                            document.getElementById("statusBar").innerHTML = "";
+                        });
+                    }else{
+                        engine.scenes[0].executeWhenReady(function () {
+                            document.getElementById("statusBar").innerHTML = "";
+                        });
+                    }           
+
                     if (scene) {
                         if (showInspector) {
                             scene.debugLayer.show({ initialTab: initialTabIndex });

+ 9 - 2
serializers/src/glTF/2.0/Extensions/KHR_texture_transform.ts

@@ -92,8 +92,15 @@ module BABYLON.GLTF2.Exporter.Extensions {
                 proceduralTexture.setTexture("textureSampler", babylonTexture);
                 proceduralTexture.setMatrix("textureTransformMat", babylonTexture.getTextureMatrix());
 
-                proceduralTexture.onGenerated = () => {
-                    resolve(proceduralTexture);
+                // isReady trigger creation of effect if it doesnt exist yet
+                if(proceduralTexture.isReady()){
+                    proceduralTexture.render();
+                    resolve(proceduralTexture)
+                }else{
+                    (proceduralTexture as any)._effect.onCompileObservable.add(() => {
+                        proceduralTexture.render();
+                        resolve(proceduralTexture);
+                    });
                 }
             });
         }

+ 14 - 1
tests/validation/validation.js

@@ -260,7 +260,20 @@ function runTest(index, done) {
                         code = code.replace(/\/scenes\//g, pgRoot + "/scenes/");
                         code = code.replace(/"scenes\//g, "\"" + pgRoot + "/scenes/");
                         currentScene = eval(code + "\r\ncreateScene(engine)");
-                        processCurrentScene(test, resultCanvas, result, renderImage, index, waitRing, done);
+
+                        if(currentScene.then){
+                            // Handle if createScene returns a promise
+                            currentScene.then(function(scene){
+                                currentScene = scene;
+                                processCurrentScene(test, resultCanvas, result, renderImage, index, waitRing, done);
+                            }).catch(function(e){
+                                console.error(e);
+                                onError();
+                            })
+                        }else{
+                            // Handle if createScene returns a scene
+                            processCurrentScene(test, resultCanvas, result, renderImage, index, waitRing, done);
+                        }
                     }
                     catch (e) {
                         console.error(e);