CollisionDataArray class

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

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

Поля (8)

МодификаторыТипИмя
Object var1
var1
var1
int var1
int var2
int var2
Object var3
Object var5

Методы (12)

МодификаторыВозвратСигнатура
public T allocT alloc()
for for(int var4 = 0; var4 < var1; var4++)
for for(int var2 = 0; var2 < var1; var2++)
public T getT get(int var1)
public int getCountint getCount()
if if(var1 > 0)
if if(this.dispose != null)
public boolean isEmptyboolean isEmpty()
public void removevoid remove(int var1)
public void resetvoid reset()
public int sizeint size()
public void sortvoid sort(Comparator<? super T> var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.collision;

class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.Comparator;
class="kw">import java.util.List;
class="kw">import java.util.Objects;
class="kw">import java.util.function.Consumer;
class="kw">import java.util.function.Supplier;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class CollisionDataArray<T> {
   @Nonnull
   class="kw">private class="kw">final List<T> array = new ObjectArrayList();
   class="kw">private class="kw">final Supplier<T> supplier;
   @Nullable
   class="kw">private class="kw">final Consumer<T> dispose;
   class="kw">private class="kw">final List<T> freeList;
   class="kw">private int head;

   class="kw">public CollisionDataArray(Supplier<T> var1, @Nullable Consumer<T> var2, List<T> var3) {
      Objects.requireNonNull(var1, "Must provide supplier for CollisionDataArray");
      this.supplier = var1;
      this.dispose = var2;
      this.freeList = var3;
      this.head = 0;
   }

   class="kw">public int getCount() {
      class="kw">return this.array.size() - this.head;
   }

   class="kw">public T alloc() {
      Object var1;
      if (this.freeList.isEmpty()) {
         var1 = this.supplier.get();
      } else {
         int var2 = this.freeList.size() - 1;
         var1 = this.freeList.get(var2);
         this.freeList.remove(var2);
      }

      this.array.add(var1);
      class="kw">return var1;
   }

   class="kw">public void reset() {
      int var1 = this.array.size();
      if (var1 > 0) {
         if (this.dispose != null) {
            for (int var4 = 0; var4 < var1; var4++) {
               Object var5 = this.array.get(var4);
               this.dispose.accept(var5);
               this.freeList.add(var5);
            }
         } else {
            for (int var2 = 0; var2 < var1; var2++) {
               Object var3 = this.array.get(var2);
               this.freeList.add(var3);
            }
         }

         this.array.clear();
         this.head = 0;
      }
   }

   @Nullable
   class="kw">public T getFirst() {
      class="kw">return this.head < this.array.size() ? this.array.get(this.head) : null;
   }

   @Nullable
   class="kw">public T forgetFirst() {
      this.head++;
      class="kw">return this.getFirst();
   }

   class="kw">public boolean isEmpty() {
      class="kw">return this.array.isEmpty();
   }

   class="kw">public void sort(Comparator<? super T> var1) {
      this.array.sort(var1);
   }

   class="kw">public void remove(int var1) {
      int var2 = this.head + var1;
      if (var2 < this.array.size()) {
         this.freeList.add(this.array.get(var2));
         this.array.remove(var2);
      }
   }

   class="kw">public int size() {
      class="kw">return this.array.size() - this.head;
   }

   class="kw">public T get(int var1) {
      class="kw">return this.array.get(this.head + var1);
   }
}