CollisionTracker class

Пакет: com.hypixel.hytale.server.core.modules.collision

Файл: com/hypixel/hytale/server/core/modules/collision/CollisionTracker.java

extends: BlockTracker

Поля (7)

МодификаторыТипИмя
int var1
int var1
int var2
BlockData var3
BlockContactData var4
int var4
BlockContactData var6

Методы (7)

МодификаторыВозвратСигнатура
for for(int var1 = 0; var1 < 4; var1++)
for for(int var2 = 0; var2 < var1; var2++)
for for(int var2 = this.count; var2 < var1; var2++)
public BlockData getBlockDataBlockData getBlockData(int var1)
public BlockContactData getContactDataBlockContactData getContactData(int var1)
if if(this.count == 0)
public boolean trackboolean track(int var1, int var2, int var3, @Nonnull BlockContactData var4, @Nonnull BlockData var5)

Исходный код

Показать/скрыть
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 javax.annotation.Nullable;

class="kw">public class CollisionTracker class="kw">extends BlockTracker {
   @Nonnull
   class="kw">protected BlockData[] blockData = new BlockData[4];
   @Nonnull
   class="kw">protected BlockContactData[] contactData = new BlockContactData[4];

   class="kw">public CollisionTracker() {
      for (int var1 = 0; var1 < 4; var1++) {
         this.blockData[var1] = new BlockData();
         this.contactData[var1] = new BlockContactData();
      }
   }

   class="kw">public BlockData getBlockData(int var1) {
      class="kw">return this.blockData[var1];
   }

   class="kw">public BlockContactData getContactData(int var1) {
      class="kw">return this.contactData[var1];
   }

   @Override
   class="kw">public void reset() {
      int var1 = this.count;
      super.reset();

      for (int var2 = 0; var2 < var1; var2++) {
         this.blockData[var2].clear();
         this.contactData[var2].clear();
      }
   }

   class="kw">public boolean track(int var1, int var2, int var3, @Nonnull BlockContactData var4, @Nonnull BlockData var5) {
      if (this.isTracked(var1, var2, var3)) {
         class="kw">return true;
      }

      this.trackNew(var1, var2, var3, var4, var5);
      class="kw">return false;
   }

   @Nonnull
   class="kw">public BlockContactData trackNew(int var1, int var2, int var3, @Nonnull BlockContactData var4, @Nonnull BlockData var5) {
      super.trackNew(var1, var2, var3);
      this.blockData[this.count - 1].assign(var5);
      BlockContactData var6 = this.contactData[this.count - 1];
      var6.assign(var4);
      class="kw">return var6;
   }

   @Override
   class="kw">public void untrack(int var1) {
      super.untrack(var1);
      if (this.count == 0) {
         this.blockData[0].clear();
         this.contactData[0].clear();
      } else {
         int var2 = this.count - var1;
         BlockData var3 = this.blockData[var1];
         var3.clear();
         System.arraycopy(this.blockData, var1 + 1, this.blockData, var1, var2);
         this.blockData[this.count] = var3;
         BlockContactData var4 = this.contactData[var1];
         var4.clear();
         System.arraycopy(this.contactData, var1 + 1, this.contactData, var1, var2);
         this.contactData[this.count] = var4;
      }
   }

   @Nullable
   class="kw">public BlockContactData getContactData(int var1, int var2, int var3) {
      int var4 = this.getIndex(var1, var2, var3);
      class="kw">return var4 == -1 ? null : this.contactData[var4];
   }

   @Override
   class="kw">protected void alloc() {
      super.alloc();
      int var1 = this.blockData.length + 4;
      this.blockData = Arrays.copyOf(this.blockData, var1);
      this.contactData = Arrays.copyOf(this.contactData, var1);

      for (int var2 = this.count; var2 < var1; var2++) {
         this.blockData[var2] = new BlockData();
         this.contactData[var2] = new BlockContactData();
      }
   }
}