Advertisement
Guest User

Untitled

a guest
May 23rd, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.32 KB | None | 0 0
  1. package com.aranaira.arcanearchives.util;
  2.  
  3. import com.aranaira.arcanearchives.ArcaneArchives;
  4. import net.minecraft.client.renderer.BufferBuilder;
  5. import net.minecraft.client.renderer.Tessellator;
  6. import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
  7. import net.minecraft.util.math.MathHelper;
  8. import net.minecraft.util.math.Vec3d;
  9. import net.minecraftforge.fml.relauncher.Side;
  10. import net.minecraftforge.fml.relauncher.SideOnly;
  11. import org.lwjgl.opengl.GL11;
  12.  
  13. import java.util.Set;
  14.  
  15. public class RenderHelper {
  16.     /*@SideOnly(Side.CLIENT)
  17.     public static void drawRay(Vec3d player_pos, Vec3d target_pos, float width)
  18. {
  19.         GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
  20.         GL11.glDisable(GL11.GL_CULL_FACE);
  21.         GL11.glDisable(GL11.GL_LIGHTING);
  22.         GL11.glDisable(GL11.GL_TEXTURE_2D);
  23.  
  24.         GL11.glEnable(GL11.GL_BLEND);
  25.         GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
  26.         GL11.glTranslated(-player_pos.x, -player_pos.y, -player_pos.z);
  27.  
  28.  
  29.         Color c = new Color(0.601f, 0.164f, 0.734f, 1f);
  30.         GL11.glColor4d(c.red, c.green, c.blue, c.alpha);
  31.         GL11.glLineWidth(width);
  32.         GL11.glDepthMask(false);
  33.         Tessellator tessellator = Tessellator.getInstance();
  34.         BufferBuilder bufferBuilder = tessellator.getBuffer();
  35.         bufferBuilder.begin(GL11.GL_LINES, DefaultVertexFormats.POSITION_COLOR);
  36.  
  37.  
  38.         bufferBuilder.pos(player_pos.x, player_pos.y + 1, player_pos.z).color(c.red, c.green, c.blue, c.alpha).endVertex();
  39.         bufferBuilder.pos(target_pos.x + 0.5, target_pos.y + 0.5, target_pos.z + 0.5).color(c.red, c.green, c.blue, c.alpha).endVertex();
  40.  
  41.  
  42.         tessellator.draw();
  43.  
  44.         GL11.glDepthMask(true);
  45.         GL11.glPopAttrib();
  46. }*/
  47.  
  48.     @SideOnly(Side.CLIENT)
  49.     public static void drawRays (long worldTime, Vec3d player_pos, Set<Vec3d> target_pos, float width) {
  50.         GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
  51.         GL11.glDisable(GL11.GL_CULL_FACE);
  52.         GL11.glDisable(GL11.GL_LIGHTING);
  53.         GL11.glDisable(GL11.GL_TEXTURE_2D);
  54.  
  55.         GL11.glEnable(GL11.GL_BLEND);
  56.         GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
  57.         GL11.glTranslated(-player_pos.x, -player_pos.y, -player_pos.z);
  58.  
  59.  
  60.         Color c = ColorHelper.getColorFromTime(worldTime);//new Color(0.601f, 0.164f, 0.734f, 1f);
  61.         GL11.glColor4d(c.red, c.green, c.blue, c.alpha);
  62.         GL11.glDepthMask(false);
  63.         Tessellator tessellator = Tessellator.getInstance();
  64.         BufferBuilder bufferBuilder = tessellator.getBuffer();
  65.         bufferBuilder.begin(GL11.GL_LINES, DefaultVertexFormats.POSITION_COLOR);
  66.  
  67.         for (Vec3d vec : target_pos) {
  68.             GL11.glLineWidth(getLineWidthFromDistance(player_pos, vec, 10, 70));
  69.             bufferBuilder.pos(player_pos.x, player_pos.y + 1, player_pos.z).color(c.red, c.green, c.blue, c.alpha).endVertex();
  70.             bufferBuilder.pos(vec.x + 0.5, vec.y + 0.5, vec.z + 0.5).color(c.red, c.green, c.blue, c.alpha).endVertex();
  71.         }
  72.         ArcaneArchives.logger.info(GL11.glGetFloat(GL11.GL_LINE_WIDTH));
  73.         tessellator.draw();
  74.  
  75.         GL11.glDepthMask(true);
  76.         GL11.glPopAttrib();
  77.     }
  78.  
  79.     private static float getLineWidthFromDistance(Vec3d first, Vec3d second, float minDistanceClamp, float maxDistanceClamp){
  80.         float dist = (float)first.distanceTo(second);
  81.         float normalized = MathHelper.clamp((dist - minDistanceClamp) / (maxDistanceClamp - minDistanceClamp), 0.0f, 1.0f);
  82.         float width = normalized * 0.7f + 0.3f;
  83.         return width;
  84.     }
  85.  
  86.     @SideOnly(Side.CLIENT)
  87.     static class Color {
  88.         public float red;
  89.         public float green;
  90.         public float blue;
  91.         public float alpha;
  92.  
  93.         public Color () {
  94.             this(1.0F, 1.0F, 1.0F, 1.0F);
  95.         }
  96.  
  97.         public Color (float redIn, float greenIn, float blueIn, float alphaIn) {
  98.             this.red = redIn;
  99.             this.green = greenIn;
  100.             this.blue = blueIn;
  101.             this.alpha = alphaIn;
  102.         }
  103.  
  104.         public static Color Lerp(Color one, Color two, float prog){
  105.             Color lerped = new Color();
  106.  
  107.             lerped.red = (float)MathHelper.clampedLerp(one.red, two.red, prog);
  108.             lerped.green = (float)MathHelper.clampedLerp(one.green, two.green, prog);
  109.             lerped.blue = (float)MathHelper.clampedLerp(one.blue, two.blue, prog);
  110.             lerped.alpha = (float)MathHelper.clampedLerp(one.alpha, two.alpha, prog);
  111.             return lerped;
  112.         }
  113.  
  114.         public static String FormatForLogger(Color c, boolean includeAlpha){
  115.             String str = "";
  116.             str += "<R:"+c.red;
  117.             str += "  G:"+c.green;
  118.             str += "  B:"+c.blue;
  119.  
  120.             if(includeAlpha)
  121.                 str += "  A:"+c.alpha;
  122.             str += ">";
  123.  
  124.             return str;
  125.         }
  126.     }
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement