RotationEntityFunnel class

Пакет: com.hypixel.hytale.builtin.hytalegenerator.engine.entityfunnel

Файл: com/hypixel/hytale/builtin/hytalegenerator/engine/entityfunnel/RotationEntityFunnel.java

implements: EntityFunnel

Поля (5)

МодификаторыТипИмя
final Vector3dc BLOCK_CENTER
Vector3i var2
TransformComponent var3
Vector3d var4
Rotation3f var5

Методы (2)

МодификаторыВозвратСигнатура
if if(var3 != null)
public void setSourcevoid setSource(@Nonnull EntityFunnel var1, @Nonnull Vector3ic var2)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.engine.entityfunnel;

class="kw">import com.hypixel.hytale.builtin.hytalegenerator.EntityPlacementData;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3i;
class="kw">import com.hypixel.hytale.math.vector.Rotation3f;
class="kw">import com.hypixel.hytale.math.vector.Vector3iUtil;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.RotationTuple;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3dc;
class="kw">import org.joml.Vector3i;
class="kw">import org.joml.Vector3ic;

class="kw">public class RotationEntityFunnel class="kw">implements EntityFunnel {
   class="kw">private class="kw">static class="kw">final Vector3dc BLOCK_CENTER = new Vector3d(0.5, 0.5, 0.5);
   @Nonnull
   class="kw">private class="kw">final RotationTuple rotation_fromViewToSource;
   @Nonnull
   class="kw">private Bounds3i viewBounds;
   @Nonnull
   class="kw">private EntityFunnel source;
   @Nonnull
   class="kw">private class="kw">final Vector3i anchor;
   @Nonnull
   class="kw">private class="kw">final Vector3d rPosition;

   class="kw">public RotationEntityFunnel(@Nonnull RotationTuple var1) {
      this.rotation_fromViewToSource = var1;
      this.anchor = new Vector3i();
      this.rPosition = new Vector3d();
      this.setSource(EntityFunnel.NULL, Vector3iUtil.ZERO);
   }

   class="kw">public void setSource(@Nonnull EntityFunnel var1, @Nonnull Vector3ic var2) {
      this.source = var1;
      this.anchor.set(var2);
      this.viewBounds = var1.getBounds().clone();
      this.viewBounds.undoRotationAroundVoxel(this.rotation_fromViewToSource, var2);
   }

   @Override
   class="kw">public void addEntity(@Nonnull EntityPlacementData var1) {
      Vector3i var2 = var1.getOffset();
      var2.sub(this.anchor);
      this.rotation_fromViewToSource.applyRotationTo(var2);
      var2.add(this.anchor);
      this.rPosition.set(var2);
      TransformComponent var3 = var1.getEntityHolder().getComponent(TransformComponent.getComponentType());
      if (var3 != null) {
         Vector3d var4 = var3.getPosition();
         Rotation3f var5 = var3.getRotation();
         var4.sub(BLOCK_CENTER);
         this.rotation_fromViewToSource.applyRotationTo(var4);
         var4.add(BLOCK_CENTER);
         this.rotation_fromViewToSource.applyRotationTo(var5);
         this.rPosition.add(var4);
      }

      if (this.source.getBounds().contains(this.rPosition)) {
         this.source.addEntity(var1);
      }
   }

   @Nonnull
   @Override
   class="kw">public Bounds3i getBounds() {
      class="kw">return this.viewBounds;
   }
}