1 package com.irtimaled.bbor.client.renderers;
3 import com.irtimaled.bbor.client.Camera;
4 import net.minecraft.client.render.BufferBuilder;
5 import net.minecraft.client.render.Tessellator;
6 import net.minecraft.client.render.VertexFormat;
7 import net.minecraft.client.render.VertexFormats;
11 public class Renderer {
12 private final int glMode;
14 static Renderer startLines() {
15 return new Renderer(RenderHelper.LINES, VertexFormats.POSITION_COLOR);
18 static Renderer startLineLoop() {
19 return new Renderer(RenderHelper.LINE_LOOP, VertexFormats.POSITION_COLOR);
22 static Renderer startQuads() {
23 return new Renderer(RenderHelper.QUADS, VertexFormats.POSITION_COLOR);
26 static Renderer startPoints() {
27 return new Renderer(RenderHelper.POINTS, VertexFormats.POSITION_COLOR);
30 public static Renderer startTextured() {
31 return new Renderer(RenderHelper.QUADS, VertexFormats.POSITION_TEXTURE_COLOR);
34 private static final Tessellator tessellator = new Tessellator(2097152);
35 private static final BufferBuilder bufferBuilder = tessellator.getBuffer();
42 private Renderer(int glMode, VertexFormat vertexFormat) {
43 bufferBuilder.begin(glMode, vertexFormat);
47 public Renderer setColor(Color color) {
48 return setColor(color.getRed(), color.getGreen(), color.getBlue())
49 .setAlpha(color.getAlpha());
52 public Renderer setColor(int red, int green, int blue) {
59 public Renderer setAlpha(int alpha) {
64 Renderer addPoint(OffsetPoint point) {
65 return addPoint(point.getX(), point.getY(), point.getZ());
68 public Renderer addPoints(OffsetPoint[] points) {
69 Renderer renderer = this;
70 for (OffsetPoint point : points) {
71 renderer = renderer.addPoint(point);
76 Renderer addPoint(double x, double y, double z) {
83 public Renderer addPoint(double x, double y, double z, double u, double v) {
91 public void render() {
92 if (glMode == RenderHelper.QUADS) {
93 bufferBuilder.sortQuads((float) Camera.getX(), (float) Camera.getY(), (float) Camera.getZ());
98 private void pos(double x, double y, double z) {
99 bufferBuilder.vertex(x, y, z);
102 private void tex(double u, double v) {
103 bufferBuilder.texture(u, v);
106 private void color() {
107 bufferBuilder.color(red, green, blue, alpha);
111 bufferBuilder.next();