var Assets = function() { this.jsons = []; this.load_textures = []; this.textures = []; this.add=function(file, name) { this.jsons.push( { file: file, name: name}); }; this.load = function() { this.add('js/meshes/wall.js','wall'); this.add('js/meshes/wall1.js','wall1'); this.add('js/meshes/door.js','door'); this.add('js/meshes/door1.js','door1'); this.add('js/meshes/dooropen.js','dooropen'); this.add('js/meshes/dooropen1.js','dooropen1'); this.add('blender/pingu_with_armature.json','perso'); this.add('blender/ennemy.json','ennemy'); this.add('blender/key.json','key'); this.add_texture('textures/path_wall.jpg','path_wall'); this.add_texture('textures/path_wall_bump.jpg','path_wall_bump'); this.add_texture('textures/wall.jpg','cell_wall'); this.add_texture('textures/path_wall_bump.jpg','cell_wall_bump'); this.add_texture('textures/path_floor.jpg','path_floor'); this.add_texture('textures/path_floor_bump.jpg','path_floor_bump'); this.add_texture('textures/path_floor.jpg','maze_floor'); this.add_texture('textures/path_floor_bump.jpg','maze_floor_bump'); return this._load(); }; this.add_texture=function(file, name) { this.load_textures.push( { file: file, name: name}); }; this._load = function() { var self=this; var promises=[]; this.jsons.forEach(function(json) { promises.push(new Promise(function(ok, reject) { var loader = new THREE.JSONLoader(); loader.load(json.file, function(geometry, mat) { self[json.name+'_geo'] = geometry; self[json.name+'_mat'] = mat; ok(); }); })); }); this.load_textures.forEach(function(json) { promises.push(new Promise(function(ok, reject) { var textureLoader = new THREE.TextureLoader(); textureLoader.load(json.file, function(tex) { self[json.name+'_texture']= tex; self[json.name+'_texture'].wrapS = self[json.name+'_texture'].wrapT = THREE.RepeatWrapping; ok(); }); })); }); promises.push(new Promise(function(ok, reject) { self.step_sound = new Audio('sounds/step.mp3'); self.step_sound.loop=true; self.step_sound.load(); ok(); })); return Promise.all(promises); } this.getTexture = function(texture, bumpTexture) { if(!this.textures[texture+'_'+bumpTexture]) { console.log('creating texture ',texture+' / '+bumpTexture); this.textures[texture+'_'+bumpTexture] = new THREE.MeshPhongMaterial({ bumpScale:1, map: this[texture+'_texture'], bumpMap: this[bumpTexture+'_texture'] }); } return this.textures[texture+'_'+bumpTexture]; } };