Add class
Пакет: com.hypixel.hytale.server.core.modules.entity.system
Файл: com/hypixel/hytale/server/core/modules/entity/system/SnapshotSystems.java
extends: HolderSystem<EntityStore>
Поля (1)
| Модификаторы | Тип | Имя |
|---|---|---|
|
SnapshotBuffer |
var4 |
Методы (3)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public Query<EntityStore> |
getQuerypublic Query<EntityStore> getQuery() |
|
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) |
Исходный код
Показать/скрыть
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);
}
}
}