AnchorPropDistribution class

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

Файл: com/hypixel/hytale/builtin/hytalegenerator/propdistributions/AnchorPropDistribution.java

extends: PropDistribution

Методы (4)

МодификаторыВозвратСигнатура
public void acceptpublic void accept(@Nonnull Vector3d var1, @Nonnull Prop var2, @Nonnull Control var3)
if if(AnchorPropDistribution.this.isReversed)
if if(var1.anchor == null)
if if(this.isReversed)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3d;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.pipe.Control;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.pipe.Pipe;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.props.Prop;
class="kw">import java.util.function.Consumer;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;

class="kw">public class AnchorPropDistribution class="kw">extends PropDistribution {
   @Nonnull
   class="kw">private class="kw">final PropDistribution propDistribution;
   class="kw">private class="kw">final boolean isReversed;
   @Nonnull
   class="kw">private class="kw">final Bounds3d rOffsetBounds;
   @Nonnull
   class="kw">private class="kw">final PropDistribution.Context rChildContext;
   @Nonnull
   class="kw">private class="kw">final Vector3d rNewPosition;
   @Nonnull
   class="kw">private class="kw">final Vector3d rAnchor;
   @Nonnull
   class="kw">private PropDistribution.Context rContext;
   @Nonnull
   class="kw">private class="kw">final Pipe.Two<Vector3d, Prop> rChildPipe = new Pipe.Two<Vector3d, Prop>() {
      class="kw">public void accept(@Nonnull Vector3d var1, @Nonnull Prop var2, @Nonnull Control var3) {
         AnchorPropDistribution.this.rNewPosition.set(var1);
         if (AnchorPropDistribution.this.isReversed) {
            AnchorPropDistribution.this.rNewPosition.sub(AnchorPropDistribution.this.rAnchor);
         } else {
            AnchorPropDistribution.this.rNewPosition.add(AnchorPropDistribution.this.rAnchor);
         }

         if (AnchorPropDistribution.this.rContext.bounds.contains(AnchorPropDistribution.this.rNewPosition)) {
            AnchorPropDistribution.this.rContext.pipe.accept(AnchorPropDistribution.this.rNewPosition, var2, var3);
         }
      }
   };

   class="kw">public AnchorPropDistribution(@Nonnull PropDistribution var1, boolean var2) {
      this.propDistribution = var1;
      this.isReversed = var2;
      this.rOffsetBounds = new Bounds3d();
      this.rChildContext = PropDistribution.Context.DEFAULT_INSTANCE;
      this.rNewPosition = new Vector3d();
      this.rAnchor = new Vector3d();
      this.rContext = PropDistribution.Context.DEFAULT_INSTANCE;
   }

   @Override
   class="kw">public void distribute(@Nonnull PropDistribution.Context var1) {
      if (var1.anchor == null) {
         this.propDistribution.distribute(var1);
      } else {
         this.rContext = var1;
         this.rAnchor.set(var1.anchor);
         this.rOffsetBounds.assign(var1.bounds);
         if (this.isReversed) {
            this.rOffsetBounds.offset(this.rAnchor);
         } else {
            this.rOffsetBounds.offsetOpposite(this.rAnchor);
         }

         this.rChildContext.assign(var1);
         this.rChildContext.bounds = this.rOffsetBounds;
         this.rChildContext.pipe = this.rChildPipe;
         this.propDistribution.distribute(this.rChildContext);
         this.rChildContext.clearReferences();
         this.rContext = PropDistribution.Context.DEFAULT_INSTANCE;
      }
   }

   @Override
   class="kw">public void forEachPossibleProp(@Nonnull Consumer<Prop> var1) {
      this.propDistribution.forEachPossibleProp(var1);
   }
}