EntityFilterSpotsMe class
Пакет: com.hypixel.hytale.server.npc.corecomponents.entity.filters
Файл: com/hypixel/hytale/server/npc/corecomponents/entity/filters/EntityFilterSpotsMe.java
extends: EntityFilterBase
Поля (9)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
int |
COST |
|
TransformComponent |
var4 |
|
TransformComponent |
var4 |
|
Vector3d |
var5 |
|
HeadRotation |
var5 |
|
TransformComponent |
var6 |
|
TransformComponent |
var6 |
|
Vector3d |
var7 |
|
HeadRotation |
var8 |
Методы (4)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
protected |
boolean |
inViewConeboolean inViewCone(@Nonnull Ref<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull Store<EntityStore> var3) |
protected |
boolean |
inViewSectorboolean inViewSector(@Nonnull Ref<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull Store<EntityStore> var3) |
protected |
boolean |
inViewTestboolean inViewTest(@Nonnull Ref<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull Store<EntityStore> var3) |
|
return |
switchreturn switch(this.viewTest) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.corecomponents.entity.filters;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.util.TrigMathUtil;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.HeadRotation;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.EntityFilterBase;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.entity.filters.builders.BuilderEntityFilterSpotsMe;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import com.hypixel.hytale.server.npc.util.NPCPhysicsMath;
class="kw">import com.hypixel.hytale.server.npc.util.ViewTest;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">public class EntityFilterSpotsMe class="kw">extends EntityFilterBase {
class="kw">public class="kw">static class="kw">final int COST = 400;
class="kw">protected class="kw">static class="kw">final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE = TransformComponent.getComponentType();
class="kw">protected class="kw">final float viewAngle;
class="kw">protected class="kw">final boolean testLineOfSight;
class="kw">protected class="kw">final ViewTest viewTest;
class="kw">protected class="kw">final Vector3d view = new Vector3d();
class="kw">public EntityFilterSpotsMe(@Nonnull BuilderEntityFilterSpotsMe var1) {
this.viewAngle = var1.getViewAngle();
this.testLineOfSight = var1.testLineOfSight();
this.viewTest = var1.getViewTest();
}
@Override
class="kw">public boolean matchesEntity(
@Nonnull Ref<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull ExecutionSupport var3, @Nonnull Store<EntityStore> var4
) {
class="kw">return this.inViewTest(var2, var1, var4) && (!this.testLineOfSight || var3.getPositionCache().hasInverseLineOfSight(var1, var2, var4));
}
@Override
class="kw">public int cost() {
class="kw">return 400;
}
class="kw">protected boolean inViewTest(@Nonnull Ref<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull Store<EntityStore> var3) {
class="kw">return class="kw">switch (this.viewTest) {
case VIEW_CONE -> this.inViewCone(var1, var2, var3);
case VIEW_SECTOR -> this.inViewSector(var1, var2, var3);
class="kw">default -> false;
};
}
class="kw">protected boolean inViewSector(@Nonnull Ref<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull Store<EntityStore> var3) {
TransformComponent var4 = var3.getComponent(var1, TRANSFORM_COMPONENT_TYPE);
assert var4 != null;
Vector3d var5 = var4.getPosition();
TransformComponent var6 = var3.getComponent(var2, TRANSFORM_COMPONENT_TYPE);
assert var6 != null;
Vector3d var7 = var6.getPosition();
HeadRotation var8 = var3.getComponent(var1, HeadRotation.getComponentType());
assert var8 != null;
class="kw">return NPCPhysicsMath.inViewSector(var5.x(), var5.z(), var8.getRotation().yaw(), this.viewAngle, var7.x(), var7.z());
}
class="kw">protected boolean inViewCone(@Nonnull Ref<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull Store<EntityStore> var3) {
TransformComponent var4 = var3.getComponent(var1, TRANSFORM_COMPONENT_TYPE);
assert var4 != null;
HeadRotation var5 = var3.getComponent(var1, HeadRotation.getComponentType());
assert var5 != null;
TransformComponent var6 = var3.getComponent(var2, TRANSFORM_COMPONENT_TYPE);
assert var6 != null;
NPCPhysicsMath.getViewDirection(var5.getRotation(), this.view);
this.view.normalize();
class="kw">return NPCPhysicsMath.isInViewCone(var4.getPosition(), this.view, TrigMathUtil.cos(this.viewAngle / 2.0F), var6.getPosition());
}
}