mirror of
http://git.eaglercraft.rip/eaglercraft/eaglercraft-1.8.git
synced 2025-04-30 02:01:59 -05:00
95 lines
3.1 KiB
Java
95 lines
3.1 KiB
Java
package net.optifine.model;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import net.minecraft.client.renderer.block.model.BakedQuad;
|
|
import net.minecraft.client.resources.model.IBakedModel;
|
|
import net.minecraft.client.resources.model.SimpleBakedModel;
|
|
import net.minecraft.util.EnumFacing;
|
|
|
|
public class ModelUtils {
|
|
public static void dbgModel(IBakedModel model) {
|
|
if (model != null) {
|
|
// Config.dbg("Model: " + model + ", ao: " + model.isAmbientOcclusion() + ",
|
|
// gui3d: " + model.isGui3d() + ", builtIn: " + model.isBuiltInRenderer() + ",
|
|
// particle: " + model.getParticleTexture());
|
|
EnumFacing[] aenumfacing = EnumFacing._VALUES;
|
|
|
|
for (int i = 0; i < aenumfacing.length; ++i) {
|
|
EnumFacing enumfacing = aenumfacing[i];
|
|
List list = model.getFaceQuads(enumfacing);
|
|
dbgQuads(enumfacing.getName(), list, " ");
|
|
}
|
|
|
|
List list1 = model.getGeneralQuads();
|
|
dbgQuads("General", list1, " ");
|
|
}
|
|
}
|
|
|
|
private static void dbgQuads(String name, List quads, String prefix) {
|
|
for (Object bakedquad0 : quads) {
|
|
BakedQuad bakedQuad = (BakedQuad) bakedquad0;
|
|
dbgQuad(name, bakedQuad, prefix);
|
|
}
|
|
}
|
|
|
|
public static void dbgQuad(String name, BakedQuad quad, String prefix) {
|
|
// Config.dbg(prefix + "Quad: " + quad.getClass().getName() + ", type: " + name
|
|
// + ", face: " + quad.getFace() + ", tint: " + quad.getTintIndex() + ", sprite:
|
|
// " + quad.getSprite());
|
|
dbgVertexData(quad.getVertexData(), " " + prefix);
|
|
}
|
|
|
|
public static void dbgVertexData(int[] vd, String prefix) {
|
|
int i = vd.length / 4;
|
|
// Config.dbg(prefix + "Length: " + vd.length + ", step: " + i);
|
|
|
|
for (int j = 0; j < 4; ++j) {
|
|
int k = j * i;
|
|
float f = Float.intBitsToFloat(vd[k + 0]);
|
|
float f1 = Float.intBitsToFloat(vd[k + 1]);
|
|
float f2 = Float.intBitsToFloat(vd[k + 2]);
|
|
int l = vd[k + 3];
|
|
float f3 = Float.intBitsToFloat(vd[k + 4]);
|
|
float f4 = Float.intBitsToFloat(vd[k + 5]);
|
|
// Config.dbg(prefix + j + " xyz: " + f + "," + f1 + "," + f2 + " col: " + l + "
|
|
// u,v: " + f3 + "," + f4);
|
|
}
|
|
}
|
|
|
|
public static IBakedModel duplicateModel(IBakedModel model) {
|
|
List list = duplicateQuadList(model.getGeneralQuads());
|
|
EnumFacing[] aenumfacing = EnumFacing._VALUES;
|
|
List list1 = new ArrayList();
|
|
|
|
for (int i = 0; i < aenumfacing.length; ++i) {
|
|
EnumFacing enumfacing = aenumfacing[i];
|
|
List list2 = model.getFaceQuads(enumfacing);
|
|
List list3 = duplicateQuadList(list2);
|
|
list1.add(list3);
|
|
}
|
|
|
|
SimpleBakedModel simplebakedmodel = new SimpleBakedModel(list, list1, model.isAmbientOcclusion(),
|
|
model.isGui3d(), model.getParticleTexture(), model.getItemCameraTransforms());
|
|
return simplebakedmodel;
|
|
}
|
|
|
|
public static List duplicateQuadList(List lists) {
|
|
List list = new ArrayList();
|
|
|
|
for (Object e : lists) {
|
|
BakedQuad bakedquad = (BakedQuad) e;
|
|
BakedQuad bakedquad1 = duplicateQuad(bakedquad);
|
|
list.add(bakedquad1);
|
|
}
|
|
|
|
return list;
|
|
}
|
|
|
|
public static BakedQuad duplicateQuad(BakedQuad quad) {
|
|
BakedQuad bakedquad = new BakedQuad((int[]) quad.getVertexData().clone(),
|
|
(int[]) quad.getVertexDataWithNormals().clone(), quad.getTintIndex(), quad.getFace(), quad.getSprite());
|
|
return bakedquad;
|
|
}
|
|
}
|