diff --git a/client/net/minecraftforge/client/model/IModelCustom.java b/client/net/minecraftforge/client/model/IModelCustom.java new file mode 100644 index 000000000..40a519125 --- /dev/null +++ b/client/net/minecraftforge/client/model/IModelCustom.java @@ -0,0 +1,13 @@ +package net.minecraftforge.client.model; + + + +public interface IModelCustom { + + public abstract void load(String fileName); + + public abstract void renderAll(); + + public abstract void renderPart(String partName); + +} diff --git a/client/net/minecraftforge/client/model/obj/WavefrontObject.java b/client/net/minecraftforge/client/model/obj/WavefrontObject.java index 09d56f581..a8e30fb3a 100644 --- a/client/net/minecraftforge/client/model/obj/WavefrontObject.java +++ b/client/net/minecraftforge/client/model/obj/WavefrontObject.java @@ -11,6 +11,7 @@ import java.util.regex.Pattern; import java.util.zip.DataFormatException; import net.minecraft.client.renderer.Tessellator; +import net.minecraftforge.client.model.IModelCustom; import org.lwjgl.opengl.GL11; @@ -22,7 +23,7 @@ import cpw.mods.fml.relauncher.SideOnly; * Based heavily off of the specifications found at http://en.wikipedia.org/wiki/Wavefront_.obj_file */ @SideOnly(Side.CLIENT) -public class WavefrontObject +public class WavefrontObject implements IModelCustom { private static Pattern vertexPattern = Pattern.compile("(v( (\\-){0,1}\\d+\\.\\d+){3,4} *\\n)|(v( (\\-){0,1}\\d+\\.\\d+){3,4} *$)"); @@ -51,21 +52,31 @@ public class WavefrontObject try { - parseObjModel(this.getClass().getResource(fileName)); + loadObjModel(this.getClass().getResource(fileName)); } catch (DataFormatException e) { e.printStackTrace(); } } - - public WavefrontObject(URL fileURL) + + public void load(String fileName) { - this.fileName = fileURL.getFile(); - try { - parseObjModel(fileURL); + loadObjModel(this.getClass().getResource(fileName)); + } + catch (DataFormatException e) + { + e.printStackTrace(); + } + } + + public void load() + { + try + { + loadObjModel(this.getClass().getResource(fileName)); } catch (DataFormatException e) { @@ -73,7 +84,7 @@ public class WavefrontObject } } - private void parseObjModel(URL fileURL) throws DataFormatException + private void loadObjModel(URL fileURL) throws DataFormatException { BufferedReader reader = null; InputStream inputStream = null; @@ -212,6 +223,17 @@ public class WavefrontObject } } } + + public void renderPart(String partName) + { + for (GroupObject groupObject : groupObjects) + { + if (partName.equalsIgnoreCase(groupObject.name)) + { + groupObject.render(); + } + } + } public void renderAllExcept(String... excludedGroupNames) {