HyCodeYourTale
classpublicPriority 3

FastGradientWarpDensity

com.hypixel.hytale.builtin.hytalegenerator.density.nodes.FastGradientWarpDensity

extends Density

2

Methods

2

Public Methods

3

Fields

1

Constructors

Constants

doubleHALF_PI= 1.5707963267948966

Constructors

public
FastGradientWarpDensity(Density input, float warpLacunarity, float warpPersistence, int warpOctaves, float warpScale, float warpFactor, int seed)

Methods

Public Methods (2)

public
double process(Density.Context context)
@Override
public
void setInputs(Density[] inputs)
@Override

Fields

Private/Package Fields (3)

privateDensity input
privatedouble warpScale
privateFastNoiseLite warper

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.density.nodes;

import com.hypixel.hytale.builtin.hytalegenerator.density.Density;
import com.hypixel.hytale.builtin.hytalegenerator.fields.FastNoiseLite;
import com.hypixel.hytale.math.vector.Vector3d;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;

public class FastGradientWarpDensity extends Density {
   private static final double HALF_PI = 1.5707963267948966;
   @Nullable
   private Density input;
   private final double warpScale;
   @Nonnull
   private final FastNoiseLite warper;

   public FastGradientWarpDensity(
      @Nonnull Density input, float warpLacunarity, float warpPersistence, int warpOctaves, float warpScale, float warpFactor, int seed
   ) {
      if ((double)warpOctaves < 0.0) {
         throw new IllegalArgumentException();
      } else {
         this.warpScale = (double)warpScale;
         this.input = input;
         this.warper = new FastNoiseLite();
         this.warper.setSeed(seed);
         this.warper.SetFractalGain(warpPersistence);
         this.warper.SetFractalLacunarity(warpLacunarity);
         this.warper.setDomainWarpType(FastNoiseLite.DomainWarpType.OpenSimplex2);
         this.warper.setFractalOctaves(warpOctaves);
         this.warper.setDomainWarpAmp(warpFactor);
         this.warper.setDomainWarpFreq(warpScale);
      }
   }

   @Override
   public double process(@Nonnull Density.Context context) {
      if (this.input == null) {
         return 0.0;
      } else {
         FastNoiseLite.Vector3 warpedPosition = new FastNoiseLite.Vector3(context.position.x, context.position.y, context.position.z);
         this.warper.DomainWarpFractalProgressive(warpedPosition);
         Density.Context childContext = new Density.Context(context);
         childContext.position = new Vector3d(warpedPosition.x, warpedPosition.y, warpedPosition.z);
         return this.input.process(childContext);
      }
   }

   @Override
   public void setInputs(@Nonnull Density[] inputs) {
      if (inputs.length == 1) {
         this.input = inputs[0];
      } else {
         this.input = null;
      }
   }
}