Функциональность приложения Target реализована в классе TargetWin:
class TargetWin : public RMWin { public: TargetWin(); BOOL CreateScene(); protected: //{{AFX_MSG(TargetWin) afx_msg void OnRenderWireframe(); afx_msg void OnRenderFlat(); afx_msg void OnRenderGouraud(); afx_msg void OnUpdateRenderFlat(CCmdUI* pCmdUI); afx_msg void OnUpdateRenderGouraud(CCmdUI* pCmdUI); afx_msg void OnUpdateRenderWireframe(CCmdUI* pCmdUI); //}}AFX_MSG DECLARE_MESSAGE_MAP() private: static void OrientFrame(LPDIRECT3DRMFRAME frame, void*, D3DVALUE); static void MoveTarget(LPDIRECT3DRMFRAME frame, void*, D3DVALUE); private: LPDIRECT3DRMMESHBUILDER meshbuilder; };
В классе объявлены две открытые функции: конструктор и функция CreateScene(). Конструктор инициализирует единственную переменную класса, а функция CreateScene() создает сцену для приложения.
Следом идет объявление шести защищенных функций. Все они предназначены для реализации меню Render.
Потом объявлены две защищенные функции обратного вызова: OrientFrame() и MoveTarget(). Функция OrientFrame() используется для изменения ориентации ракет таким образом, чтобы они всегда были направлены на цель. Функция MoveTarget() применяется для перемещения цели.
И в самом конце объявляется единственная переменная класса. Указатель meshbuilder используется для загрузки сетки, изображающей ракету. Эта переменная используется как в функции CreateScene() так и в функциях меню Render.