OpenMW
|
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