package com.team.futurecraft.rendering; import org.lwjgl.opengl.GL11; import com.team.futurecraft.Vec4f; import com.team.futurecraft.Vec3f; import com.team.futurecraft.space.Planet; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.WorldClient; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.WorldRenderer; import net.minecraftforge.client.IRenderHandler; /** * The SkyRendering class used for rendering the sky of planets. * * @author Joseph * */ public class PlanetSkyRenderer extends IRenderHandler { private Planet planet; private long time = 62755776000L ; public PlanetSkyRenderer(Planet planet) { this.planet = planet; } @Override public void render(float partialTicks, WorldClient world, Minecraft mc) { GL11.glDepthMask(false); GL11.glDisable(GL11.GL_FOG); GlStateManager.enableAlpha(); SpaceRenderer render = new SpaceRenderer(); Camera cam = new Camera(this.planet.getPosition(time), new Vec3f(mc.thePlayer.rotationYaw, mc.thePlayer.rotationPitch, 0)); render.render(cam, time, false); renderAtmosphere(mc); GL11.glDepthMask(true); } private void renderAtmosphere(Minecraft mc) { Tessellator tessellator = Tessellator.getInstance(); WorldRenderer renderer = tessellator.getWorldRenderer(); Vec4f colors = this.planet.atmosphere; for (int i = 0; i < 2; i++) { GL11.glPushMatrix(); GL11.glRotatef(-mc.thePlayer.rotationYaw, 0, 1, 0); //if (i == 1) GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F); if (i == 1) GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F); //if (i == 3) GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); GlStateManager.disableTexture2D(); GlStateManager.enableBlend(); GlStateManager.disableAlpha(); GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0); GlStateManager.shadeModel(7425); renderer.startDrawingQuads(); renderer.setColorRGBA_F((float)colors.x, (float)colors.y, (float)colors.z, (float)colors.w); renderer.addVertex(-500.0D, -100.0D, -100.0D); renderer.addVertex(500.0D, -100.0D, -100.0D); renderer.setColorRGBA_F((float)colors.x, (float)colors.y, (float)colors.z, (float)colors.w - 0.5f); renderer.addVertex(500.0D, 100.0D, -100.0D); renderer.addVertex(-500.0D, 100.0D, -100.0D); tessellator.draw(); GL11.glPopMatrix(); } GL11.glPushMatrix(); GL11.glRotatef(-mc.thePlayer.rotationYaw, 0, 1, 0); renderer.startDrawingQuads(); renderer.setColorRGBA_F((float)colors.x, (float)colors.y, (float)colors.z, (float)colors.w - 0.5f); renderer.addVertex(-500.0D, 100.0D, -100.0D); renderer.addVertex(500.0D, 100.0D, -100.0D); renderer.addVertex(500.0D, 100.0D, 100.0D); renderer.addVertex(-500.0D, 100.0D, 100.0D); tessellator.draw(); GL11.glPopMatrix(); GlStateManager.enableTexture2D(); } }