// 
// Decompiled by Procyon v0.6.0
// 

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

import javax.annotation.Nonnull;
import com.hypixel.hytale.builtin.hytalegenerator.density.Density;

public class MixDensity extends Density
{
    private Density densityA;
    private Density densityB;
    private Density influenceDensity;
    
    public MixDensity(@Nonnull final Density densityA, @Nonnull final Density densityB, @Nonnull final Density influenceDensity) {
        this.densityA = densityA;
        this.densityB = densityB;
        this.influenceDensity = influenceDensity;
    }
    
    @Override
    public double process(@Nonnull final Context context) {
        final double THRESHOLD_INPUT_A = 0.0;
        final double THRESHOLD_INPUT_B = 1.0;
        final double influence = this.influenceDensity.process(context);
        if (influence <= 0.0) {
            return this.densityA.process(context);
        }
        if (influence >= 1.0) {
            return this.densityB.process(context);
        }
        final double valueA = this.densityA.process(context);
        final double valueB = this.densityB.process(context);
        final double mixedValue = valueA * (1.0 - influence) + valueB * influence;
        return mixedValue;
    }
    
    @Override
    public void setInputs(@Nonnull final Density[] inputs) {
        if (inputs.length != 3) {
            throw new IllegalArgumentException("inputs.length != 3");
        }
        this.densityA = inputs[0];
        this.densityB = inputs[1];
        this.influenceDensity = inputs[2];
    }
}
