SystemTaskData class

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

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

implements: IntConsumer

Поля (10)

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

Методы (7)

МодификаторыВозвратСигнатура
public void acceptpublic void accept(int var1)
public void clearpublic void clear()
for for(int var4 = 0; var4 < var3; var4++)
abstract for for(int var7 = var5.size()
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)

Исходный код

Показать/скрыть
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();
               }
            }
         }
      }
   }
}