package pneumaticCraft.client.render.pneumaticArmor;
import java.util.Random;
import net.minecraft.client.renderer.Tessellator;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import pneumaticCraft.common.util.PneumaticCraftUtils;
public class RenderTargetCircle{
private double oldRotationAngle;
private double rotationAngle = 0;
private double rotationSpeed = 0;
private double rotationAcceleration = 0;
private final Random rand;
private boolean renderAsTagged;
public RenderTargetCircle(){
rand = new Random();
}
public void setRenderingAsTagged(boolean tagged){
renderAsTagged = tagged;
}
public void update(){
oldRotationAngle = rotationAngle;
if(rand.nextInt(15) == 0) rotationAcceleration = (rand.nextDouble() - 0.5D) / 2.5D;
rotationSpeed += rotationAcceleration;// * 0.05D;
double maxSpeed = 8.0D;
if(rotationSpeed >= maxSpeed) rotationSpeed = maxSpeed;
if(rotationSpeed <= -maxSpeed) rotationSpeed = -maxSpeed;
rotationAngle += rotationSpeed;// * 0.05D;
}
public void render(double size, float partialTicks){
double renderRotationAngle = oldRotationAngle + (rotationAngle - oldRotationAngle) * partialTicks;
Tessellator tessellator = Tessellator.instance;
GL11.glPushMatrix();
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
// GL11.glLineWidth((float)size * 20F);
GL11.glEnable(GL11.GL_LINE_SMOOTH);
GL11.glRotatef((float)renderRotationAngle, 0, 0, 1);
tessellator.setNormal(0F, 1F, 0F);
for(int j = 0; j < 2; j++) {
tessellator.startDrawing(GL11.GL_TRIANGLE_STRIP);
for(int i = 0; i < PneumaticCraftUtils.circlePoints / 4; i++) {
tessellator.addVertex(PneumaticCraftUtils.cos[i] * size, PneumaticCraftUtils.sin[i] * size, 0);
tessellator.addVertex(PneumaticCraftUtils.cos[i] * (size + 0.1D), PneumaticCraftUtils.sin[i] * (size + 0.1D), 0);
}
tessellator.draw();
if(renderAsTagged) {
GL11.glColor4d(1, 0, 0, 1);
tessellator.startDrawing(GL11.GL_LINE_LOOP);
for(int i = 0; i < PneumaticCraftUtils.circlePoints / 4; i++) {
tessellator.addVertex(PneumaticCraftUtils.cos[i] * size, PneumaticCraftUtils.sin[i] * size, 0);
}
for(int i = PneumaticCraftUtils.circlePoints / 4 - 1; i >= 0; i--) {
tessellator.addVertex(PneumaticCraftUtils.cos[i] * (size + 0.1D), PneumaticCraftUtils.sin[i] * (size + 0.1D), 0);
}
tessellator.draw();
GL11.glColor4d(1, 1, 0, 0.5);
}
GL11.glRotatef(180, 0, 0, 1);
}
GL11.glDisable(GL11.GL_LINE_SMOOTH);
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
GL11.glPopMatrix();
}
}