More modelling stuff

This commit is contained in:
pahimar 2013-04-10 16:17:46 -04:00
parent 6800687dd9
commit 7c62c0d603
5 changed files with 53 additions and 26 deletions

View file

@ -1,7 +1,6 @@
package com.pahimar.ee3.client.model; package com.pahimar.ee3.client.model;
import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelBase;
import net.minecraftforge.client.model.ICustomModel;
import net.minecraftforge.client.model.obj.WavefrontObject; import net.minecraftforge.client.model.obj.WavefrontObject;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
@ -25,18 +24,19 @@ import cpw.mods.fml.relauncher.SideOnly;
* *
*/ */
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public class ModelAludel extends ModelBase implements ICustomModel { public class ModelAludel extends ModelBase {
private WavefrontObject modelAludelOBJ; private WavefrontObject modelAludelObj;
public ModelAludel() { public ModelAludel() {
modelAludelOBJ = new WavefrontObject(Models.ALUDEL); modelAludelObj = new WavefrontObject(Models.ALUDEL);
modelAludelObj.load();
} }
public void render() { public void render() {
modelAludelOBJ.renderAll(); modelAludelObj.renderAll();
} }
public void render(TileAludel aludel, double x, double y, double z) { public void render(TileAludel aludel, double x, double y, double z) {

View file

@ -1,7 +1,6 @@
package com.pahimar.ee3.client.model; package com.pahimar.ee3.client.model;
import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelBase;
import net.minecraftforge.client.model.ICustomModel;
import net.minecraftforge.client.model.obj.WavefrontObject; import net.minecraftforge.client.model.obj.WavefrontObject;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
@ -24,18 +23,19 @@ import cpw.mods.fml.relauncher.SideOnly;
* *
*/ */
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public class ModelCalcinator extends ModelBase implements ICustomModel { public class ModelCalcinator extends ModelBase {
private WavefrontObject modelCalcinatorOBJ; private WavefrontObject modelCalcinatorObj;
public ModelCalcinator() { public ModelCalcinator() {
modelCalcinatorOBJ = new WavefrontObject(Models.CALCINATOR); modelCalcinatorObj = new WavefrontObject(Models.CALCINATOR);
modelCalcinatorObj.load();
} }
public void render() { public void render() {
modelCalcinatorOBJ.renderAll(); modelCalcinatorObj.renderAll();
} }
public void render(TileCalcinator calcinator, double x, double y, double z) { public void render(TileCalcinator calcinator, double x, double y, double z) {

View file

@ -1,8 +0,0 @@
package net.minecraftforge.client.model;
public interface ICustomModel {
public abstract void render();
}

View file

@ -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);
}

View file

@ -11,6 +11,7 @@ import java.util.regex.Pattern;
import java.util.zip.DataFormatException; import java.util.zip.DataFormatException;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraftforge.client.model.IModelCustom;
import org.lwjgl.opengl.GL11; 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 * Based heavily off of the specifications found at http://en.wikipedia.org/wiki/Wavefront_.obj_file
*/ */
@SideOnly(Side.CLIENT) @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} *$)"); 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 try
{ {
parseObjModel(this.getClass().getResource(fileName)); loadObjModel(this.getClass().getResource(fileName));
} }
catch (DataFormatException e) catch (DataFormatException e)
{ {
e.printStackTrace(); e.printStackTrace();
} }
} }
public WavefrontObject(URL fileURL) public void load(String fileName)
{ {
this.fileName = fileURL.getFile();
try 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) 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; BufferedReader reader = null;
InputStream inputStream = 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) public void renderAllExcept(String... excludedGroupNames)
{ {