mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-29 15:49:00 +01:00
Inline shift direction fields
Removes a layer of indirection for EnumDirection.getAdjacent(X|Y|Z)(), which is in the critical section for much of the server, including the lighting engine.
This commit is contained in:
parent
9ba22a1143
commit
1d6a99b50b
1 changed files with 46 additions and 0 deletions
|
@ -0,0 +1,46 @@
|
|||
--- a/net/minecraft/core/Direction.java
|
||||
+++ b/net/minecraft/core/Direction.java
|
||||
@@ -57,6 +57,12 @@
|
||||
.sorted(Comparator.comparingInt(direction -> direction.data2d))
|
||||
.toArray(Direction[]::new);
|
||||
|
||||
+ // Paper start - Perf: Inline shift direction fields
|
||||
+ private final int adjX;
|
||||
+ private final int adjY;
|
||||
+ private final int adjZ;
|
||||
+ // Paper end - Perf: Inline shift direction fields
|
||||
+
|
||||
private Direction(
|
||||
final int id,
|
||||
final int idOpposite,
|
||||
@@ -74,6 +80,11 @@
|
||||
this.axisDirection = direction;
|
||||
this.normal = vector;
|
||||
this.normalVec3 = Vec3.atLowerCornerOf(vector);
|
||||
+ // Paper start - Perf: Inline shift direction fields
|
||||
+ this.adjX = vector.getX();
|
||||
+ this.adjY = vector.getY();
|
||||
+ this.adjZ = vector.getZ();
|
||||
+ // Paper end - Perf: Inline shift direction fields
|
||||
}
|
||||
|
||||
public static Direction[] orderedByNearest(Entity entity) {
|
||||
@@ -247,15 +258,15 @@
|
||||
}
|
||||
|
||||
public int getStepX() {
|
||||
- return this.normal.getX();
|
||||
+ return this.adjX; // Paper - Perf: Inline shift direction fields
|
||||
}
|
||||
|
||||
public int getStepY() {
|
||||
- return this.normal.getY();
|
||||
+ return this.adjY; // Paper - Perf: Inline shift direction fields
|
||||
}
|
||||
|
||||
public int getStepZ() {
|
||||
- return this.normal.getZ();
|
||||
+ return this.adjZ; // Paper - Perf: Inline shift direction fields
|
||||
}
|
||||
|
||||
public Vector3f step() {
|
Loading…
Reference in a new issue