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

package com.hypixel.hytale.builtin.hytalegenerator.materialproviders.spaceanddepth.layers;

import com.hypixel.hytale.math.vector.Vector3d;
import javax.annotation.Nullable;
import com.hypixel.hytale.builtin.hytalegenerator.materialproviders.MaterialProvider;
import javax.annotation.Nonnull;
import com.hypixel.hytale.builtin.hytalegenerator.density.Density;
import com.hypixel.hytale.builtin.hytalegenerator.materialproviders.spaceanddepth.SpaceAndDepthMaterialProvider;

public class NoiseThickness<V> extends SpaceAndDepthMaterialProvider.Layer<V>
{
    @Nonnull
    private final Density density;
    @Nullable
    private final MaterialProvider<V> materialProvider;
    
    public NoiseThickness(@Nonnull final Density density, @Nullable final MaterialProvider<V> materialProvider) {
        this.density = density;
        this.materialProvider = materialProvider;
    }
    
    @Override
    public int getThicknessAt(final int x, final int y, final int z, final int depthIntoFloor, final int depthIntoCeiling, final int spaceAboveFloor, final int spaceBelowCeiling, final double distanceToBiomeEdge) {
        final Density.Context childContext = new Density.Context();
        childContext.position = new Vector3d(x, y, z);
        childContext.distanceToBiomeEdge = distanceToBiomeEdge;
        return (int)this.density.process(childContext);
    }
    
    @Nullable
    @Override
    public MaterialProvider<V> getMaterialProvider() {
        return this.materialProvider;
    }
}
