SteeringSystem class

Пакет: com.hypixel.hytale.server.npc.systems

Файл: com/hypixel/hytale/server/npc/systems/SteeringSystem.java

extends: SteppableTickingSystem

Поля (18)

МодификаторыТипИмя
NetworkId var10
int var11
DebugSupport var12
Vector3d var13
double var14
var14
double var16
var16
float var18
double var19
double var21
double var23
double var25
double var27
NPCEntity var6
TransformComponent var7
Role var8
Ref var9

Методы (1)

МодификаторыВозвратСигнатура
if if(var8 != null)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.systems;

class="kw">import com.hypixel.hytale.component.ArchetypeChunk;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.RemoveReason;
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.SystemDependency;
class="kw">import com.hypixel.hytale.component.query.Query;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.core.entity.knockback.KnockbackSystems;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.system.TransformSystems;
class="kw">import com.hypixel.hytale.server.core.modules.entity.tracker.NetworkId;
class="kw">import com.hypixel.hytale.server.core.modules.physics.util.PhysicsMath;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.npc.NPCPlugin;
class="kw">import com.hypixel.hytale.server.npc.entities.NPCEntity;
class="kw">import com.hypixel.hytale.server.npc.role.Role;
class="kw">import com.hypixel.hytale.server.npc.role.support.DebugSupport;
class="kw">import java.util.Set;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;

class="kw">public class SteeringSystem class="kw">extends SteppableTickingSystem {
   @Nonnull
   class="kw">private class="kw">final ComponentType<EntityStore, NPCEntity> npcEntityComponent;
   @Nonnull
   class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies;
   @Nonnull
   class="kw">private class="kw">final Query<EntityStore> query;

   class="kw">public SteeringSystem(@Nonnull ComponentType<EntityStore, NPCEntity> var1) {
      this.npcEntityComponent = var1;
      this.dependencies = Set.of(
         new SystemDependency<>(Order.AFTER, AvoidanceSystem.class),
         new SystemDependency<>(Order.AFTER, KnockbackSystems.ApplyKnockback.class),
         new SystemDependency<>(Order.BEFORE, TransformSystems.EntityTrackerUpdate.class)
      );
      this.query = Query.and(var1, TransformComponent.getComponentType());
   }

   @Nonnull
   @Override
   class="kw">public Set<Dependency<EntityStore>> getDependencies() {
      class="kw">return this.dependencies;
   }

   @Override
   class="kw">public boolean isParallel(int var1, int var2) {
      class="kw">return false;
   }

   @Nonnull
   @Override
   class="kw">public Query<EntityStore> getQuery() {
      class="kw">return this.query;
   }

   @Override
   class="kw">public void steppedTick(
      float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
   ) {
      NPCEntity var6 = var3.getComponent(var2, this.npcEntityComponent);
      assert var6 != null;
      TransformComponent var7 = var3.getComponent(var2, TransformComponent.getComponentType());
      assert var7 != null;
      Role var8 = var6.getRole();
      if (var8 != null) {
         Ref var9 = var3.getReferenceTo(var2);
         NetworkId var10 = var3.getComponent(var2, NetworkId.getComponentType());
         int var11 = var10 != null ? var10.getId() : -1;
         var8.getActiveMotionController().setDebugEntityId(var11);

         try {
            DebugSupport var12 = var3.getComponent(var2, DebugSupport.getComponentType());
            assert var12 != null;
            if (var12.isDebugMotionSteering()) {
               Vector3d var13 = var7.getPosition();
               double var14 = var13.x();
               double var16 = var13.z();
               float var18 = var7.getRotation().yaw();
               var8.getActiveMotionController().steer(var9, var8, var8.getBodySteering(), var8.getHeadSteering(), var1, var5);
               var14 = var13.x() - var14;
               var16 = var13.z() - var16;
               double var19 = Math.sqrt(var14 * var14 + var16 * var16);
               double var21 = var19 / var1;
               double var23 = var14 / var1;
               double var25 = var16 / var1;
               double var27 = var19 > 0.0 ? PhysicsMath.normalizeTurnAngle(PhysicsMath.headingFromDirection(var14, var16)) : 0.0;
               NPCPlugin.get()
                  .getLogger()
                  .at(Level.FINER)
                  .log(
                     "eid=%d =   Role    = t =%.4f v =%.4f vx=%.4f vz=%.4f h =%.4f nh=%.4f vh=%.4f",
                     var11,
                     var1,
                     var21,
                     var23,
                     var25,
                     (180.0F / (float)Math.PI) * var18,
                     (180.0F / (float)Math.PI) * var18,
                     180.0F / (float)Math.PI * var27
                  );
            } else {
               var8.getActiveMotionController().steer(var9, var8, var8.getBodySteering(), var8.getHeadSteering(), var1, var5);
            }
         } catch (IllegalArgumentException | IllegalStateException var29) {
            ((HytaleLogger.Api)NPCPlugin.get().getLogger().at(Level.SEVERE).withCause(var29)).log();
            var5.removeEntity(var3.getReferenceTo(var2), RemoveReason.REMOVE);
         }
      }
   }
}