EntityDataSystem class

Пакет: com.hypixel.hytale.component.system.data

Файл: com/hypixel/hytale/component/system/data/EntityDataSystem.java

extends: ArchetypeDataSystem<ECS_TYPE, Q, R>

Поля (16)

МодификаторыТипИмя
private ArchetypeChunk<ECS_TYPE> archetypeChunk
private CommandBuffer<ECS_TYPE> commandBuffer
private Q query
private final List<R> results
return
private Store<ECS_TYPE> store
private EntityDataSystem<ECS_TYPE, Q, R> system
int var11
int var3
ParallelRangeTask var5
int var6
int var6
ParallelTask var7
ParallelRangeTask var8
EntityDataSystem.SystemTaskData var8
int var9

Методы (15)

МодификаторыВозвратСигнатура
public SystemTaskDatapublic SystemTaskData()
public void acceptpublic void accept(int var1)
public void clearpublic void clear()
static <ECS_TYPE, Q, R> void doFetch<ECS_TYPE, Q, R> void doFetch(@Nonnull EntityDataSystem<ECS_TYPE, Q, R> var0, @Nonnull ArchetypeChunk<ECS_TYPE> var1, @Nonnull Store<ECS_TYPE> var2, @Nonnull CommandBuffer<ECS_TYPE> var3, Q var4, List<R> var5)
abstract doFetch doFetch(this, var1, var2, var3, var4, var5)
abstract abstract void fetchvoid fetch(int var1, ArchetypeChunk<ECS_TYPE> var2, Store<ECS_TYPE> var3, CommandBuffer<ECS_TYPE> var4, Q var5, List<R> var6)
for for(int var4 = 0; var4 < var3; var4++)
abstract for for(int var10 = var8.size()
abstract for for(int var12 = var1.size()
abstract for for(int var7 = var5.size()
if if(var6 == 0)
if if(var3 > 0)
public void initpublic void init(EntityDataSystem<ECS_TYPE, Q, R> var1, ArchetypeChunk<ECS_TYPE> var2, Store<ECS_TYPE> var3, CommandBuffer<ECS_TYPE> var4, Q var5)
public static <ECS_TYPE, Q, R> void invokeParallelTaskpublic static <ECS_TYPE, Q, R> void invokeParallelTask(@Nonnull ParallelTask<EntityDataSystem.SystemTaskData<ECS_TYPE, Q, R>> var0, @Nonnull CommandBuffer<ECS_TYPE> var1, @Nonnull List<R> var2)
public boolean isParallelboolean isParallel()

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.component.system.data;

class="kw">import com.hypixel.hytale.component.ArchetypeChunk;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.component.task.ParallelRangeTask;
class="kw">import com.hypixel.hytale.component.task.ParallelTask;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.List;
class="kw">import java.util.function.IntConsumer;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class="kw">abstract class EntityDataSystem<ECS_TYPE, Q, R> class="kw">extends ArchetypeDataSystem<ECS_TYPE, Q, R> {
   class="kw">public EntityDataSystem() {
   }

   class="kw">public boolean isParallel() {
      class="kw">return false;
   }

   @Override
   class="kw">public void fetch(@Nonnull ArchetypeChunk<ECS_TYPE> var1, @Nonnull Store<ECS_TYPE> var2, @Nonnull CommandBuffer<ECS_TYPE> var3, Q var4, List<R> var5) {
      doFetch(this, var1, var2, var3, var4, var5);
   }

   class="kw">public class="kw">abstract void fetch(int var1, ArchetypeChunk<ECS_TYPE> var2, Store<ECS_TYPE> var3, CommandBuffer<ECS_TYPE> var4, Q var5, List<R> var6);

   class="kw">public class="kw">static <ECS_TYPE, Q, R> void doFetch(
      @Nonnull EntityDataSystem<ECS_TYPE, Q, R> var0,
      @Nonnull ArchetypeChunk<ECS_TYPE> var1,
      @Nonnull Store<ECS_TYPE> var2,
      @Nonnull CommandBuffer<ECS_TYPE> var3,
      Q var4,
      List<R> var5
   ) {
      if (var0.isParallel()) {
         int var6 = var1.size();
         if (var6 == 0) {
            class="kw">return;
         }

         ParallelTask var7 = var2.getFetchTask();
         ParallelRangeTask var8 = var7.appendTask();
         var8.init(0, var6);
         int var9 = 0;

         for (int var10 = var8.size(); var9 < var10; var9++) {
            ((EntityDataSystem.SystemTaskData<ECS_TYPE, Q, ?>)var8.get(var9)).init(var0, var1, var2, var3.fork(), var4);
         }
      } else {
         int var11 = 0;

         for (int var12 = var1.size(); var11 < var12; var11++) {
            var0.fetch(var11, var1, var2, var3, var4, var5);
         }
      }
   }

   class="kw">public class="kw">static class SystemTaskData<ECS_TYPE, Q, R> class="kw">implements IntConsumer {
      class="kw">private class="kw">final List<R> results = new ObjectArrayList();
      @Nullable
      class="kw">private EntityDataSystem<ECS_TYPE, Q, R> system;
      @Nullable
      class="kw">private ArchetypeChunk<ECS_TYPE> archetypeChunk;
      @Nullable
      class="kw">private Store<ECS_TYPE> store;
      @Nullable
      class="kw">private CommandBuffer<ECS_TYPE> commandBuffer;
      @Nullable
      class="kw">private Q query;

      class="kw">public SystemTaskData() {
      }

      class="kw">public void init(EntityDataSystem<ECS_TYPE, Q, R> var1, ArchetypeChunk<ECS_TYPE> var2, Store<ECS_TYPE> var3, CommandBuffer<ECS_TYPE> var4, Q var5) {
         this.system = var1;
         this.archetypeChunk = var2;
         this.store = var3;
         this.commandBuffer = var4;
         this.query = var5;
      }

      @Override
      class="kw">public void accept(int var1) {
         assert this.commandBuffer.setThread();
         this.system.fetch(var1, this.archetypeChunk, this.store, this.commandBuffer, this.query, this.results);
      }

      class="kw">public void clear() {
         this.system = null;
         this.archetypeChunk = null;
         this.store = null;
         this.commandBuffer = null;
         this.query = null;
         this.results.clear();
      }

      class="kw">public class="kw">static <ECS_TYPE, Q, R> void invokeParallelTask(
         @Nonnull ParallelTask<EntityDataSystem.SystemTaskData<ECS_TYPE, Q, R>> var0, @Nonnull CommandBuffer<ECS_TYPE> var1, @Nonnull List<R> var2
      ) {
         int var3 = var0.size();
         if (var3 > 0) {
            var0.doInvoke();

            for (int var4 = 0; var4 < var3; var4++) {
               ParallelRangeTask var5 = var0.get(var4);
               int var6 = 0;

               for (int var7 = var5.size(); var6 < var7; var6++) {
                  EntityDataSystem.SystemTaskData var8 = var5.get(var6);
                  var2.addAll(var8.results);
                  var8.commandBuffer.mergeParallel(var1);
                  var8.clear();
               }
            }
         }
      }
   }
}