package ttftcuts.physis.client.texture;
import java.awt.image.BufferedImage;
import java.io.IOException;
import ttftcuts.physis.Physis;
import ttftcuts.physis.common.helper.TextureHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.IResourceManager;
import net.minecraft.util.ResourceLocation;
public class PhysisAtlasSprite extends TextureAtlasSprite {
public ResourceLocation override;
public PhysisAtlasSprite(String name) {
super(name);
}
public PhysisAtlasSprite(String name, ResourceLocation resource) {
this(name);
this.override = resource;
}
@Override
public boolean hasCustomLoader(IResourceManager manager, ResourceLocation location) {
return true;
}
@Override
public boolean load(IResourceManager manager, ResourceLocation defaultlocation) {
ResourceLocation location = override == null ? defaultlocation : override;
//Physis.logger.info("default: "+defaultlocation+", override: "+override);
BufferedImage image;
try {
image = TextureHelper.getImageForResource(location);
}
catch (IOException e) {
Physis.logger.error("Failed to load atlas sprite", e);
return true;
}
int miplevels = Minecraft.getMinecraft().gameSettings.mipmapLevels;
//Physis.logger.info("Miplevels: "+miplevels);
BufferedImage[] output = new BufferedImage[miplevels+1];
output[0] = image;
if (miplevels > 1) {
for (int i = 1; i<=miplevels; i++) {
double scale = 1.0 / Math.pow(2,i);
output[i] = TextureHelper.scaleBufferedImage(image, scale);
}
}
this.loadSprite(output, null, (float) Minecraft.getMinecraft().gameSettings.anisotropicFiltering > 1.0F);
return false;
}
/*@SuppressWarnings("unchecked")
@Override
public void generateMipmaps(int n) {
int len = this.framesTextureData.size();
BufferedImage first = (BufferedImage) this.framesTextureData.get(0);
if (len < n) {
for (int i=len; i<n; i++) {
double scale = 1.0 / Math.pow(2,i);
this.framesTextureData.add(TextureHelper.scaleBufferedImage(first, scale));
}
}
super.generateMipmaps(n);
}*/
}