package com.team.futurecraft.space;
import static org.lwjgl.opengl.GL11.GL_ONE;
import static org.lwjgl.opengl.GL11.GL_ONE_MINUS_SRC_ALPHA;
import static org.lwjgl.opengl.GL11.GL_SRC_ALPHA;
import static org.lwjgl.opengl.GL11.glBlendFunc;
import static org.lwjgl.opengl.GL11.glColor3f;
import static org.lwjgl.opengl.GL11.glPopMatrix;
import static org.lwjgl.opengl.GL11.glPushMatrix;
import static org.lwjgl.opengl.GL11.glRotatef;
import static org.lwjgl.opengl.GL11.glTranslatef;
import org.lwjgl.util.glu.GLU;
import org.lwjgl.util.glu.Sphere;
import com.team.futurecraft.rendering.Camera;
import com.team.futurecraft.rendering.Textures;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.WorldRenderer;
/**
* The class that all stars should extend.
*
* @author Joseph
*/
public abstract class Star extends CelestialObject {
public Star(CelestialObject parent) {
super(parent);
}
/**
* This is definitely a star.
*/
public EnumCelestialType getType() {
return EnumCelestialType.STAR;
}
/**
* No way we're landing on it.
*/
public boolean isLandable() {
return true;
}
public void renderStatic(Minecraft mc) {
}
/**
* Render's an awesome star.
*/
public void render(Camera cam, float time) {
Tessellator tessellator = Tessellator.getInstance();
WorldRenderer renderer = tessellator.getWorldRenderer();
//draw the star itself
glPushMatrix();
GlStateManager.disableLighting();
GlStateManager.disableTexture2D();
glTranslatef(0, 0, 0);
glColor3f(2.0f, 2.0f, 2.0f);
Sphere sphere = new Sphere();
sphere.setTextureFlag(false);
sphere.setNormals(GLU.GLU_SMOOTH);
sphere.draw((this.physical.diameter / 1000000) * 2, 100, 100);
glPopMatrix();
//draw the star glow
glPushMatrix();
GlStateManager.enableTexture2D();
glBlendFunc(GL_ONE, GL_ONE);
Textures.loadTexture("textures/environment/star_glow.png");
glRotatef((float)-cam.rot.x, 0, 1, 0);
glRotatef((float)-cam.rot.y, 1, 0, 0);
float glowSize = ((this.physical.diameter / 1000000) * 2) * 20;
renderer.startDrawingQuads();
renderer.setColorRGBA(255, 255, 255, 255);
renderer.addVertexWithUV(-glowSize, -glowSize, 0, 0, 1);
renderer.addVertexWithUV(glowSize, -glowSize, 0, 1, 1);
renderer.addVertexWithUV(glowSize, glowSize, 0, 1, 0);
renderer.addVertexWithUV(-glowSize, glowSize, 0, 0, 0);
tessellator.draw();
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glPopMatrix();
GlStateManager.enableLighting();
GlStateManager.enableTexture2D();
this.renderChildren(cam, time);
}
}