Browse Source

Added delayCreateScene to PG

David Catuhe 7 years ago
parent
commit
07e8d12c33
2 changed files with 23 additions and 4 deletions
  1. 10 2
      Playground/js/frame.js
  2. 13 2
      Playground/js/index.js

+ 10 - 2
Playground/js/frame.js

@@ -63,7 +63,6 @@
             var canvas = document.getElementById("renderCanvas");
             engine = new BABYLON.Engine(canvas, true, { stencil: true });
             BABYLON.Camera.ForceAttachControlToAlwaysPreventDefault = true;
-
             engine.runRenderLoop(function () {
                 if (engine.scenes.length === 0) {
                     return;
@@ -85,7 +84,16 @@
             });
 
             var scene;
-            if (code.indexOf("createScene") !== -1) { // createScene
+            if (code.indexOf("delayCreateScene") !== -1) { // createScene
+                eval(code);
+                scene = delayCreateScene();
+                if (!scene) {
+                    showError("delayCreateScene function must return a scene.", null);
+                    return;
+                }
+
+                zipCode = code + "\r\n\r\nvar scene = createScene();";
+            } if (code.indexOf("createScene") !== -1) { // createScene
                 eval(code);
                 scene = createScene();
                 if (!scene) {

+ 13 - 2
Playground/js/index.js

@@ -356,6 +356,7 @@
                 document.getElementById("errorZone").style.display = 'none';
                 document.getElementById("errorZone").innerHTML = "";
                 document.getElementById("statusBar").innerHTML = "Loading assets...Please wait";
+                var checkCamera = true;
 
                 engine.runRenderLoop(function () {
                     if (engine.scenes.length === 0) {
@@ -378,7 +379,17 @@
 
                 var code = jsEditor.getValue();
                 var scene;
-                if (code.indexOf("createScene") !== -1) { // createScene
+                if (code.indexOf("delayCreateScene") !== -1) { // createScene
+                    eval(code);
+                    scene = delayCreateScene();
+                    checkCamera = false;
+                    if (!scene) {
+                        showError("delayCreateScene function must return a scene.", null);
+                        return;
+                    }
+
+                    zipCode = code + "\r\n\r\nvar scene = createScene();";
+                } else if (code.indexOf("createScene") !== -1) { // createScene
                     eval(code);
                     scene = createScene();
                     if (!scene) {
@@ -418,7 +429,7 @@
                     return;
                 }
 
-                if (engine.scenes[0].activeCamera == null) {
+                if (checkCamera && engine.scenes[0].activeCamera == null) {
                     showError("You must at least create a camera.", null);
                     return;
                 }