From ee0e34cb59f1345417d636d2c90ed9535884dc68 Mon Sep 17 00:00:00 2001 From: "Theunis J. Botha" Date: Fri, 30 Sep 2016 16:05:33 +0200 Subject: [PATCH] load scene by name --- game-lib.js | 46 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/game-lib.js b/game-lib.js index 9b073a0..0c97230 100644 --- a/game-lib.js +++ b/game-lib.js @@ -2350,21 +2350,53 @@ GameLib.D3.prototype.createThreeMaterial = function(blenderMaterial) { return defer.promise; }; +/** + * Loads a scene directly from the API + * @param sceneName + * @param onLoaded callback + */ +GameLib.D3.prototype.loadSceneFromApi = function(sceneName, onLoaded) { + /** + * First check if this is a client or server side request + */ + if (typeof XMLHttpRequest == 'undefined') { + console.warn('implement server side loading from API here'); + return onLoaded(null, new Error('not implemented')); + } + + var xhr = new XMLHttpRequest(); + xhr.open( + 'GET', + this.apiUrl + '/scene/pong%20latest' + ); + + xhr.onreadystatechange = function(xhr, gameLibD3) { + return function() { + if (xhr.readyState == 4) { + var response = JSON.parse(xhr.responseText); + gameLibD3.loadScene(response.scene[0], onLoaded, false); + } + } + }(xhr, this); + + xhr.send(); +}; + /** * Loads a GameLib.D3.Scene object into a ThreeJS Scene object - * @param blenderScene GameLib.D3.Scene + * @param gameLibScene GameLib.D3.Scene * @param onLoaded callback when all meshes have loaded * @param computeNormals set to true to compute new face and vertex normals during load */ -GameLib.D3.prototype.loadScene = function(blenderScene, onLoaded, computeNormals) { +GameLib.D3.prototype.loadScene = function(gameLibScene, onLoaded, computeNormals) { - console.log("loading scene " + blenderScene.name); + console.log("loading scene " + gameLibScene.name); var meshQ = []; - for (var m = 0; m < blenderScene.meshes.length; m++) { + for (var m = 0; m < gameLibScene.meshes.length; m++) { - var mesh = blenderScene.meshes[m]; + var mesh = gameLibScene.meshes[m]; console.log("loading mesh " + mesh.name); @@ -2553,9 +2585,9 @@ GameLib.D3.prototype.loadScene = function(blenderScene, onLoaded, computeNormals var threeLights = []; - for (var sli = 0; sli < blenderScene.lights.length; sli++) { + for (var sli = 0; sli < gameLibScene.lights.length; sli++) { - var blenderLight = blenderScene.lights[sli]; + var blenderLight = gameLibScene.lights[sli]; var light = null;