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

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

import java.util.Iterator;
import com.hypixel.hytale.builtin.hytalegenerator.VectorUtil;
import java.util.Collection;
import java.util.ArrayList;
import javax.annotation.Nonnull;
import com.hypixel.hytale.math.vector.Vector3d;
import com.hypixel.hytale.math.vector.Vector3i;
import java.util.List;

public class ListPositionProvider extends PositionProvider
{
    private List<Vector3i> positions3i;
    private List<Vector3d> positions3d;
    
    private ListPositionProvider() {
    }
    
    @Nonnull
    public static ListPositionProvider from3i(@Nonnull final List<Vector3i> positions3i) {
        final ListPositionProvider instance = new ListPositionProvider();
        (instance.positions3i = new ArrayList<Vector3i>()).addAll(positions3i);
        instance.positions3d = new ArrayList<Vector3d>(positions3i.size());
        instance.positions3i.forEach(p -> instance.positions3d.add(p.toVector3d()));
        return instance;
    }
    
    @Nonnull
    public static ListPositionProvider from3d(@Nonnull final List<Vector3d> positions3d) {
        final ListPositionProvider instance = new ListPositionProvider();
        (instance.positions3d = new ArrayList<Vector3d>()).addAll(positions3d);
        instance.positions3i = new ArrayList<Vector3i>(positions3d.size());
        instance.positions3d.forEach(p -> instance.positions3i.add(p.toVector3i()));
        return instance;
    }
    
    @Override
    public void positionsIn(@Nonnull final Context context) {
        for (final Vector3d p : this.positions3d) {
            if (VectorUtil.isInside(p, context.minInclusive, context.maxExclusive)) {}
            context.consumer.accept(p);
        }
    }
}
