终于将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实现的,我咋么这么作呢?累的半死又难看,唉,改!