package wecui.render.shapes; import org.lwjgl.opengl.GL11; import wecui.obfuscation.RenderObfuscation; import wecui.render.LineColor; import wecui.render.LineInfo; import wecui.util.Vector3; /** * Draws the grid for a region between * two corners in a cuboid region. * * @author yetanotherx */ public class Render3DGrid { protected RenderObfuscation obf = RenderObfuscation.getInstance(); protected LineColor color; protected Vector3 first; protected Vector3 second; public Render3DGrid(LineColor color, Vector3 first, Vector3 second) { this.color = color; this.first = first; this.second = second; } public void render() { double x1 = first.getX(); double y1 = first.getY(); double z1 = first.getZ(); double x2 = second.getX(); double y2 = second.getY(); double z2 = second.getZ(); for (LineInfo tempColor : color.getColors()) { tempColor.prepareRender(); RenderObfuscation o = RenderObfuscation.getInstance(); o.startDrawing(GL11.GL_LINES); tempColor.prepareColor(); double x, y, z; double offsetSize = 1.0; // Zmax XY plane, y axis z = z2; y = y1; int msize = 150; if ((y2 - y / offsetSize) < msize) { for (double yoff = 0; yoff + y <= y2; yoff += offsetSize) { o.addVertex(x1, y + yoff, z); o.addVertex(x2, y + yoff, z); } } // Zmin XY plane, y axis z = z1; if ((y2 - y / offsetSize) < msize) { for (double yoff = 0; yoff + y <= y2; yoff += offsetSize) { o.addVertex(x1, y + yoff, z); o.addVertex(x2, y + yoff, z); } } // Xmin YZ plane, y axis x = x1; if ((y2 - y / offsetSize) < msize) { for (double yoff = 0; yoff + y <= y2; yoff += offsetSize) { o.addVertex(x, y + yoff, z1); o.addVertex(x, y + yoff, z2); } } // Xmax YZ plane, y axis x = x2; if ((y2 - y / offsetSize) < msize) { for (double yoff = 0; yoff + y <= y2; yoff += offsetSize) { o.addVertex(x, y + yoff, z1); o.addVertex(x, y + yoff, z2); } } // Zmin XY plane, x axis x = x1; z = z1; if ((x2 - x / offsetSize) < msize) { for (double xoff = 0; xoff + x <= x2; xoff += offsetSize) { o.addVertex(x + xoff, y1, z); o.addVertex(x + xoff, y2, z); } } // Zmax XY plane, x axis z = z2; if ((x2 - x / offsetSize) < msize) { for (double xoff = 0; xoff + x <= x2; xoff += offsetSize) { o.addVertex(x + xoff, y1, z); o.addVertex(x + xoff, y2, z); } } // Ymin XZ plane, x axis y = y2; if ((x2 - x / offsetSize) < msize) { for (double xoff = 0; xoff + x <= x2; xoff += offsetSize) { o.addVertex(x + xoff, y, z1); o.addVertex(x + xoff, y, z2); } } // Ymax XZ plane, x axis y = y1; if ((x2 - x / offsetSize) < msize) { for (double xoff = 0; xoff + x <= x2; xoff += offsetSize) { o.addVertex(x + xoff, y, z1); o.addVertex(x + xoff, y, z2); } } // Ymin XZ plane, z axis z = z1; y = y1; if ((z2 - z / offsetSize) < msize) { for (double zoff = 0; zoff + z <= z2; zoff += offsetSize) { o.addVertex(x1, y, z + zoff); o.addVertex(x2, y, z + zoff); } } // Ymax XZ plane, z axis y = y2; if ((z2 - z / offsetSize) < msize) { for (double zoff = 0; zoff + z <= z2; zoff += offsetSize) { o.addVertex(x1, y, z + zoff); o.addVertex(x2, y, z + zoff); } } // Xmin YZ plane, z axis x = x2; if ((z2 - z / offsetSize) < msize) { for (double zoff = 0; zoff + z <= z2; zoff += offsetSize) { o.addVertex(x, y1, z + zoff); o.addVertex(x, y2, z + zoff); } } // Xmax YZ plane, z axis x = x1; if ((z2 - z / offsetSize) < msize) { for (double zoff = 0; zoff + z <= z2; zoff += offsetSize) { o.addVertex(x, y1, z + zoff); o.addVertex(x, y2, z + zoff); } } o.finishDrawing(); } } }