BlockTracker class
Пакет: com.hypixel.hytale.server.core.modules.collision
Файл: com/hypixel/hytale/server/core/modules/collision/BlockTracker.java
implements: IBlockTracker
Поля (5)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
int |
NOT_FOUND |
|
Vector3i |
var2 |
|
Vector3i |
var4 |
|
int |
var4 |
|
Vector3i |
var5 |
Методы (13)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("Calling untrack on empty tracker") |
protected |
void |
allocvoid alloc() |
|
|
for for(int var1 = 0; var1 < this.positions.length; var1++) |
|
|
for for(int var4 = this.count - 1; var4 >= 0; var4--) |
|
|
for for(int var1 = this.count; var1 < this.positions.length; var1++) |
public |
int |
getIndexint getIndex(int var1, int var2, int var3) |
|
|
if if(this.count >= this.positions.length) |
|
|
if if(var4 >= 0) |
|
|
if if(this.count <= 0) |
|
|
if if(this.count != 0) |
|
|
if if(var5.x == var1 && var5.y == var2 && var5.z == var3) |
public |
void |
resetvoid reset() |
public |
void |
untrackvoid untrack(int var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.collision;
class="kw">import java.util.Arrays;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3i;
class="kw">public class BlockTracker class="kw">implements IBlockTracker {
class="kw">public class="kw">static class="kw">final int NOT_FOUND = -1;
class="kw">protected class="kw">static class="kw">final int ALLOC_SIZE = 4;
@Nonnull
class="kw">protected Vector3i[] positions = new Vector3i[4];
class="kw">protected int count;
class="kw">public BlockTracker() {
for (int var1 = 0; var1 < this.positions.length; var1++) {
this.positions[var1] = new Vector3i();
}
}
@Override
class="kw">public Vector3i getPosition(int var1) {
class="kw">return this.positions[var1];
}
@Override
class="kw">public int getCount() {
class="kw">return this.count;
}
class="kw">public void reset() {
this.count = 0;
}
@Override
class="kw">public boolean track(int var1, int var2, int var3) {
if (this.isTracked(var1, var2, var3)) {
class="kw">return true;
}
this.trackNew(var1, var2, var3);
class="kw">return false;
}
@Override
class="kw">public void trackNew(int var1, int var2, int var3) {
if (this.count >= this.positions.length) {
this.alloc();
}
Vector3i var4 = this.positions[this.count++];
var4.x = var1;
var4.y = var2;
var4.z = var3;
}
@Override
class="kw">public boolean isTracked(int var1, int var2, int var3) {
class="kw">return this.getIndex(var1, var2, var3) >= 0;
}
@Override
class="kw">public void untrack(int var1, int var2, int var3) {
int var4 = this.getIndex(var1, var2, var3);
if (var4 >= 0) {
this.untrack(var4);
}
}
class="kw">public void untrack(int var1) {
if (this.count <= 0) {
throw new IllegalStateException("Calling untrack on empty tracker");
}
this.count--;
if (this.count != 0) {
Vector3i var2 = this.positions[var1];
System.arraycopy(this.positions, var1 + 1, this.positions, var1, this.count - var1);
this.positions[this.count] = var2;
}
}
class="kw">public int getIndex(int var1, int var2, int var3) {
for (int var4 = this.count - 1; var4 >= 0; var4--) {
Vector3i var5 = this.positions[var4];
if (var5.x == var1 && var5.y == var2 && var5.z == var3) {
class="kw">return var4;
}
}
class="kw">return -1;
}
class="kw">protected void alloc() {
this.positions = Arrays.copyOf(this.positions, this.positions.length + 4);
for (int var1 = this.count; var1 < this.positions.length; var1++) {
this.positions[var1] = new Vector3i();
}
}
}