From b89a7ee8b956c96a1dcee995ea840feddc5d4b27 Mon Sep 17 00:00:00 2001 From: Pierre Frisch Date: Thu, 22 Dec 2011 07:25:50 -0800 Subject: First commit of Ninja to ninja-internal Signed-off-by: Valerio Virgillito --- .../RDGE/src/core/script/lightmanager.js | 97 ++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 js/helper-classes/RDGE/src/core/script/lightmanager.js (limited to 'js/helper-classes/RDGE/src/core/script/lightmanager.js') diff --git a/js/helper-classes/RDGE/src/core/script/lightmanager.js b/js/helper-classes/RDGE/src/core/script/lightmanager.js new file mode 100644 index 00000000..7d76ef90 --- /dev/null +++ b/js/helper-classes/RDGE/src/core/script/lightmanager.js @@ -0,0 +1,97 @@ +/* +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. +
*/ + +// 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]; } -- cgit v1.2.3