DeferrableAction class
Пакет: com.hypixel.hytale.server.npc.corecomponents
Файл: com/hypixel/hytale/server/npc/corecomponents/DeferrableAction.java
extends: ActionBase
implements: Deferrable
Поля (6)
| Модификаторы | Тип | Имя |
|---|---|---|
|
private final Rotation3f |
capturedRotation |
final |
double[] |
delayRange |
|
private double |
remaining |
|
private final double |
x |
|
private final double |
y |
|
private final double |
z |
Методы (8)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
private |
DeferredFireprivate DeferredFire(double nullx, double nullxx, double nullxxx, double nullxxxx, @Nullable Rotation3f nullxxxxx) |
abstract abstract |
void |
firevoid fire(@Nonnull Ref<EntityStore> var1, double var2, double var4, double var6, @Nullable Rotation3f var8, @Nonnull Store<EntityStore> var9) |
|
|
if if(this.deferred) |
|
|
if if(this.remaining > 0.0) |
protected |
void |
scheduleOrFirevoid scheduleOrFire(@Nonnull ExecutionSupport var1, @Nonnull Ref<EntityStore> var2, double var3, double var5, double var7, @Nonnull Store<EntityStore> var9) |
protected |
void |
scheduleOrFirevoid scheduleOrFire(@Nonnull ExecutionSupport var1,
@Nonnull Ref<EntityStore> var2,
double var3,
double var5,
double var7,
@Nullable Rotation3f var9,
@Nonnull Store<EntityStore> var10) |
abstract |
|
super super(var1) |
|
public boolean |
tickpublic boolean tick(@Nonnull Ref<EntityStore> var1, @Nonnull ExecutionSupport var2, double var3, @Nonnull Store<EntityStore> var5) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.corecomponents;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.random.RandomExtra;
class="kw">import com.hypixel.hytale.math.vector.Rotation3f;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderSupport;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.builders.BuilderDeferrableAction;
class="kw">import com.hypixel.hytale.server.npc.instructions.Deferrable;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import com.hypixel.hytale.server.npc.role.support.EntitySupport;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">public class="kw">abstract class DeferrableAction class="kw">extends ActionBase class="kw">implements Deferrable {
class="kw">protected class="kw">final double[] delayRange;
class="kw">protected class="kw">final boolean deferred;
class="kw">protected class="kw">final Vector3d scratch = new Vector3d();
class="kw">protected DeferrableAction(@Nonnull BuilderDeferrableAction var1, @Nonnull BuilderSupport var2) {
super(var1);
this.delayRange = var1.getDelayRange(var2);
this.deferred = this.delayRange != null && this.delayRange.length >= 2 && this.delayRange[1] > 0.0;
}
@Override
class="kw">public boolean isDeferred() {
class="kw">return this.deferred;
}
class="kw">protected class="kw">abstract void fire(
@Nonnull Ref<EntityStore> var1, double var2, double var4, double var6, @Nullable Rotation3f var8, @Nonnull Store<EntityStore> var9
);
class="kw">protected void scheduleOrFire(
@Nonnull ExecutionSupport var1, @Nonnull Ref<EntityStore> var2, double var3, double var5, double var7, @Nonnull Store<EntityStore> var9
) {
this.scheduleOrFire(var1, var2, var3, var5, var7, null, var9);
}
class="kw">protected void scheduleOrFire(
@Nonnull ExecutionSupport var1,
@Nonnull Ref<EntityStore> var2,
double var3,
double var5,
double var7,
@Nullable Rotation3f var9,
@Nonnull Store<EntityStore> var10
) {
if (this.deferred) {
var1.getEntitySupport().addDeferredAction(new DeferrableAction.DeferredFire(RandomExtra.randomRange(this.delayRange), var3, var5, var7, var9));
} else {
this.fire(var2, var3, var5, var7, var9, var10);
}
}
class="kw">private class="kw">final class DeferredFire class="kw">implements EntitySupport.DeferredAction {
class="kw">private double remaining;
class="kw">private class="kw">final double x;
class="kw">private class="kw">final double y;
class="kw">private class="kw">final double z;
@Nullable
class="kw">private class="kw">final Rotation3f capturedRotation;
class="kw">private DeferredFire(double nullx, double nullxx, double nullxxx, double nullxxxx, @Nullable Rotation3f nullxxxxx) {
this.remaining = nullx;
this.x = nullxx;
this.y = nullxxx;
this.z = nullxxxx;
this.capturedRotation = nullxxxxx;
}
@Override
class="kw">public boolean tick(@Nonnull Ref<EntityStore> var1, @Nonnull ExecutionSupport var2, double var3, @Nonnull Store<EntityStore> var5) {
this.remaining -= var3;
if (this.remaining > 0.0) {
class="kw">return false;
}
DeferrableAction.this.fire(var1, this.x, this.y, this.z, this.capturedRotation, var5);
class="kw">return true;
}
}
}