2 using System.Collections.Generic;
\r
8 public class TDCGFile
\r
10 protected BinaryReader r;
\r
12 public TDCGFile(string file)
\r
13 : this(File.OpenRead(file))
\r
17 public TDCGFile(Stream s)
\r
18 : this(new BinaryReader(s))
\r
22 public TDCGFile(BinaryReader r)
\r
27 public void ReadVertex(ref Vertex v)
\r
29 v.Pos.X = r.ReadSingle();
\r
30 v.Pos.Y = r.ReadSingle();
\r
31 v.Pos.Z = r.ReadSingle();
\r
32 v.Nrm.X = r.ReadSingle();
\r
33 v.Nrm.Y = r.ReadSingle();
\r
34 v.Nrm.Z = r.ReadSingle();
\r
35 v.Tex.X = r.ReadSingle();
\r
36 v.Tex.Y = r.ReadSingle();
\r
38 int cnt = r.ReadInt32();
\r
39 byte[] idx = new byte[4]{0, 0, 0, 0};
\r
41 if(cnt >= 1) { idx[3]= (byte)r.ReadInt32(); v.Wgt.W = r.ReadSingle(); }
\r
42 if(cnt >= 2) { idx[2]= (byte)r.ReadInt32(); v.Wgt.Z = r.ReadSingle(); }
\r
43 if(cnt >= 3) { idx[1]= (byte)r.ReadInt32(); v.Wgt.Y = r.ReadSingle(); }
\r
44 if(cnt >= 4) { idx[0]= (byte)r.ReadInt32(); v.Wgt.X = r.ReadSingle(); }
\r
45 if(cnt >= 5) { r.ReadInt32(); r.ReadSingle(); }
\r
46 if(cnt >= 6) { r.ReadInt32(); r.ReadSingle(); }
\r
47 if(cnt >= 7) { r.ReadInt32(); r.ReadSingle(); }
\r
48 if(cnt >= 8) { r.ReadInt32(); r.ReadSingle(); }
\r
50 v.Idx = BitConverter.ToUInt32(idx, 0);
\r
53 Encoding enc = Encoding.GetEncoding("Shift_JIS");
\r
54 List<byte> buf = new List<byte>();
\r
56 public string ReadString()
\r
62 byte b = r.ReadByte();
\r
70 return enc.GetString(buf.ToArray());
\r
73 public unsafe Matrix44 ReadMatrix()
\r
75 Matrix44 m = new Matrix44();
\r
78 for(int i= 0; i < 16; ++i)
\r
79 *p++ = r.ReadSingle();
\r