package game;
import java.nio.FloatBuffer;
import org.lwjgl.BufferUtils;
import org.lwjgl.opengl.GL11;
public class Lighting {
public static boolean isUnderwater = false;
public static void initLighting() {
FloatBuffer lightAmbient = BufferUtils.createFloatBuffer(4);
if (isUnderwater) {
lightAmbient.put(0, Game.AMBIENCE_COLOR.x - 0.7f);
lightAmbient.put(1, Game.AMBIENCE_COLOR.y - 0.7f);
lightAmbient.put(2, Game.AMBIENCE_COLOR.z - 0.6f);
lightAmbient.put(3, Game.AMBIENCE_COLOR.a);
} else {
lightAmbient.put(0, (Game.AMBIENCE_COLOR.x * 2.0f) + 2f);
lightAmbient.put(1, (Game.AMBIENCE_COLOR.y * 2.0f) + 2f);
lightAmbient.put(2, (Game.AMBIENCE_COLOR.z * 2.0f) + 2f);
lightAmbient.put(3, 1f);
}
GL11.glLight(GL11.GL_LIGHT1, GL11.GL_AMBIENT, lightAmbient); // Setup The Ambient Light
GL11.glEnable(GL11.GL_LIGHT1); // Enable Light One
}
public static void initFog() {
if (isUnderwater) {
GL11.glEnable(GL11.GL_FOG);
FloatBuffer fogColor = BufferUtils.createFloatBuffer(4);
fogColor.put(Game.AMBIENCE_COLOR.x - 0.7f).put(Game.AMBIENCE_COLOR.y - 0.7f).put(Game.AMBIENCE_COLOR.z - 0.6f).put(Game.AMBIENCE_COLOR.a).flip();
GL11.glFogi(GL11.GL_FOG_MODE, GL11.GL_EXP2);
GL11.glFog(GL11.GL_FOG_COLOR, fogColor);
GL11.glFogf(GL11.GL_FOG_DENSITY, 0.2f);
GL11.glHint(GL11.GL_FOG_HINT, GL11.GL_DONT_CARE);
} else {
GL11.glEnable(GL11.GL_FOG);
FloatBuffer fogColor = BufferUtils.createFloatBuffer(4);
fogColor.put(Game.AMBIENCE_COLOR.x).put(Game.AMBIENCE_COLOR.y).put(Game.AMBIENCE_COLOR.z).put(Game.AMBIENCE_COLOR.a).flip();
GL11.glFogi(GL11.GL_FOG_MODE, GL11.GL_EXP2);
GL11.glFog(GL11.GL_FOG_COLOR, fogColor);
GL11.glFogf(GL11.GL_FOG_DENSITY, 0.01f); // was 0.08
GL11.glHint(GL11.GL_FOG_HINT, GL11.GL_DONT_CARE);
}
}
public static void setIsUnderwater(boolean b) {
isUnderwater = b;
}
}