package codechicken.lib.raytracer;

import codechicken.lib.vec.BlockCoord;
import codechicken.lib.vec.Vector3;
import net.minecraft.entity.Entity;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.MovingObjectPosition;

public class ExtendedMOP extends MovingObjectPosition implements Comparable<ExtendedMOP>
{
    /**
     * The square distance from the start of the raytrace.
     */
    public double dist;

    public ExtendedMOP(Entity entity, Vector3 hit, Object data, double dist) {
        super(entity, hit.vec3());
        setData(data);
        this.dist = dist;
    }

    public ExtendedMOP(Vector3 hit, int side, BlockCoord pos, Object data, double dist) {
        super(hit.vec3(), EnumFacing.values()[side], pos.pos());
        setData(data);
        this.dist = dist;
    }

    public void setData(Object data) {
        if (data instanceof Integer)
            subHit = ((Integer) data).intValue();
        hitInfo = data;
    }

    @Override
    public int compareTo(ExtendedMOP o) {
        return dist == o.dist ? 0 : dist < o.dist ? -1 : 1;
    }
}