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();
      }
   }
}