package com.android.droidgraph.lighting; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import javax.microedition.khronos.opengles.GL10; import android.util.Log; import com.android.droidgraph.util.Settings; public class LightStudio { Collection<Light> lights = new HashSet<Light>(); HashMap<String, Light> names = new HashMap<String, Light>(); private int numLights = 0; private boolean lightEnabled = true; private GL10 gl; private Settings mSettings; public LightStudio(Settings settings) { mSettings = settings; gl = mSettings.getGL(); mSettings.setLightStudio(this); } public void load(GL10 gl) { for (Light light : lights) { light.onSurfaceCreated(gl); Log.d("LightStudio", light.toString()); } } public void createLight(String name, float[] ambient, float[] diffuse, float[] specular, float[] position){ Light light = new Light(ambient, diffuse, specular, position, lights.size() - 1); lights.add(light); names.put(name, light); numLights++; } public void createLight(String name, float[] pos) { Light light = new Light(pos, lights.size() - 1); lights.add(light); names.put(name, light); numLights++; } public void render(GL10 gl) { // Check if the light flag has been set to enable/disable lighting if (lightEnabled) { gl.glEnable(GL10.GL_LIGHTING); } } public void killRender(GL10 gl) { // anything that needs to happen at the end if(lightEnabled) { gl.glDisable(GL10.GL_LIGHTING); } } public Light enableLight(String name) { Light light = names.get(name); gl.glEnable(light.getID()); return light; } public Light disableLight(String name) { Light light = names.get(name); gl.glDisable(light.getID()); return light; } public void enable() { lightEnabled = true; } public void disable() { lightEnabled = false; } public Light getLight(String name) { return names.get(name); } }