HyCodeYourTale
classpublicPriority 3

PositionsPinchDensityAsset

com.hypixel.hytale.builtin.hytalegenerator.assets.density.PositionsPinchDensityAsset

extends DensityAsset

2

Methods

2

Public Methods

5

Fields

1

Constructors

Constants

BuilderCodec<PositionsPinchDensityAsset>CODEC= BuilderCodec.builder( PositionsPinchDensityAsset.class, PositionsPinchDensityAsset::new,...

Constructors

public
PositionsPinchDensityAsset()

Methods

Public Methods (2)

public
Density build(DensityAsset.Argument argument)
@Nonnull@Override
public
void cleanUp()
@Override

Fields

Private/Package Fields (5)

privateboolean isHorizontal
privatedouble maxDistance
privateboolean normalizeDistance
privatedouble positionsMaxY
privatedouble positionsMinY

Inheritance

Parent
Current
Interface
Child

Use mouse wheel to zoom, drag to pan. Click nodes to navigate.

Related Classes

Source Code

package com.hypixel.hytale.builtin.hytalegenerator.assets.density;

import com.hypixel.hytale.builtin.hytalegenerator.assets.curves.ConstantCurveAsset;
import com.hypixel.hytale.builtin.hytalegenerator.assets.curves.CurveAsset;
import com.hypixel.hytale.builtin.hytalegenerator.assets.positionproviders.ListPositionProviderAsset;
import com.hypixel.hytale.builtin.hytalegenerator.assets.positionproviders.PositionProviderAsset;
import com.hypixel.hytale.builtin.hytalegenerator.density.Density;
import com.hypixel.hytale.builtin.hytalegenerator.density.nodes.ConstantValueDensity;
import com.hypixel.hytale.builtin.hytalegenerator.density.nodes.PositionsHorizontalPinchDensity;
import com.hypixel.hytale.builtin.hytalegenerator.density.nodes.PositionsPinchDensity;
import com.hypixel.hytale.codec.Codec;
import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.codec.validation.Validators;
import javax.annotation.Nonnull;

public class PositionsPinchDensityAsset extends DensityAsset {
   public static final BuilderCodec<PositionsPinchDensityAsset> CODEC = BuilderCodec.builder(
         PositionsPinchDensityAsset.class, PositionsPinchDensityAsset::new, DensityAsset.ABSTRACT_CODEC
      )
      .append(
         new KeyedCodec<>("Positions", PositionProviderAsset.CODEC, true), (asset, v) -> asset.positionProviderAsset = v, asset -> asset.positionProviderAsset
      )
      .add()
      .append(new KeyedCodec<>("PinchCurve", CurveAsset.CODEC, true), (asset, v) -> asset.pinchCurveAsset = v, asset -> asset.pinchCurveAsset)
      .add()
      .<Double>append(new KeyedCodec<>("MaxDistance", Codec.DOUBLE, true), (asset, v) -> asset.maxDistance = v, asset -> asset.maxDistance)
      .addValidator(Validators.greaterThanOrEqual(0.0))
      .add()
      .append(new KeyedCodec<>("NormalizeDistance", Codec.BOOLEAN, true), (asset, v) -> asset.normalizeDistance = v, asset -> asset.normalizeDistance)
      .add()
      .append(new KeyedCodec<>("HorizontalPinch", Codec.BOOLEAN, false), (asset, v) -> asset.isHorizontal = v, asset -> asset.isHorizontal)
      .add()
      .append(new KeyedCodec<>("PositionsMinY", Codec.DOUBLE, false), (asset, v) -> asset.positionsMinY = v, asset -> asset.positionsMinY)
      .add()
      .append(new KeyedCodec<>("PositionsMaxY", Codec.DOUBLE, false), (asset, v) -> asset.positionsMaxY = v, asset -> asset.positionsMaxY)
      .add()
      .build();
   private PositionProviderAsset positionProviderAsset = new ListPositionProviderAsset();
   private CurveAsset pinchCurveAsset = new ConstantCurveAsset();
   private double maxDistance = 0.0;
   private boolean normalizeDistance = false;
   private boolean isHorizontal = false;
   private double positionsMinY = 0.0;
   private double positionsMaxY = 1.0E-6;

   public PositionsPinchDensityAsset() {
   }

   @Nonnull
   @Override
   public Density build(@Nonnull DensityAsset.Argument argument) {
      if (this.isSkipped()) {
         return new ConstantValueDensity(0.0);
      } else {
         return (Density)(this.isHorizontal
            ? new PositionsHorizontalPinchDensity(
               this.buildFirstInput(argument),
               this.positionProviderAsset.build(new PositionProviderAsset.Argument(argument.parentSeed, argument.referenceBundle, argument.workerIndexer)),
               this.pinchCurveAsset.build(),
               this.maxDistance,
               this.normalizeDistance,
               this.positionsMinY,
               this.positionsMaxY,
               argument.workerIndexer.getWorkerCount()
            )
            : new PositionsPinchDensity(
               this.buildFirstInput(argument),
               this.positionProviderAsset.build(new PositionProviderAsset.Argument(argument.parentSeed, argument.referenceBundle, argument.workerIndexer)),
               this.pinchCurveAsset.build(),
               this.maxDistance,
               this.normalizeDistance
            ));
      }
   }

   @Override
   public void cleanUp() {
      this.cleanUpInputs();
      this.positionProviderAsset.cleanUp();
      this.pinchCurveAsset.cleanUp();
   }
}