HyCodeYourTale
classpublicPriority 3

SmoothClampDensityAsset

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

extends DensityAsset

2

Methods

2

Public Methods

3

Fields

1

Constructors

Constants

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

Constructors

public
SmoothClampDensityAsset()

Methods

Public Methods (2)

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

Fields

Private/Package Fields (3)

privatedouble range
privatedouble wallA
privatedouble wallB

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.density.Density;
import com.hypixel.hytale.builtin.hytalegenerator.density.nodes.ClampDensity;
import com.hypixel.hytale.builtin.hytalegenerator.density.nodes.ConstantValueDensity;
import com.hypixel.hytale.builtin.hytalegenerator.density.nodes.SmoothClampDensity;
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 SmoothClampDensityAsset extends DensityAsset {
   public static final BuilderCodec<SmoothClampDensityAsset> CODEC = BuilderCodec.builder(
         SmoothClampDensityAsset.class, SmoothClampDensityAsset::new, DensityAsset.ABSTRACT_CODEC
      )
      .append(new KeyedCodec<>("WallA", Codec.DOUBLE, true), (t, k) -> t.wallA = k, k -> k.wallA)
      .add()
      .append(new KeyedCodec<>("WallB", Codec.DOUBLE, true), (t, k) -> t.wallB = k, k -> k.wallB)
      .add()
      .<Double>append(new KeyedCodec<>("Range", Codec.DOUBLE, true), (t, k) -> t.range = k, k -> k.range)
      .addValidator(Validators.greaterThanOrEqual(0.0))
      .add()
      .build();
   private double wallA = -1.0;
   private double wallB = 1.0;
   private double range = 0.01;

   public SmoothClampDensityAsset() {
   }

   @Nonnull
   @Override
   public Density build(@Nonnull DensityAsset.Argument argument) {
      if (this.isSkipped()) {
         return new ConstantValueDensity(0.0);
      } else if (this.range == 0.0) {
         return new ClampDensity(this.wallA, this.wallB, this.buildSecondInput(argument));
      } else {
         double min = Math.min(this.wallA, this.wallB);
         double max = Math.max(this.wallA, this.wallB);
         return new SmoothClampDensity(min, max, this.range, this.buildSecondInput(argument));
      }
   }

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