#ifndef __ResourceManager_H__ #define __ResourceManager_H__ #include #include #include #include #include "common.h" class igzstream; namespace CHCDemoEngine { class SceneEntity; class Material; class Geometry; class Texture; class Matrix4x4; class Transform3; /** Loads a scene and also handles the cleanup */ class ResourceManager { public: ~ResourceManager(); /** Loads a model */ bool Load(const std::string &filename, SceneEntityContainer &geometry); int GetNumEntities() const { return (int)mSceneEntities.size(); } protected: void LoadTextures(igzstream &str); void LoadShapes(igzstream &str); void LoadSceneEntities(igzstream &str, SceneEntityContainer &entities); SceneEntity *LoadSceneEntity(igzstream &str); Material *LoadMaterial(igzstream &str); Geometry *LoadGeometry(igzstream &str); std::map mTextureTable; std::map mMaterialTable; std::map mGeometryTable; //std::map mShapesTable; // these are kept to be able to delete these resources afterwards std::vector mTextures; std::vector mMaterials; std::vector mGeometry; std::vector mTrafos; ShapeContainer mShapes; LODContainer mLODs; //////// /// the scene entities SceneEntityContainer mSceneEntities; }; } #endif