aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2024-04-05 03:54:47 -0400
committerAaron <51387595+AzureAaron@users.noreply.github.com>2024-04-05 03:54:47 -0400
commit9d7f6aeb1fa157d4b0ba07c22aec07ea8cfb0ca1 (patch)
tree9668f9eb89a723ccdce7da5e4dab2d9660d8a6eb
parent8585afb20fb11d9349a3b9e079e037301c11c602 (diff)
downloadSkyblocker-9d7f6aeb1fa157d4b0ba07c22aec07ea8cfb0ca1.tar.gz
Skyblocker-9d7f6aeb1fa157d4b0ba07c22aec07ea8cfb0ca1.tar.bz2
Skyblocker-9d7f6aeb1fa157d4b0ba07c22aec07ea8cfb0ca1.zip
Fix line rendering & fix colour components
Co-authored-by: olim <bobq4582@gmail.com>
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/waypoint/OrderedWaypoints.java27
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java50
2 files changed, 52 insertions, 25 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/OrderedWaypoints.java b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/OrderedWaypoints.java
index 7f9e1ba2..93c6b3f4 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/OrderedWaypoints.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/OrderedWaypoints.java
@@ -138,7 +138,7 @@ public class OrderedWaypoints {
}
int rgb = hex != null ? Integer.decode("0x" + hex.replace("#", "")) : Integer.MIN_VALUE;
- float[] colorComponents = rgb != Integer.MIN_VALUE ? new float[] { (rgb >> 16) & 0xFF, (rgb >> 8) & 0xFF, rgb & 0xFF } : new float[0];
+ float[] colorComponents = rgb != Integer.MIN_VALUE ? new float[] { ((rgb >> 16) & 0xFF) / 255f, ((rgb >> 8) & 0xFF) / 255f, (rgb & 0xFF) / 255f } : new float[0];
OrderedWaypointGroup group = WAYPOINTS.computeIfAbsent(groupName, name -> new OrderedWaypointGroup(name, true, new ObjectArrayList<>()));
OrderedWaypoint waypoint = new OrderedWaypoint(pos, colorComponents);
@@ -247,11 +247,7 @@ public class OrderedWaypoints {
current.render(wrc, RelativeIndex.CURRENT, currentIndex);
next.render(wrc, RelativeIndex.NEXT, nextIndex);
- //Chunk the line
- //Idk why but the line is glitchy when moving sideways
- Vec3d[] line = splitLine(player.getPos().add(0, 1, 0), Vec3d.ofCenter(next.getPos().up()));
-
- RenderHelper.renderLinesFromPoints(wrc, line, LIGHT_GRAY, 1f, 5f, true);
+ RenderHelper.renderLineFromCursor(wrc, Vec3d.ofCenter(next.getPos().up()), LIGHT_GRAY, 1f, 5f);
}
}
@@ -259,25 +255,6 @@ public class OrderedWaypoints {
}
}
- private static Vec3d[] splitLine(Vec3d start, Vec3d end) {
- ObjectArrayList<Vec3d> segments = new ObjectArrayList<>();
-
- Vec3d direction = end.subtract(start).normalize();
- double length = start.subtract(end).length();
- int numSegments = (int) Math.ceil(length);
-
- Vec3d currentPoint = start;
-
- for (int i = 0; i < numSegments; i++) {
- segments.add(currentPoint);
- currentPoint = currentPoint.add(direction);
- }
-
- segments.add(end);
-
- return segments.toArray(Vec3d[]::new);
- }
-
private static void load() {
loaded = CompletableFuture.runAsync(() -> {
try (BufferedReader reader = Files.newBufferedReader(PATH)) {
diff --git a/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java b/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java
index 05514d02..e39b5364 100644
--- a/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java
+++ b/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java
@@ -187,6 +187,56 @@ public class RenderHelper {
RenderSystem.depthFunc(GL11.GL_LEQUAL);
}
+ public static void renderLineFromCursor(WorldRenderContext context, Vec3d point, float[] colorComponents, float alpha, float lineWidth) {
+ Vec3d camera = context.camera().getPos();
+ MatrixStack matrices = context.matrixStack();
+
+ matrices.push();
+ matrices.translate(-camera.x, -camera.y, -camera.z);
+
+ Tessellator tessellator = RenderSystem.renderThreadTesselator();
+ BufferBuilder buffer = tessellator.getBuffer();
+ Matrix4f positionMatrix = matrices.peek().getPositionMatrix();
+
+ GL11.glEnable(GL11.GL_LINE_SMOOTH);
+ GL11.glHint(GL11.GL_LINE_SMOOTH_HINT, GL11.GL_NICEST);
+
+ RenderSystem.setShader(GameRenderer::getRenderTypeLinesProgram);
+ RenderSystem.setShaderColor(1f, 1f, 1f, 1f);
+ RenderSystem.lineWidth(lineWidth);
+ RenderSystem.enableBlend();
+ RenderSystem.defaultBlendFunc();
+ RenderSystem.disableCull();
+ RenderSystem.enableDepthTest();
+ RenderSystem.depthFunc(GL11.GL_ALWAYS);
+
+ Vec3d offset = Vec3d.fromPolar(context.camera().getPitch(), context.camera().getYaw());
+ Vec3d cameraPoint = camera.add(offset);
+
+ buffer.begin(DrawMode.LINES, VertexFormats.LINES);
+ Vector3f normal = new Vector3f((float) offset.x, (float) offset.y, (float) offset.z);
+ buffer
+ .vertex(positionMatrix, (float) cameraPoint.x , (float) cameraPoint.y, (float) cameraPoint.z)
+ .color(colorComponents[0], colorComponents[1], colorComponents[2], alpha)
+ .normal(normal.x, normal.y, normal.z)
+ .next();
+
+ buffer
+ .vertex(positionMatrix, (float) point.getX(), (float) point.getY(), (float) point.getZ())
+ .color(colorComponents[0], colorComponents[1], colorComponents[2], alpha)
+ .normal(normal.x, normal.y, normal.z)
+ .next();
+
+
+ tessellator.draw();
+
+ matrices.pop();
+ GL11.glDisable(GL11.GL_LINE_SMOOTH);
+ RenderSystem.lineWidth(1f);
+ RenderSystem.enableCull();
+ RenderSystem.depthFunc(GL11.GL_LEQUAL);
+ }
+
public static void renderQuad(WorldRenderContext context, Vec3d[] points, float[] colorComponents, float alpha, boolean throughWalls) {
Vec3d camera = context.camera().getPos();
MatrixStack matrices = context.matrixStack();