終于將M2文件的加載過程寫好了,30+個段,寫的要吐血,后面還有SKIN文件要加載,唉,真的要吐血了~下面是M2文件的Header格式,雖說每個M2文件不會包括全部的段,但段指示部分還是存在的,只是其size和offset為零罷了。

M2::Header_t
struct Header_t
{
unsigned char m_acIdent[4];
unsigned int m_uiVersion;
DataPair_t m_stName;
unsigned int m_uiModelFlag;
DataPair_t m_stSequence;
DataPair_t m_stAnim;
DataPair_t m_stAnimLookup;
DataPair_t m_stBone;
DataPair_t m_stBoneLookup;
DataPair_t m_stVertex;
unsigned int m_uiView;
DataPair_t m_stColor;
DataPair_t m_stTexture;
DataPair_t m_stTransparency;
DataPair_t m_stTexAnim;
DataPair_t m_stTexReplace;
DataPair_t m_stRenderFlag;
DataPair_t m_stBoneTable;
DataPair_t m_stTexLookup;
DataPair_t m_stTexTable;
DataPair_t m_stTransLookup;
DataPair_t m_stTexAnimLookup;
char m_acUnknFloat[14 * sizeof(float)];
DataPair_t m_stBoundTriangle;
DataPair_t m_stBoundVertex;
DataPair_t m_stBoundNormal;
DataPair_t m_stAttachment;
DataPair_t m_stAttachLookup;
DataPair_t m_stAttachment2;
DataPair_t m_stLight;
DataPair_t m_stCamera;
DataPair_t m_stCameraLookup;
DataPair_t m_stRibbon;
DataPair_t m_stParticle;
int Read(CFileBuffer& fb);
};
快寫完才發現各段的結構和加載方式是很很類似的,都是size指定有多少個塊,offset指示從哪里開始加載。這樣的方法完全可以使用template實現的,我咋么這么作呢?累的半死又難看,唉,改!