#ifndef _GAME_RENDER_ANIMATION_H #define _GAME_RENDER_ANIMATION_H #include #include #include #include "../mwworld/actiontalk.hpp" #include #include namespace MWRender { class Animation { struct GroupTimes { float mStart; float mStop; float mLoopStart; float mLoopStop; size_t mLoops; GroupTimes() : mStart(-1.0f), mStop(-1.0f), mLoopStart(-1.0f), mLoopStop(-1.0f), mLoops(0) { } }; protected: Ogre::SceneNode* mInsert; float mTime; GroupTimes mCurGroup; GroupTimes mNextGroup; bool mSkipFrame; NifOgre::EntityList mEntityList; NifOgre::TextKeyMap mTextKeys; bool findGroupTimes(const std::string &groupname, GroupTimes *times); public: Animation(); virtual ~Animation(); void playGroup(std::string groupname, int mode, int loops); void skipAnim(); virtual void runAnimation(float timepassed); }; } #endif