#ifndef _OBJECTMANAGER_H #define _OBJECTMANAGER_H #include #include #include "ps/CStr.h" #include "ObjectBase.h" class CObjectEntry; class CEntityTemplate; class CMatrix3D; class CMeshManager; /////////////////////////////////////////////////////////////////////////////////////////// // CObjectManager: manager class for all possible actor types class CObjectManager : boost::noncopyable { public: struct ObjectKey { ObjectKey(const CStr& name, const std::vector& var) : ActorName(name), ActorVariation(var) {} CStr ActorName; std::vector ActorVariation; }; public: // constructor, destructor CObjectManager(CMeshManager& meshManager); ~CObjectManager(); CMeshManager& GetMeshManager() const { return m_MeshManager; } void UnloadObjects(); CObjectEntry* FindObject(const char* objname); void DeleteObject(CObjectEntry* entry); CObjectBase* FindObjectBase(const char* objname); CObjectEntry* FindObjectVariation(const char* objname, const std::vector >& selections); CObjectEntry* FindObjectVariation(CObjectBase* base, const std::vector >& selections); // Get all names, quite slowly. (Intended only for Atlas.) static void GetAllObjectNames(std::vector& names); static void GetPropObjectNames(std::vector& names); private: CMeshManager& m_MeshManager; std::map m_Objects; std::map m_ObjectBases; }; // Global comparison operator bool operator< (const CObjectManager::ObjectKey& a, const CObjectManager::ObjectKey& b); #endif