1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
| package fr.plaigon.mdlloader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.channels.FileChannel;
import com.google.common.io.LittleEndianDataInputStream;
import fr.plaigon.md5loader.GLApp;
public class MDLReader
{
public String filepath = "";
public String filename = "";
public MDLReader(String fileName)
{
loadobject(fileName);
}
public void loadobject(String objfilename)
{
if (objfilename != null && objfilename.length() > 0)
{
String[] pathParts = GLApp.getPathAndFile(objfilename);
filepath = pathParts[0];
filename = pathParts[1];
try
{
loadobject(GLApp.getInputStream(objfilename));
}
catch (Exception e)
{
System.out.println("MDLReader.loadobject(): Failed to read file: " + objfilename + " " + e);
}
}
}
public void loadobject(InputStream in)
{
if (in != null)
{
int skinWidth, skinHeight;
FileInputStream fis = (FileInputStream)in;
try
{
LittleEndianDataInputStream dis = new LittleEndianDataInputStream(fis);
//Header start
System.out.println(dis.readInt());//ident or "magical number"
System.out.println(dis.readInt());//version
//Scale model vector coordinates
System.out.println(dis.readFloat());
System.out.println(dis.readFloat());
System.out.println(dis.readFloat());
//Translation model vector coordinates
System.out.println(dis.readFloat());
System.out.println(dis.readFloat());
System.out.println(dis.readFloat());
System.out.println(dis.readFloat());//Sphere radius
//Eyes model vector coordinates
System.out.println(dis.readFloat());
System.out.println(dis.readFloat());
System.out.println(dis.readFloat());
System.out.println(dis.readInt());//num_skins
System.out.println(skinWidth = dis.readInt());//skinwidth
System.out.println(skinHeight = dis.readInt());//skinheight
System.out.println(dis.readInt());//num_verts
System.out.println(dis.readInt());//num_tris
System.out.println(dis.readInt());//num_frames
System.out.println(dis.readInt());//synctype
System.out.println(dis.readInt());//flags
System.out.println(dis.readFloat());//average size of triangles
//Header end
System.out.println(dis.readInt());//0 = simple, !0 = groupe
byte[] test = new byte[skinWidth * skinHeight];
dis.readFully(test);
System.out.println(test[262143]);//data
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
} |
Partager