ScaledXResponseCurve class

Пакет: com.hypixel.hytale.server.core.asset.type.responsecurve

Файл: com/hypixel/hytale/server/core/asset/type/responsecurve/ScaledXResponseCurve.java

extends: ScaledResponseCurve

Поля (6)

МодификаторыТипИмя
final BuilderCodec<ScaledXResponseCurve> CODEC
var1
ResponseCurve var3
double var4
double var6
double var8

Методы (4)

МодификаторыВозвратСигнатура
protected double computeNormalisedYdouble computeNormalisedY(double var1)
public String getResponseCurveString getResponseCurve()
public double[] getXRangedouble[] getXRange()
if if(var0.responseCurve != null)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.asset.type.responsecurve;

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.server.core.asset.type.responsecurve.config.ResponseCurve;
class="kw">import java.util.Arrays;
class="kw">import javax.annotation.Nonnull;

class="kw">public class ScaledXResponseCurve class="kw">extends ScaledResponseCurve {
   class="kw">public class="kw">static class="kw">final BuilderCodec<ScaledXResponseCurve> CODEC = BuilderCodec.<ScaledXResponseCurve>builder(
         ScaledXResponseCurve.class, ScaledXResponseCurve::new
      )
      .documentation("A response curve scaled only on the x axis.")
      .<String>append(new KeyedCodec<>("ResponseCurve", Codec.STRING), (var0, var1) -> var0.responseCurve = var1, var0 -> var0.responseCurve)
      .documentation("The response curve to scale")
      .addValidator(Validators.nonNull())
      .addValidator(ResponseCurve.VALIDATOR_CACHE.getValidator())
      .add()
      .<double[]>append(
         new KeyedCodec<>("XRange", Codec.DOUBLE_ARRAY), (var0, var1) -> var0.xRange = var1, var0 -> new double[]{var0.xRange[0], var0.xRange[1]}
      )
      .documentation("The range to map the x axis to. e.g. [ 0, 10 ]")
      .addValidator(Validators.doubleArraySize(2))
      .addValidator(Validators.monotonicSequentialDoubleArrayValidator())
      .add()
      .afterDecode(var0 -> {
         if (var0.responseCurve != null) {
            int var1 = ResponseCurve.getAssetMap().getIndex(var0.responseCurve);
            var0.responseCurveReference = new ResponseCurve.Reference(var1, ResponseCurve.getAssetMap().getAsset(var1));
         }
      })
      .build();
   class="kw">public class="kw">static class="kw">final double[] DEFAULT_RANGE = new double[]{0.0, 1.0};
   class="kw">protected String responseCurve;
   class="kw">protected ResponseCurve.Reference responseCurveReference;
   class="kw">protected double[] xRange = DEFAULT_RANGE;

   class="kw">public ScaledXResponseCurve(String var1, double[] var2) {
      this.responseCurve = var1;
      this.xRange = var2;
   }

   class="kw">protected ScaledXResponseCurve() {
   }

   class="kw">public String getResponseCurve() {
      class="kw">return this.responseCurve;
   }

   class="kw">public double[] getXRange() {
      class="kw">return this.xRange;
   }

   @Override
   class="kw">public double computeY(double var1) {
      class="kw">return MathUtil.clamp(this.computeNormalisedY(var1), 0.0, 1.0);
   }

   class="kw">protected double computeNormalisedY(double var1) {
      ResponseCurve var3 = this.responseCurveReference.get();
      double var4 = this.xRange[0];
      double var6 = this.xRange[1];
      var1 = MathUtil.clamp(var1, var4, var6);
      double var8 = (var1 - var4) / (var6 - var4);
      class="kw">return var3.computeY(var8);
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "ScaledXResponseCurve{responseCurve=" + this.responseCurve + ", xRange=" + Arrays.toString(this.xRange) + "}" + super.toString();
   }
}