]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/client/renderers/Renderer.java
fe8564ebbf0b302a77858a68f0856c5aafd07a71
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / renderers / Renderer.java
1 package com.irtimaled.bbor.client.renderers;
2
3 import net.minecraft.client.renderer.BufferBuilder;
4 import net.minecraft.client.renderer.Tessellator;
5 import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
6 import net.minecraft.client.renderer.vertex.VertexFormat;
7 import org.lwjgl.opengl.GL11;
8
9 import java.awt.*;
10
11 public class Renderer {
12     static Renderer startLines() {
13         return new Renderer(GL11.GL_LINES, DefaultVertexFormats.POSITION_COLOR);
14     }
15
16     static Renderer startCircle() {
17         return new Renderer(GL11.GL_LINE_LOOP, DefaultVertexFormats.POSITION_COLOR);
18     }
19
20     static Renderer startQuads() {
21         return new Renderer(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR);
22     }
23
24     static Renderer startPoints() {
25         return new Renderer(GL11.GL_POINTS, DefaultVertexFormats.POSITION_COLOR);
26     }
27
28     public static Renderer startTextured() {
29         return new Renderer(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR);
30     }
31
32     private final Tessellator tessellator;
33     private final BufferBuilder bufferBuilder;
34
35     private int red;
36     private int green;
37     private int blue;
38     private int alpha;
39
40     private Renderer(int glMode, VertexFormat vertexFormat) {
41         tessellator = Tessellator.getInstance();
42         bufferBuilder = tessellator.getBuffer();
43         bufferBuilder.begin(glMode, vertexFormat);
44     }
45
46     public Renderer setColor(Color color) {
47         return setColor(color.getRed(), color.getGreen(), color.getBlue())
48                 .setAlpha(color.getAlpha());
49     }
50
51     public Renderer setColor(int red, int green, int blue) {
52         this.red = red;
53         this.green = green;
54         this.blue = blue;
55         return this;
56     }
57
58     public Renderer setAlpha(int alpha) {
59         this.alpha = alpha;
60         return this;
61     }
62
63     Renderer addPoint(OffsetPoint point) {
64         return addPoint(point.getX(), point.getY(), point.getZ());
65     }
66
67     Renderer addPoint(double x, double y, double z) {
68         pos(x, y, z);
69         color();
70         end();
71         return this;
72     }
73
74     public Renderer addPoint(double x, double y, double z, double u, double v) {
75         pos(x, y, z);
76         tex(u, v);
77         color();
78         end();
79         return this;
80     }
81
82     public void render() {
83         tessellator.draw();
84     }
85
86     private void pos(double x, double y, double z) {
87         bufferBuilder.pos(x, y, z);
88     }
89
90     private void tex(double u, double v) {
91         bufferBuilder.tex(u, v);
92     }
93
94     private void color() {
95         bufferBuilder.color(red, green, blue, alpha);
96     }
97
98     private void end() {
99         bufferBuilder.endVertex();
100     }
101 }