load scene by name

beta.r3js.org
Theunis J. Botha 2016-09-30 16:05:33 +02:00
parent ffa5d8505b
commit ee0e34cb59
1 changed files with 39 additions and 7 deletions

View File

@ -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;