/* This file contains proprietary software owned by Motorola Mobility, Inc.
No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.
(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
*/ // RDGE namespaces var RDGE = RDGE || {}; // manage light links RDGE.LightManager = function (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 = [ RDGE.createLightNode("default0"), RDGE.createLightNode("default1"), RDGE.createLightNode("default2"), RDGE.createLightNode("default3") ]; }; /* * configuration function called when loading the scene */ RDGE.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); } }; RDGE.LightManager.prototype.getLightsForMesh = function (mesh) { return this.meshToLight[mesh]; };