package org.ege.gl;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL10;
public class PointLight {
private final float[] ambient = {
0.2f,0.2f,0.2f,0.2f
};
private final float[] diffuse = {
1.0f,1.0f,1.0f,1.0f
};
private final float[] specular = {
0.0f,0.0f,0.0f,0.0f
};
// point light the last must be 1
private final float[] position = {
0,0,0,1
};
private int mLastLightId = 0;
public PointLight setAmbient(float r,float g,float b,float a){
ambient[0] = r;
ambient[1] = g;
ambient[2] = b;
ambient[3] = a;
return this;
}
public PointLight setAmbient(Color c){
ambient[0] = c.r;
ambient[1] = c.g;
ambient[2] = c.b;
ambient[3] = c.a;
return this;
}
public PointLight setDiffuse(float r,float g,float b,float a){
diffuse[0] = r;
diffuse[1] = g;
diffuse[2] = b;
diffuse[3] = a;
return this;
}
public PointLight setDiffuse(Color c){
diffuse[0] = c.r;
diffuse[1] = c.g;
diffuse[2] = c.b;
diffuse[3] = c.a;
return this;
}
public PointLight setSpecular(float r,float g,float b,float a){
specular[0] = r;
specular[1] = g;
specular[2] = b;
specular[3] = a;
return this;
}
public PointLight setSpecular(Color c){
specular[0] = c.r;
specular[1] = c.g;
specular[2] = c.b;
specular[3] = c.a;
return this;
}
public PointLight setPosition(float x,float y,float z){
position[0] = x;
position[1] = y;
position[2] = z;
return this;
}
public void enable(GL10 gl,int lightId){
mLastLightId = lightId;
gl.glEnable(lightId);
gl.glLightfv(lightId, GL10.GL_DIFFUSE, diffuse,0);
gl.glLightfv(lightId, GL10.GL_AMBIENT, ambient,0);
gl.glLightfv(lightId, GL10.GL_SPECULAR, specular,0);
gl.glLightfv(lightId, GL10.GL_POSITION, position,0);
}
public void enable(int lightId){
final GL10 gl = Gdx.graphics.getGL10();
mLastLightId = lightId;
gl.glEnable(lightId);
gl.glLightfv(lightId, GL10.GL_DIFFUSE, diffuse,0);
gl.glLightfv(lightId, GL10.GL_AMBIENT, ambient,0);
gl.glLightfv(lightId, GL10.GL_SPECULAR, specular,0);
gl.glLightfv(lightId, GL10.GL_POSITION, position,0);
}
public void disable(GL10 gl){
gl.glDisable(mLastLightId);
}
public void disable(){
final GL10 gl = Gdx.graphics.getGL10();
gl.glDisable(mLastLightId);
}
}