SphereSpiralIterator class
Пакет: com.hypixel.hytale.math.iterator
Файл: com/hypixel/hytale/math/iterator/SphereSpiralIterator.java
Поля (14)
| Модификаторы | Тип | Имя |
|---|---|---|
|
int |
var1 |
|
int |
var1 |
|
int |
var2 |
|
int |
var2 |
|
|
var2 |
|
int |
var2 |
|
|
var2 |
|
int |
var3 |
|
|
var3 |
|
int |
var3 |
|
|
var3 |
|
int |
var4 |
|
int |
var4 |
|
int |
var6 |
Методы (19)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("radius must be non-negative: R=" + var1) |
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("player radius " + var1 + " exceeds shared max " + this.shared.maxR) |
public |
boolean |
advanceboolean advance() |
public |
void |
configurevoid configure(int var1) |
public |
boolean |
containsOffsetboolean containsOffset(int var1, int var2, int var3) |
public |
int |
getCompletedDistSqint getCompletedDistSq() |
|
|
if if(var1 < 0) |
|
|
if if(var1 > this.shared.maxR) |
|
|
if if(this.cursor >= this.endCursor) |
|
|
if if(this.cursor >= this.endCursor) |
|
|
if if(this.cursor == this.startCursor) |
|
|
if if(var0[var4] < var1) |
|
|
if if(var0[var4] <= var1) |
public |
void |
initvoid init(int var1, int var2, int var3) |
public |
void |
initvoid init(int var1, int var2, int var3, int var4, int var5) |
static |
int |
lowerBoundint lowerBound(int[] var0, int var1) |
static |
int |
upperBoundint upperBound(int[] var0, int var1) |
|
|
while while(var2 < var3) |
|
|
while while(var2 < var3) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.math.iterator;
class="kw">import javax.annotation.Nonnull;
class="kw">public class="kw">final class SphereSpiralIterator {
@Nonnull
class="kw">private class="kw">final SphereOffsets shared;
class="kw">private class="kw">volatile int playerRsq;
class="kw">private int centerX;
class="kw">private int centerY;
class="kw">private int centerZ;
class="kw">private int cursor;
class="kw">private int startCursor;
class="kw">private int endCursor;
class="kw">private int startDistSqAtInit;
class="kw">private int endDistSqAtInit;
@Nonnull
class="kw">private class="kw">final SpherePosition position = new SpherePosition();
class="kw">public SphereSpiralIterator(@Nonnull SphereOffsets var1) {
this.shared = var1;
}
class="kw">public void configure(int var1) {
if (var1 < 0) {
throw new IllegalArgumentException("radius must be non-negative: R=" + var1);
}
if (var1 > this.shared.maxR) {
throw new IllegalArgumentException("player radius " + var1 + " exceeds shared max " + this.shared.maxR);
}
this.playerRsq = var1 * var1;
}
class="kw">public void init(int var1, int var2, int var3) {
this.init(var1, var2, var3, 0, Integer.MAX_VALUE);
}
class="kw">public void init(int var1, int var2, int var3, int var4, int var5) {
this.centerX = var1;
this.centerY = var2;
this.centerZ = var3;
int var6 = Math.min(var5, this.playerRsq);
this.startDistSqAtInit = var4;
this.endDistSqAtInit = var6;
this.cursor = lowerBound(this.shared.distSq, var4);
this.startCursor = this.cursor;
this.endCursor = upperBound(this.shared.distSq, var6);
}
class="kw">public boolean containsOffset(int var1, int var2, int var3) {
class="kw">return var1 * var1 + var2 * var2 + var3 * var3 <= this.playerRsq;
}
class="kw">public boolean advance() {
if (this.cursor >= this.endCursor) {
class="kw">return false;
}
int var1 = this.cursor;
this.position.x = this.centerX + this.shared.dx[var1];
this.position.y = this.centerY + this.shared.dy[var1];
this.position.z = this.centerZ + this.shared.dz[var1];
this.position.distSq = this.shared.distSq[var1];
this.cursor = var1 + 1;
class="kw">return true;
}
@Nonnull
class="kw">public SpherePosition position() {
class="kw">return this.position;
}
class="kw">public int getCompletedDistSq() {
if (this.cursor >= this.endCursor) {
class="kw">return this.endDistSqAtInit;
}
if (this.cursor == this.startCursor) {
class="kw">return this.startDistSqAtInit - 1;
}
int var1 = this.shared.distSq[this.cursor - 1];
int var2 = this.shared.distSq[this.cursor];
class="kw">return var2 > var1 ? var1 : var1 - 1;
}
@Nonnull
class="kw">public SphereOffsets sharedOffsets() {
class="kw">return this.shared;
}
class="kw">private class="kw">static int lowerBound(int[] var0, int var1) {
int var2 = 0;
int var3 = var0.length;
while (var2 < var3) {
int var4 = var2 + var3 >>> 1;
if (var0[var4] < var1) {
var2 = var4 + 1;
} else {
var3 = var4;
}
}
class="kw">return var2;
}
class="kw">private class="kw">static int upperBound(int[] var0, int var1) {
int var2 = 0;
int var3 = var0.length;
while (var2 < var3) {
int var4 = var2 + var3 >>> 1;
if (var0[var4] <= var1) {
var2 = var4 + 1;
} else {
var3 = var4;
}
}
class="kw">return var2;
}
}