/* <copyright> This file contains proprietary software owned by Motorola Mobility, Inc.<br/> No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/> (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. </copyright> */ // manage light links function LightManager( lightUniformList ) { // build a list of all light uniforms, contains a list of light uniform lists this.lightUniforms = [ [], [], [], [] ]; // bucket the uniforms lists for(var l in lightUniformList) { // starts with if(l.indexOf("u_light0") == 0) { this.lightUniforms[0][l] = l; } else if(l.indexOf("u_light1") == 0) { this.lightUniforms[1][l] = l; } else if(l.indexOf("u_light2") == 0) { this.lightUniforms[2][l] = l; } else if(l.indexOf("u_light3") == 0) { this.lightUniforms[3][l] = l; } } // maps (takes a string returns an object) this.lightToMesh =[]; // pass light name, returns light of meshes this.meshToLight =[]; // pass mesh name, returns list of lights // list of light objects by type this.dirLights=[]; this.pointLights=[]; this.spotLights = []; this.ambLights = []; this.unknLights = []; // light types this.typePointLight = "point_light"; this.typeSpotLight = "spot_light"; this.typeAmbLight = "amb_light"; this.typeDirLight = "dir_light"; this.defaultLights = [ createLightNode("default0"), createLightNode("default1"), createLightNode("default2"), createLightNode("default3") ]; } /* * configuration function called when loading the scene */ LightManager.prototype.setMapping = function(theLightNode, theLinks) { this.lightToMesh[theLightNode.name] = theLinks; for (var lghtIdx = 0; lghtIdx < theLinks.length; lghtIdx++) { var lightList = this.meshToLight[theLinks[lghtIdx]]; // check if mapping list exists if (lightList !== undefined) { lightList.push(theLightNode); } else { // create new light list and add light list mapping lightList = []; lightList.push(theLightNode); this.meshToLight[theLinks[lghtIdx]] = lightList; } } if (theLightNode.typeName == this.typePointLight) { this.pointLights.push(theLightNode); } else if (theLightNode.typeName == this.typeSpotLight) { this.spotLights.push(theLightNode); } else if (theLightNode.typeName == this.typeAmbLight) { this.ambLights.push(theLightNode); } else if (theLightNode.typeName == this.typeDirLight) { this.dirLights.push(theLightNode); }else{ this.unknLights.push(theLightNode); } } LightManager.prototype.getLightsForMesh = function(mesh) { return this.meshToLight[mesh]; }