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());
   }
}