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

package com.hypixel.hytale.builtin.hytalegenerator.fields.points;

import com.hypixel.hytale.math.vector.Vector2d;
import com.hypixel.hytale.math.vector.Vector3d;
import com.hypixel.hytale.math.vector.Vector2i;
import java.util.function.Consumer;
import java.util.Objects;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Nonnull;
import com.hypixel.hytale.math.vector.Vector3i;

public abstract class PointField implements PointProvider
{
    protected double scaleX;
    protected double scaleY;
    protected double scaleZ;
    protected double scaleW;
    
    public PointField() {
        this.scaleX = 1.0;
        this.scaleY = 1.0;
        this.scaleZ = 1.0;
        this.scaleW = 1.0;
    }
    
    @Nonnull
    @Override
    public List<Vector3i> points3i(@Nonnull final Vector3i min, @Nonnull final Vector3i max) {
        final ArrayList obj;
        final ArrayList<Vector3i> list = obj = new ArrayList();
        Objects.requireNonNull(obj);
        this.points3i(min, max, (Consumer<Vector3i>)obj::add);
        return list;
    }
    
    @Nonnull
    @Override
    public List<Vector2i> points2i(@Nonnull final Vector2i min, @Nonnull final Vector2i max) {
        final ArrayList obj;
        final ArrayList<Vector2i> list = obj = new ArrayList();
        Objects.requireNonNull(obj);
        this.points2i(min, max, (Consumer<Vector2i>)obj::add);
        return list;
    }
    
    @Nonnull
    @Override
    public List<Integer> points1i(final int min, final int max) {
        final ArrayList obj;
        final ArrayList<Integer> list = obj = new ArrayList();
        Objects.requireNonNull(obj);
        this.points1i(min, max, (Consumer<Integer>)obj::add);
        return list;
    }
    
    @Nonnull
    @Override
    public List<Vector3d> points3d(@Nonnull final Vector3d min, @Nonnull final Vector3d max) {
        final ArrayList obj;
        final ArrayList<Vector3d> list = obj = new ArrayList();
        Objects.requireNonNull(obj);
        this.points3d(min, max, (Consumer<Vector3d>)obj::add);
        return list;
    }
    
    @Nonnull
    @Override
    public List<Vector2d> points2d(@Nonnull final Vector2d min, @Nonnull final Vector2d max) {
        final ArrayList obj;
        final ArrayList<Vector2d> list = obj = new ArrayList();
        Objects.requireNonNull(obj);
        this.points2d(min, max, (Consumer<Vector2d>)obj::add);
        return list;
    }
    
    @Nonnull
    @Override
    public List<Double> points1d(final double min, final double max) {
        final ArrayList obj;
        final ArrayList<Double> list = obj = new ArrayList();
        Objects.requireNonNull(obj);
        this.points1d(min, max, (Consumer<Double>)obj::add);
        return list;
    }
    
    public PointField setScale(final double scaleX, final double scaleY, final double scaleZ, final double scaleW) {
        this.scaleX = scaleX;
        this.scaleY = scaleY;
        this.scaleZ = scaleZ;
        this.scaleW = scaleW;
        return this;
    }
    
    @Nonnull
    public PointField setScale(final double scale) {
        this.setScale(scale, scale, scale, scale);
        return this;
    }
}
