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
 
                System.out.println(dis.readInt());
                for(int i = 0; i < skinWidth * skinHeight; i++)
                    System.out.println(dis.readByte());
 
                //Header end
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
        }
    }
 
    } | 
Partager