CameraSequencePacketHandler class
Пакет: com.hypixel.hytale.server.core.modules.camera
Файл: com/hypixel/hytale/server/core/modules/camera/CameraSequencePacketHandler.java
implements: SubPacketHandler
Поля (8)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
int |
MAX_CHUNK |
|
byte |
var2 |
|
CameraSequenceSource |
var2 |
|
CameraSequenceSource |
var2 |
|
PlayerRef |
var2 |
|
int |
var3 |
|
Ref |
var3 |
|
CameraKeyframe[] |
var4 |
Методы (6)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
public |
void |
beginvoid begin(@Nonnull CameraSequenceSource var1) |
private |
void |
handleCompletevoid handleComplete(@Nonnull CameraSequenceComplete var1) |
private |
void |
handleRequestKeyframesvoid handleRequestKeyframes(@Nonnull RequestCameraSequenceKeyframes var1) |
|
|
if if(var3 > 0) |
|
|
if if(var2 != null && var1.sequenceId == this.activeSequenceId) |
private |
void |
onWorldThreadvoid onWorldThread(@Nonnull Runnable var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.camera;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.protocol.CameraKeyframe;
class="kw">import com.hypixel.hytale.protocol.packets.camera.CameraSequenceComplete;
class="kw">import com.hypixel.hytale.protocol.packets.camera.CameraSequenceKeyframes;
class="kw">import com.hypixel.hytale.protocol.packets.camera.PlayCameraSequence;
class="kw">import com.hypixel.hytale.protocol.packets.camera.RequestCameraSequenceKeyframes;
class="kw">import com.hypixel.hytale.server.core.io.handlers.IPacketHandler;
class="kw">import com.hypixel.hytale.server.core.io.handlers.SubPacketHandler;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class CameraSequencePacketHandler class="kw">implements SubPacketHandler {
class="kw">private class="kw">static class="kw">final int MAX_CHUNK = 128;
@Nonnull
class="kw">private class="kw">final IPacketHandler parent;
class="kw">private byte nextSequenceId;
class="kw">private byte activeSequenceId;
@Nullable
class="kw">private CameraSequenceSource activeSource;
class="kw">public CameraSequencePacketHandler(@Nonnull IPacketHandler var1) {
this.parent = var1;
}
@Override
class="kw">public void registerHandlers() {
this.parent.registerHandler(287, var1 -> this.onWorldThread(() -> this.handleRequestKeyframes((RequestCameraSequenceKeyframes)var1)));
this.parent.registerHandler(286, var1 -> this.onWorldThread(() -> this.handleComplete((CameraSequenceComplete)var1)));
}
class="kw">public void begin(@Nonnull CameraSequenceSource var1) {
if (var1.keyframeCount() > 0) {
byte var2 = this.nextSequenceId++;
this.activeSequenceId = var2;
this.activeSource = var1;
this.parent.getPlayerRef().getPacketHandler().writeNoCache(new PlayCameraSequence(var2, var1.flags(), var1.baseFov(), var1.keyframeCount()));
}
}
class="kw">private void handleRequestKeyframes(@Nonnull RequestCameraSequenceKeyframes var1) {
CameraSequenceSource var2 = this.activeSource;
if (var2 != null && var1.sequenceId == this.activeSequenceId && var1.fromIndex >= 0 && var1.fromIndex < var2.keyframeCount()) {
int var3 = Math.min(Math.min(var1.count, 128), var2.keyframeCount() - var1.fromIndex);
if (var3 > 0) {
CameraKeyframe[] var4 = new CameraKeyframe[var3];
var2.writeKeyframes(var1.fromIndex, var3, var4);
this.parent.getPlayerRef().getPacketHandler().writeNoCache(new CameraSequenceKeyframes(this.activeSequenceId, var1.fromIndex, var4));
}
}
}
class="kw">private void handleComplete(@Nonnull CameraSequenceComplete var1) {
CameraSequenceSource var2 = this.activeSource;
if (var2 != null && var1.sequenceId == this.activeSequenceId) {
this.activeSource = null;
var2.onComplete(this.parent.getPlayerRef());
}
}
class="kw">private void onWorldThread(@Nonnull Runnable var1) {
PlayerRef var2 = this.parent.getPlayerRef();
Ref var3 = var2.getReference();
if (var3 != null && var3.isValid()) {
var3.getStore().getExternalData().getWorld().execute(() -> {
if (var3.isValid()) {
var1.run();
}
});
}
}
}