Home | Namespaces | Hierarchy | Alphabetical List | Class list | Files | Namespace Members | Class members | File members |
00001 // Copyright 2006-2011 by Kat'Oun 00002 00003 #ifndef _RESOURCE_MANAGER_H_ 00004 #define _RESOURCE_MANAGER_H_ 00005 00006 #include <EngineConfig.h> 00007 #include <core/Types.h> 00008 #include <core/Singleton.h> 00009 #include <core/Math.h> 00010 #include <engine/Object.h> 00011 00012 #include <string> 00013 #include <vector> 00014 #include <list> 00015 #include <map> 00016 00017 namespace core 00018 { 00019 class ConfigFile; 00020 } 00021 00022 namespace platform 00023 { 00024 class FileSystem; 00025 } 00026 00027 namespace resource 00028 { 00029 00030 class DataStream; 00031 class Serializer; 00032 class Resource; 00033 class ResourceFactory; 00034 class LoadEventReceiver; 00035 struct LoadEvent; 00036 enum ResourceType; 00037 00044 class ENGINE_PUBLIC_EXPORT ResourceManager: public engine::Object, public core::Singleton<ResourceManager> 00045 { 00046 public: 00047 00048 ResourceManager(); 00049 ~ResourceManager(); 00050 00051 void start(); 00052 00053 void stop(); 00054 00056 Resource* createResource(const ResourceType& type, const std::string& filename); 00057 00059 void loadResources(); 00061 void unloadResources(); 00062 00063 bool loadResource(Resource* resource); 00064 void unloadResource(Resource* resource); 00065 bool reloadResource(Resource* resource); 00066 00068 void removeResource(Resource *resource); 00069 void removeResource(const u32& id); 00070 00071 void removeAllResources(); 00072 00074 Resource* find(const u32& id); 00075 00077 Resource* find(const ResourceType& type, const u32& id); 00078 00079 void registerResourceFactory(const ResourceType& type, ResourceFactory* factory); 00080 void removeResourceFactory(const ResourceType& type); 00081 00082 void registerSerializer(const ResourceType& type, Serializer* serializer); 00083 void removeSerializer(const ResourceType& type); 00084 00087 void setPaths(const std::string& resourcesfile); 00088 00090 void addSearchPath(const std::string& path, const std::string& type); 00091 00092 DataStream* openResource(const std::string& filename); 00093 00094 void addLoadEventReceiver(LoadEventReceiver* newEventReceiver); 00095 void removeLoadEventReceiver(LoadEventReceiver* oldEventReceiver); 00096 00098 u32 getMemoryBudget() const; 00099 00101 u32 getMemoryUsage() const; 00102 00103 static ResourceManager* getInstance(); 00104 00105 protected: 00106 00107 void initializeImpl(); 00108 void uninitializeImpl(); 00109 void updateImpl(f32 elapsedTime); 00110 00111 core::ConfigFile* mConfigFile; 00112 00113 std::list<LoadEventReceiver*> mLoadEventReceivers; 00114 00115 std::map<std::string, platform::FileSystem*> mFiles; 00116 00118 std::vector<std::list<Resource*>> mLoadResources; 00119 00120 std::vector<ResourceFactory*> mResourceFactories; 00121 00122 std::vector<Serializer*> mSerializers; 00123 00125 std::map<u32, Resource*> mResources; 00126 std::map<std::string, Resource*> mResourcesByFilename; 00127 00128 u32 mMemoryBudget; // In bytes 00129 u32 mMemoryUsage; // In bytes 00130 00131 u32 mTotalLoadSize; 00132 u32 mLoadedSize; 00133 00134 LoadEvent* mLoadEvent; 00135 00136 void fireLoadStarted(); 00137 00138 void fireLoadUpdate(); 00139 00140 void fireLoadEnded(); 00141 }; 00142 00143 }// end namespace resource 00144 00145 #endif
The KG Game Engine
Documentation © 2006-2011 by Kat'Oun. Generated on Sat Jul 2 2011 00:50:05 by
Doxygen
(1.7.4)
|