OpenMW
apps/openmw/mwrender/actors.hpp
Go to the documentation of this file.
00001 #ifndef _GAME_RENDER_ACTORS_H
00002 #define _GAME_RENDER_ACTORS_H
00003 
00004 #include <openengine/ogre/renderer.hpp>
00005 
00006 namespace MWWorld
00007 {
00008     class Ptr;
00009     class CellStore;
00010     class InventoryStore;
00011 }
00012 
00013 namespace MWRender
00014 {
00015     class Animation;
00016     class RenderingManager;
00017 
00018     class Actors
00019     {
00020         typedef std::map<MWWorld::CellStore*,Ogre::SceneNode*> CellSceneNodeMap;
00021         typedef std::map<MWWorld::Ptr,Animation*> PtrAnimationMap;
00022 
00023         OEngine::Render::OgreRenderer &mRend;
00024         MWRender::RenderingManager* mRendering;
00025         Ogre::SceneNode* mRootNode;
00026 
00027         CellSceneNodeMap mCellSceneNodes;
00028         PtrAnimationMap mAllActors;
00029 
00030         void insertBegin(const MWWorld::Ptr &ptr);
00031 
00032     public:
00033         Actors(OEngine::Render::OgreRenderer& _rend, MWRender::RenderingManager* rendering)
00034             : mRend(_rend)
00035             , mRendering(rendering)
00036             , mRootNode(NULL)
00037         {}
00038         ~Actors();
00039 
00040         void setRootNode(Ogre::SceneNode* root);
00041 
00042         void insertNPC(const MWWorld::Ptr& ptr);
00043         void insertCreature (const MWWorld::Ptr& ptr);
00044         void insertActivator (const MWWorld::Ptr& ptr);
00045          bool deleteObject (const MWWorld::Ptr& ptr);
00047 
00048         void removeCell(MWWorld::CellStore* store);
00049 
00050         void update (Ogre::Camera* camera);
00051 
00053         void updateObjectCell(const MWWorld::Ptr &old, const MWWorld::Ptr &cur);
00054 
00055         Animation* getAnimation(const MWWorld::Ptr &ptr);
00056     };
00057 }
00058 #endif