SnapshotSystems class

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

Файл: com/hypixel/hytale/server/core/modules/entity/system/SnapshotSystems.java

Поля (17)

МодификаторыТипИмя
private static final Set<Dependency<EntityStore>> DEPENDENCIES
static long HISTORY_LENGTH_NS
private int currentTick
private long historyLength
private int historySize
private final Query<EntityStore> query
private int tickLengthNanos
SnapshotBuffer var4
SnapshotSystems.SnapshotWorldInfo var4
World var4
int var5
SnapshotBuffer var6
SnapshotSystems.SnapshotWorldInfo var6
SnapshotSystems.SnapshotWorldInfo var6
TransformComponent var7
int var7
SnapshotSystems.SnapshotWorldInfo var8

Методы (21)

МодификаторыВозвратСигнатура
public Addpublic Add()
public Capturepublic Capture()
public Resizepublic Resize()
public SnapshotWorldInfopublic SnapshotWorldInfo()
public SnapshotWorldInfopublic SnapshotWorldInfo(int var1, long var2, int var4, int var5)
public Resource<EntityStore> clonepublic Resource<EntityStore> clone()
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public static ResourceType<EntityStore, SnapshotSystems.SnapshotWorldInfo> getResourceTypepublic static ResourceType<EntityStore, SnapshotSystems.SnapshotWorldInfo> getResourceType()
if if(var5 != var6.tickLengthNanos || SnapshotSystems.HISTORY_LENGTH_NS != var6.historyLength)
public boolean isParallelpublic boolean isParallel(int var1, int var2)
public boolean isParallelpublic boolean isParallel(int var1, int var2)
public void onEntityAddpublic void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityRemovedpublic void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3)
public void tickpublic void tick(float var1, int var2, @Nonnull Store<EntityStore> var3)
public void tickpublic void tick(float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
public void tickpublic void tick(float var1, int var2, @Nonnull Store<EntityStore> var3)
public void tickpublic void tick(float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)

Исходный код

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

class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.ArchetypeChunk;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.component.RemoveReason;
class="kw">import com.hypixel.hytale.component.Resource;
class="kw">import com.hypixel.hytale.component.ResourceType;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.component.dependency.Dependency;
class="kw">import com.hypixel.hytale.component.dependency.Order;
class="kw">import com.hypixel.hytale.component.dependency.OrderPriority;
class="kw">import com.hypixel.hytale.component.dependency.RootDependency;
class="kw">import com.hypixel.hytale.component.dependency.SystemDependency;
class="kw">import com.hypixel.hytale.component.query.Query;
class="kw">import com.hypixel.hytale.component.system.HolderSystem;
class="kw">import com.hypixel.hytale.component.system.tick.EntityTickingSystem;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.core.modules.entity.EntityModule;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.SnapshotBuffer;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.Set;
class="kw">import java.util.concurrent.TimeUnit;
class="kw">import javax.annotation.Nonnull;

class="kw">public class SnapshotSystems {
   class="kw">public class="kw">static long HISTORY_LENGTH_NS = TimeUnit.MILLISECONDS.toNanos(500L);
   class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.getLogger();

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

   class="kw">public class="kw">static class Add class="kw">extends HolderSystem<EntityStore> {
      class="kw">public Add() {
      }

      @Override
      class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
         SnapshotBuffer var4 = var1.ensureAndGetComponent(SnapshotBuffer.getComponentType());
         var4.resize(var3.getResource(SnapshotSystems.SnapshotWorldInfo.getResourceType()).historySize);
      }

      @Override
      class="kw">public void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3) {
      }

      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return TransformComponent.getComponentType();
      }
   }

   class="kw">public class="kw">static class Capture class="kw">extends EntityTickingSystem<EntityStore> {
      class="kw">private class="kw">static class="kw">final Set<Dependency<EntityStore>> DEPENDENCIES = Set.of(
         new SystemDependency<>(Order.AFTER, SnapshotSystems.Resize.class), new RootDependency(OrderPriority.CLOSEST)
      );
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query = Query.and(TransformComponent.getComponentType(), SnapshotBuffer.getComponentType());

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

      @Override
      class="kw">public void tick(float var1, int var2, @Nonnull Store<EntityStore> var3) {
         SnapshotSystems.SnapshotWorldInfo var4 = var3.getResource(SnapshotSystems.SnapshotWorldInfo.getResourceType());
         var4.currentTick++;
         super.tick(var1, var2, var3);
      }

      @Override
      class="kw">public void tick(
         float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
         SnapshotBuffer var6 = var3.getComponent(var2, SnapshotBuffer.getComponentType());
         TransformComponent var7 = var3.getComponent(var2, TransformComponent.getComponentType());
         SnapshotSystems.SnapshotWorldInfo var8 = var4.getResource(SnapshotSystems.SnapshotWorldInfo.getResourceType());
         var6.storeSnapshot(var8.currentTick, var7.getPosition(), var7.getRotation());
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.query;
      }

      @Nonnull
      @Override
      class="kw">public Set<Dependency<EntityStore>> getDependencies() {
         class="kw">return DEPENDENCIES;
      }

      @Override
      class="kw">public boolean isParallel(int var1, int var2) {
         class="kw">return EntityTickingSystem.maybeUseParallel(var1, var2);
      }
   }

   class="kw">public class="kw">static class Resize class="kw">extends EntityTickingSystem<EntityStore> {
      class="kw">public Resize() {
      }

      @Nonnull
      @Override
      class="kw">public Set<Dependency<EntityStore>> getDependencies() {
         class="kw">return RootDependency.firstSet();
      }

      @Override
      class="kw">public void tick(float var1, int var2, @Nonnull Store<EntityStore> var3) {
         World var4 = var3.getExternalData().getWorld();
         int var5 = var4.getTickStepNanos();
         SnapshotSystems.SnapshotWorldInfo var6 = var3.getResource(SnapshotSystems.SnapshotWorldInfo.getResourceType());
         if (var5 != var6.tickLengthNanos || SnapshotSystems.HISTORY_LENGTH_NS != var6.historyLength) {
            var6.historyLength = SnapshotSystems.HISTORY_LENGTH_NS;
            var6.tickLengthNanos = var5;
            int var7 = var6.historySize;
            var6.historySize = Math.max(1, (int)((var6.historyLength + var5 - 1L) / var5));
            super.tick(var1, var2, var3);
         }
      }

      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return SnapshotBuffer.getComponentType();
      }

      @Override
      class="kw">public void tick(
         float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
         SnapshotSystems.SnapshotWorldInfo var6 = var4.getResource(SnapshotSystems.SnapshotWorldInfo.getResourceType());
         var3.getComponent(var2, SnapshotBuffer.getComponentType()).resize(var6.historySize);
      }

      @Override
      class="kw">public boolean isParallel(int var1, int var2) {
         class="kw">return EntityTickingSystem.maybeUseParallel(var1, var2);
      }
   }

   class="kw">public class="kw">static class SnapshotWorldInfo class="kw">implements Resource<EntityStore> {
      class="kw">private int tickLengthNanos = -1;
      class="kw">private long historyLength = -1L;
      class="kw">private int historySize = 1;
      class="kw">private int currentTick = -1;

      class="kw">public class="kw">static ResourceType<EntityStore, SnapshotSystems.SnapshotWorldInfo> getResourceType() {
         class="kw">return EntityModule.get().getSnapshotWorldInfoResourceType();
      }

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

      class="kw">public SnapshotWorldInfo(int var1, long var2, int var4, int var5) {
         this.tickLengthNanos = var1;
         this.historyLength = var2;
         this.historySize = var4;
         this.currentTick = var5;
      }

      @Nonnull
      @Override
      class="kw">public Resource<EntityStore> clone() {
         class="kw">return new SnapshotSystems.SnapshotWorldInfo(this.tickLengthNanos, this.historyLength, this.historySize, this.currentTick);
      }
   }
}