/* * Copyright (C) 2017 - 2019 | Wurst-Imperium | All rights reserved. * * This source code is subject to the terms of the GNU General Public * License, version 3. If a copy of the GPL was not distributed with this * file, You can obtain one at: https://www.gnu.org/licenses/gpl-3.0.txt */ package net.wurstclient.forge.utils; import org.lwjgl.opengl.GL11; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.Vec3d; import net.wurstclient.forge.compatibility.WVec3d; public final class RenderUtils { public static void drawSolidBox(AxisAlignedBB bb) { GL11.glVertex3d(bb.minX, bb.minY, bb.minZ); GL11.glVertex3d(bb.maxX, bb.minY, bb.minZ); GL11.glVertex3d(bb.maxX, bb.minY, bb.maxZ); GL11.glVertex3d(bb.minX, bb.minY, bb.maxZ); GL11.glVertex3d(bb.minX, bb.maxY, bb.minZ); GL11.glVertex3d(bb.minX, bb.maxY, bb.maxZ); GL11.glVertex3d(bb.maxX, bb.maxY, bb.maxZ); GL11.glVertex3d(bb.maxX, bb.maxY, bb.minZ); GL11.glVertex3d(bb.minX, bb.minY, bb.minZ); GL11.glVertex3d(bb.minX, bb.maxY, bb.minZ); GL11.glVertex3d(bb.maxX, bb.maxY, bb.minZ); GL11.glVertex3d(bb.maxX, bb.minY, bb.minZ); GL11.glVertex3d(bb.maxX, bb.minY, bb.minZ); GL11.glVertex3d(bb.maxX, bb.maxY, bb.minZ); GL11.glVertex3d(bb.maxX, bb.maxY, bb.maxZ); GL11.glVertex3d(bb.maxX, bb.minY, bb.maxZ); GL11.glVertex3d(bb.minX, bb.minY, bb.maxZ); GL11.glVertex3d(bb.maxX, bb.minY, bb.maxZ); GL11.glVertex3d(bb.maxX, bb.maxY, bb.maxZ); GL11.glVertex3d(bb.minX, bb.maxY, bb.maxZ); GL11.glVertex3d(bb.minX, bb.minY, bb.minZ); GL11.glVertex3d(bb.minX, bb.minY, bb.maxZ); GL11.glVertex3d(bb.minX, bb.maxY, bb.maxZ); GL11.glVertex3d(bb.minX, bb.maxY, bb.minZ); } public static void drawOutlinedBox(AxisAlignedBB bb) { GL11.glVertex3d(bb.minX, bb.minY, bb.minZ); GL11.glVertex3d(bb.maxX, bb.minY, bb.minZ); GL11.glVertex3d(bb.maxX, bb.minY, bb.minZ); GL11.glVertex3d(bb.maxX, bb.minY, bb.maxZ); GL11.glVertex3d(bb.maxX, bb.minY, bb.maxZ); GL11.glVertex3d(bb.minX, bb.minY, bb.maxZ); GL11.glVertex3d(bb.minX, bb.minY, bb.maxZ); GL11.glVertex3d(bb.minX, bb.minY, bb.minZ); GL11.glVertex3d(bb.minX, bb.minY, bb.minZ); GL11.glVertex3d(bb.minX, bb.maxY, bb.minZ); GL11.glVertex3d(bb.maxX, bb.minY, bb.minZ); GL11.glVertex3d(bb.maxX, bb.maxY, bb.minZ); GL11.glVertex3d(bb.maxX, bb.minY, bb.maxZ); GL11.glVertex3d(bb.maxX, bb.maxY, bb.maxZ); GL11.glVertex3d(bb.minX, bb.minY, bb.maxZ); GL11.glVertex3d(bb.minX, bb.maxY, bb.maxZ); GL11.glVertex3d(bb.minX, bb.maxY, bb.minZ); GL11.glVertex3d(bb.maxX, bb.maxY, bb.minZ); GL11.glVertex3d(bb.maxX, bb.maxY, bb.minZ); GL11.glVertex3d(bb.maxX, bb.maxY, bb.maxZ); GL11.glVertex3d(bb.maxX, bb.maxY, bb.maxZ); GL11.glVertex3d(bb.minX, bb.maxY, bb.maxZ); GL11.glVertex3d(bb.minX, bb.maxY, bb.maxZ); GL11.glVertex3d(bb.minX, bb.maxY, bb.minZ); } public static void drawNode(AxisAlignedBB bb) { double midX = (bb.minX + bb.maxX) / 2; double midY = (bb.minY + bb.maxY) / 2; double midZ = (bb.minZ + bb.maxZ) / 2; GL11.glVertex3d(midX, midY, bb.maxZ); GL11.glVertex3d(bb.minX, midY, midZ); GL11.glVertex3d(bb.minX, midY, midZ); GL11.glVertex3d(midX, midY, bb.minZ); GL11.glVertex3d(midX, midY, bb.minZ); GL11.glVertex3d(bb.maxX, midY, midZ); GL11.glVertex3d(bb.maxX, midY, midZ); GL11.glVertex3d(midX, midY, bb.maxZ); GL11.glVertex3d(midX, bb.maxY, midZ); GL11.glVertex3d(bb.maxX, midY, midZ); GL11.glVertex3d(midX, bb.maxY, midZ); GL11.glVertex3d(bb.minX, midY, midZ); GL11.glVertex3d(midX, bb.maxY, midZ); GL11.glVertex3d(midX, midY, bb.minZ); GL11.glVertex3d(midX, bb.maxY, midZ); GL11.glVertex3d(midX, midY, bb.maxZ); GL11.glVertex3d(midX, bb.minY, midZ); GL11.glVertex3d(bb.maxX, midY, midZ); GL11.glVertex3d(midX, bb.minY, midZ); GL11.glVertex3d(bb.minX, midY, midZ); GL11.glVertex3d(midX, bb.minY, midZ); GL11.glVertex3d(midX, midY, bb.minZ); GL11.glVertex3d(midX, bb.minY, midZ); GL11.glVertex3d(midX, midY, bb.maxZ); } public static void drawArrow(Vec3d from, Vec3d to) { double startX = WVec3d.getX(from); double startY = WVec3d.getY(from); double startZ = WVec3d.getZ(from); double endX = WVec3d.getX(to); double endY = WVec3d.getY(to); double endZ = WVec3d.getZ(to); GL11.glPushMatrix(); GL11.glBegin(GL11.GL_LINES); GL11.glVertex3d(startX, startY, startZ); GL11.glVertex3d(endX, endY, endZ); GL11.glEnd(); GL11.glTranslated(endX, endY, endZ); GL11.glScaled(0.1, 0.1, 0.1); double angleX = Math.atan2(endY - startY, startZ - endZ); GL11.glRotated(Math.toDegrees(angleX) + 90, 1, 0, 0); double angleZ = Math.atan2(endX - startX, Math.sqrt(Math.pow(endY - startY, 2) + Math.pow(endZ - startZ, 2))); GL11.glRotated(Math.toDegrees(angleZ), 0, 0, 1); GL11.glBegin(GL11.GL_LINES); GL11.glVertex3d(0, 2, 1); GL11.glVertex3d(-1, 2, 0); GL11.glVertex3d(-1, 2, 0); GL11.glVertex3d(0, 2, -1); GL11.glVertex3d(0, 2, -1); GL11.glVertex3d(1, 2, 0); GL11.glVertex3d(1, 2, 0); GL11.glVertex3d(0, 2, 1); GL11.glVertex3d(1, 2, 0); GL11.glVertex3d(-1, 2, 0); GL11.glVertex3d(0, 2, 1); GL11.glVertex3d(0, 2, -1); GL11.glVertex3d(0, 0, 0); GL11.glVertex3d(1, 2, 0); GL11.glVertex3d(0, 0, 0); GL11.glVertex3d(-1, 2, 0); GL11.glVertex3d(0, 0, 0); GL11.glVertex3d(0, 2, -1); GL11.glVertex3d(0, 0, 0); GL11.glVertex3d(0, 2, 1); GL11.glEnd(); GL11.glPopMatrix(); } }