package mekanism.client.render.ctm;
import java.util.EnumMap;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import org.apache.commons.lang3.ArrayUtils;
import static mekanism.client.render.ctm.CTMConnections.*;
public class CTMBlockRenderContext
{
private static final CTMConnections[] CACHED_LOCATIONS = ArrayUtils.removeElements(CTMConnections.VALUES, UP_UP, DOWN_DOWN, EAST_EAST, WEST_WEST, NORTH_NORTH, SOUTH_SOUTH);
private EnumMap<EnumFacing, CTM> ctmData = new EnumMap<>(EnumFacing.class);
private long data;
public CTMBlockRenderContext(IBlockAccess world, BlockPos pos)
{
for(EnumFacing face : EnumFacing.VALUES)
{
CTM ctm = createCTM();
ctm.createSubmapIndices(world, pos, face);
ctmData.put(face, ctm);
}
data = CTMConnections.getData(world, pos, CACHED_LOCATIONS);
}
public CTMBlockRenderContext(long d)
{
data = d;
for(EnumFacing face : EnumFacing.VALUES)
{
CTM ctm = createCTM();
ctm.createSubmapIndices(data, face);
ctmData.put(face, ctm);
}
}
protected CTM createCTM()
{
return CTM.getInstance();
}
public CTM getCTM(EnumFacing face)
{
return ctmData.get(face);
}
public long serialize()
{
return data;
}
}