From 3122c0a71e0b565b39da441e063d7f949bd46ea3 Mon Sep 17 00:00:00 2001 From: johni0702 Date: Mon, 29 Jun 2015 18:12:38 +0200 Subject: [PATCH] Reduce object creation during rendering of path preview Skip sqrt when comparing distances --- .../eu/crushedpixel/replaymod/holders/Position.java | 11 +++++------ .../replaymod/renderer/PathPreviewRenderer.java | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/java/eu/crushedpixel/replaymod/holders/Position.java b/src/main/java/eu/crushedpixel/replaymod/holders/Position.java index ac7b6096..cf83f962 100755 --- a/src/main/java/eu/crushedpixel/replaymod/holders/Position.java +++ b/src/main/java/eu/crushedpixel/replaymod/holders/Position.java @@ -82,12 +82,11 @@ public class Position { public void setRoll(float roll) { this.roll = roll; } - public double distanceTo(double x, double y, double z) { - return distanceTo(new Position(x, y, z, 0, 0)); - } - - public double distanceTo(Position p2) { - return Math.sqrt(Math.pow((p2.getX() - getX()), 2) + Math.pow((p2.getY() - getY()), 2) + Math.pow((p2.getZ() - getZ()), 2)); + public double distanceSquared(double x, double y, double z) { + double dx = this.x - x; + double dy = this.y - y; + double dz = this.z - z; + return dx * dx + dy * dy + dz * dz; } @Override diff --git a/src/main/java/eu/crushedpixel/replaymod/renderer/PathPreviewRenderer.java b/src/main/java/eu/crushedpixel/replaymod/renderer/PathPreviewRenderer.java index 01169bc7..20f747e0 100644 --- a/src/main/java/eu/crushedpixel/replaymod/renderer/PathPreviewRenderer.java +++ b/src/main/java/eu/crushedpixel/replaymod/renderer/PathPreviewRenderer.java @@ -130,7 +130,7 @@ public class PathPreviewRenderer { @Override public int compare(PositionKeyframe o1, PositionKeyframe o2) { - return -(new Double(o1.getPosition().distanceTo(playerX, playerY, playerZ)).compareTo(o2.getPosition().distanceTo(playerX, playerY, playerZ))); + return -(new Double(o1.getPosition().distanceSquared(playerX, playerY, playerZ)).compareTo(o2.getPosition().distanceSquared(playerX, playerY, playerZ))); } @Override