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

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

import javax.annotation.Nullable;
import com.hypixel.hytale.builtin.hytalegenerator.materialproviders.functions.DoubleFunctionXZ;
import javax.annotation.Nonnull;

public class HorizontalMaterialProvider<V> extends MaterialProvider<V>
{
    @Nonnull
    private final MaterialProvider<V> materialProvider;
    @Nonnull
    private final DoubleFunctionXZ topY;
    @Nonnull
    private final DoubleFunctionXZ bottomY;
    
    public HorizontalMaterialProvider(@Nonnull final MaterialProvider<V> materialProvider, @Nonnull final DoubleFunctionXZ topY, @Nonnull final DoubleFunctionXZ bottomY) {
        this.materialProvider = materialProvider;
        this.topY = topY;
        this.bottomY = bottomY;
    }
    
    @Nullable
    @Override
    public V getVoxelTypeAt(@Nonnull final Context context) {
        final double topY = this.topY.apply(context.position.x, context.position.z);
        final double bottomY = this.bottomY.apply(context.position.x, context.position.z);
        if (context.position.y >= topY || context.position.y < bottomY) {
            return null;
        }
        return this.materialProvider.getVoxelTypeAt(context);
    }
}
