namespace Msp {
namespace GL {
+class ResourceWatcher;
+
class ResourceManager
{
public:
private:
struct ManagedResource
{
+ enum ResourceState
+ {
+ NOT_LOADED,
+ LOAD_QUEUED,
+ LOADING,
+ LOADED
+ };
+
Resource *resource;
DataFile::Collection *collection;
std::string name;
IO::Seekable *io;
Resource::AsyncLoader *loader;
- bool loaded;
+ ResourceState state;
unsigned last_used;
UInt64 data_size;
+ std::vector<ResourceWatcher *> watchers;
ManagedResource(Resource &);
void start_loading();
void finish_loading();
void unload();
+
+ void add_watcher(ResourceWatcher &);
+ void remove_watcher(ResourceWatcher &);
};
class LoadingThread: public Thread
void resource_used(const Resource &);
void remove_resource(Resource &);
+ void watch_resource(const Resource &, ResourceWatcher &);
+ void unwatch_resource(const Resource &, ResourceWatcher &);
+
void tick();
UInt64 get_total_data_size() const;
};