mirror of
https://github.com/Eaglercraft-Archive/Eaglercraftx-1.8.8-src.git
synced 2025-06-28 02:48:14 -05:00
Update #48 - Added some features from OptiFine
This commit is contained in:
94
sources/main/java/net/optifine/model/ModelUtils.java
Normal file
94
sources/main/java/net/optifine/model/ModelUtils.java
Normal file
@ -0,0 +1,94 @@
|
||||
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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user