HyCodeYourTale
classpublicPriority 3

VectorWarpDensity

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

extends Density

2

Methods

2

Public Methods

4

Fields

1

Constructors

Constructors

public
VectorWarpDensity(Density input, Density warpInput, double warpFactor, Vector3d warpVector)

Methods

Public Methods (2)

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

Fields

Private/Package Fields (4)

privateDensity input
privatedouble warpFactor
privateDensity warpInput
privateVector3d warpVector

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.math.vector.Vector3d;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;

public class VectorWarpDensity extends Density {
   @Nullable
   private Density input;
   @Nullable
   private Density warpInput;
   private final double warpFactor;
   @Nonnull
   private final Vector3d warpVector;

   public VectorWarpDensity(@Nonnull Density input, @Nonnull Density warpInput, double warpFactor, @Nonnull Vector3d warpVector) {
      this.input = input;
      this.warpInput = warpInput;
      this.warpFactor = warpFactor;
      this.warpVector = warpVector;
   }

   @Override
   public double process(@Nonnull Density.Context context) {
      if (this.input == null) {
         return 0.0;
      } else if (this.warpInput == null) {
         return this.input.process(context);
      } else {
         double warp = this.warpInput.process(context);
         warp *= this.warpFactor;
         Vector3d samplePoint = this.warpVector.clone();
         samplePoint.setLength(1.0);
         samplePoint.scale(warp);
         samplePoint.add(context.position);
         Density.Context childContext = new Density.Context(context);
         childContext.position = samplePoint;
         return this.input.process(childContext);
      }
   }

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

      this.input = inputs[0];
      if (inputs.length < 2) {
         this.warpInput = null;
      }

      this.warpInput = inputs[1];
   }
}