Программирование стратегических игр с DirectX 9.0
bda5893f

Класс C3DAnimation


Для программы D3D_AnimationClass я создал класс содержащий всю информацию, необходимую для создания, редактирования, сохранения, загрузки и воспроизведения анимации. Все это может показаться довольно сложным, но поиграйте немного с примером, и окажется, что все не так уж и плохо. Взгляните на рис. 11.19, иллюстрирующий определение класса.


Рис. 11.19. Структура класса C3DAnimation

На рисунке методы класса сгруппированы согласно их назначению. Например, сгруппированы все функции, относящиеся к работе с кадрами. Перед тем, как описывать функции, я приведу код заголовка класса:

const int g_iMaxObjects = 16; const int g_iMaxKeys = 1024;

struct stKeyFrame { D3DXVECTOR3 m_vecRot; D3DXVECTOR3 m_vecTrans; D3DXVECTOR3 m_vecScale; long m_lTimeDelay; };

class C3DAnimation { public: stKeyFrame *m_keyFrames[g_iMaxObjects][g_iMaxKeys]; Object3DClass *m_objObject[g_iMaxObjects]; char m_szObjectName[g_iMaxObjects][32]; int m_iNumFrames; int m_iNumObjects; char m_szAnimName[64]; int m_iCurFrame; long m_lCurTime; LPDIRECT3DDEVICE9 m_pd3dDevice; C3DAnimation(); ~C3DAnimation(); void vNewFrame(void); int iNextFrame(void); int iPrevFrame(void); int iStartFrame(void); int iNewObj(char *szObjName); void vUpdateTrans(int iObj, int iKey, D3DXVECTOR3 vecTrans); void vUpdateRot(int iObj, int iKey, D3DXVECTOR3 vecRot); void vUpdateScale(int iObj, int iKey, D3DXVECTOR3 vecScale); void vSave(char *szFileName); void vLoad(char *szFileName); void vSet3DDevice(LPDIRECT3DDEVICE9 pd3dDevice); void vReset(void); };



Содержание раздела