SystemTaskData class

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

Файл: com/hypixel/hytale/component/system/tick/EntityTickingSystem.java

implements: IntConsumer

Поля (9)

МодификаторыТипИмя
private ArchetypeChunk<ECS_TYPE> archetypeChunk
private CommandBuffer<ECS_TYPE> commandBuffer
private float dt
private Store<ECS_TYPE> store
private EntityTickingSystem<ECS_TYPE> system
int var2
ParallelRangeTask var4
int var5
EntityTickingSystem.SystemTaskData var7

Методы (7)

МодификаторыВозвратСигнатура
public void acceptpublic void accept(int var1)
public void clearpublic void clear()
for for(int var3 = 0; var3 < var2; var3++)
abstract for for(int var6 = var4.size()
if if(var2 > 0)
public void initpublic void init(EntityTickingSystem<ECS_TYPE> var1, float var2, ArchetypeChunk<ECS_TYPE> var3, Store<ECS_TYPE> var4, CommandBuffer<ECS_TYPE> var5)
public static <ECS_TYPE> void invokeParallelTaskpublic static <ECS_TYPE> void invokeParallelTask(@Nonnull ParallelTask<EntityTickingSystem.SystemTaskData<ECS_TYPE>> var0, @Nonnull CommandBuffer<ECS_TYPE> var1)

Исходный код

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

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 java.util.function.IntConsumer;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class="kw">abstract class EntityTickingSystem<ECS_TYPE> class="kw">extends ArchetypeTickingSystem<ECS_TYPE> {
   class="kw">public EntityTickingSystem() {
   }

   class="kw">protected class="kw">static boolean maybeUseParallel(int var0, int var1) {
      class="kw">return false;
   }

   class="kw">protected class="kw">static boolean useParallel(int var0, int var1) {
      class="kw">return var1 > 0 || var0 > ParallelRangeTask.PARALLELISM;
   }

   class="kw">public boolean isParallel(int var1, int var2) {
      class="kw">return false;
   }

   @Override
   class="kw">public void tick(float var1, @Nonnull ArchetypeChunk<ECS_TYPE> var2, @Nonnull Store<ECS_TYPE> var3, @Nonnull CommandBuffer<ECS_TYPE> var4) {
      doTick(this, var1, var2, var3, var4);
   }

   class="kw">public class="kw">abstract void tick(float var1, int var2, @Nonnull ArchetypeChunk<ECS_TYPE> var3, @Nonnull Store<ECS_TYPE> var4, @Nonnull CommandBuffer<ECS_TYPE> var5);

   class="kw">public class="kw">static <ECS_TYPE> void doTick(
      @Nonnull EntityTickingSystem<ECS_TYPE> var0,
      float var1,
      @Nonnull ArchetypeChunk<ECS_TYPE> var2,
      @Nonnull Store<ECS_TYPE> var3,
      @Nonnull CommandBuffer<ECS_TYPE> var4
   ) {
      int var5 = var2.size();
      if (var5 != 0) {
         ParallelTask var6 = var3.getParallelTask();
         if (var0.isParallel(var5, var6.size())) {
            ParallelRangeTask var10 = var6.appendTask();
            var10.init(0, var5);
            int var8 = 0;

            for (int var9 = var10.size(); var8 < var9; var8++) {
               var10.get(var8).init(var0, var1, var2, var3, var4.fork());
            }
         } else {
            for (int var7 = 0; var7 < var5; var7++) {
               var0.tick(var1, var7, var2, var3, var4);
            }
         }
      }
   }

   class="kw">public class="kw">static class SystemTaskData<ECS_TYPE> class="kw">implements IntConsumer {
      @Nullable
      class="kw">private EntityTickingSystem<ECS_TYPE> system;
      class="kw">private float dt;
      @Nullable
      class="kw">private ArchetypeChunk<ECS_TYPE> archetypeChunk;
      @Nullable
      class="kw">private Store<ECS_TYPE> store;
      @Nullable
      class="kw">private CommandBuffer<ECS_TYPE> commandBuffer;

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

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

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

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

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

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

               for (int var6 = var4.size(); var5 < var6; var5++) {
                  EntityTickingSystem.SystemTaskData var7 = var4.get(var5);
                  var7.commandBuffer.mergeParallel(var1);
                  var7.clear();
               }
            }
         }
      }
   }
}