#ifndef _GAME_RENDER_NPCANIMATION_H #define _GAME_RENDER_NPCANIMATION_H #include "animation.hpp" #include #include #include #include #include #include #include "../mwworld/refdata.hpp" #include "../mwworld/ptr.hpp" #include "../mwworld/environment.hpp" #include "components/nifogre/ogre_nif_loader.hpp" #include "../mwworld/inventorystore.hpp" #include "../mwclass/npc.hpp" #include "../mwworld/containerstore.hpp" namespace MWRender{ class NpcAnimation: public Animation{ private: MWWorld::InventoryStore& inv; int mStateID; //Free Parts std::pair*> chest; std::pair*> skirt; std::pair*> lhand; std::pair*> rhand; std::pair*> tail; std::pair*> lBeastFoot; std::pair*> rBeastFoot; /*Ogre::Entity* skirt; std::vector* skirtShapes; Ogre::Entity* rhand; std::vector* rhandShapes; Ogre::Entity* lhand; std::vector* lhandShapes; Ogre::Entity* tail; std::vector* tailShapes; Ogre::Entity* lBeastFoot; std::vector* lBeastFootShapes; Ogre::Entity* rBeastFoot; std::vector* rBeastFootShapes;*/ //Bounded Parts Ogre::Entity* lclavicle; Ogre::Entity* rclavicle; Ogre::Entity* rupperArm; Ogre::Entity* lupperArm; Ogre::Entity* rUpperLeg; Ogre::Entity* lUpperLeg; Ogre::Entity* lForearm; Ogre::Entity* rForearm; Ogre::Entity* lWrist; Ogre::Entity* rWrist; Ogre::Entity* rKnee; Ogre::Entity* lKnee; Ogre::Entity* neck; Ogre::Entity* rAnkle; Ogre::Entity* lAnkle; Ogre::Entity* groin; Ogre::Entity* lfoot; Ogre::Entity* rfoot; Ogre::Entity* hair; Ogre::Entity* head; Ogre::SceneNode* insert; bool isBeast; std::string headID; std::string hairID; std::string npcName; std::string bodyRaceID; public: NpcAnimation(const MWWorld::Ptr& ptr, MWWorld::Environment& _env, OEngine::Render::OgreRenderer& _rend, MWWorld::InventoryStore& _inv); virtual ~NpcAnimation(); Ogre::Entity* insertBoundedPart(const std::string &mesh, std::string bonename); std::pair*> insertFreePart(const std::string &mesh, const std::string suffix); virtual void runAnimation(float timepassed); void updateParts(); }; } #endif