]> git.tdb.fi Git - libs/gl.git/commitdiff
Pass the resource collection to async loaders
authorMikko Rasa <tdb@tdb.fi>
Sun, 20 Sep 2015 11:18:27 +0000 (14:18 +0300)
committerMikko Rasa <tdb@tdb.fi>
Sun, 20 Sep 2015 11:20:26 +0000 (14:20 +0300)
This way they can access the loading parameters specified in that
collection.

source/mesh.cpp
source/mesh.h
source/resource.h
source/resourcemanager.cpp
source/texture1d.h
source/texture2d.cpp
source/texture2d.h
source/texture3d.h
source/texturecube.h

index 44568697f4f6dfd46aca884b9a6ebb8cffc05db3..8f7c517b2b5360a57d69bded3aed38d32b9ab58c 100644 (file)
@@ -200,7 +200,7 @@ void Mesh::unbind()
                glBindVertexArray(0);
 }
 
-Resource::AsyncLoader *Mesh::load(IO::Seekable &io)
+Resource::AsyncLoader *Mesh::load(IO::Seekable &io, const Resources *)
 {
        return new AsyncLoader(*this, io);
 }
index 388d4d8806affd4d63901be8b7335a7bc7a85f55..7e455cd97211638938daa191b3281925fde1fb31 100644 (file)
@@ -95,7 +95,7 @@ public:
 
        static void unbind();
 
-       virtual Resource::AsyncLoader *load(IO::Seekable &);
+       virtual Resource::AsyncLoader *load(IO::Seekable &, const Resources * = 0);
        virtual UInt64 get_data_size() const;
        virtual void unload();
 };
index 8d34c357fe6b93ba85862fd1df50b1620066a8ca..09d60e44917eb6e6e06a4476e42b3a75d4257bcd 100644 (file)
@@ -8,6 +8,7 @@ namespace Msp {
 namespace GL {
 
 class ResourceManager;
+class Resources;
 
 class Resource
 {
@@ -34,7 +35,7 @@ public:
        void set_manager(ResourceManager *);
        ResourceManager *get_manager() const { return manager; }
        void *get_manager_data() const { return manager_data; }
-       virtual AsyncLoader *load(IO::Seekable &) = 0;
+       virtual AsyncLoader *load(IO::Seekable &, const Resources * = 0) = 0;
        virtual bool is_loaded() const;
        virtual UInt64 get_data_size() const = 0;
        virtual void unload() = 0;
index 733cfaff8c4c37ba5ae1ffbd605ceb3f8d6a58df..481e9a176b00b038b04f412f2c841448ba46dad9 100644 (file)
@@ -4,6 +4,7 @@
 #include <msp/strings/format.h>
 #include <msp/time/utils.h>
 #include "resourcemanager.h"
+#include "resources.h"
 #include "resourcewatcher.h"
 
 using namespace std;
@@ -283,7 +284,8 @@ void ResourceManager::ManagedResource::start_loading()
        if(!io)
                throw resource_load_error(location.name, "open failed");
 
-       loader = resource->load(*io);
+       const Resources *res = dynamic_cast<Resources *>(location.collection);
+       loader = resource->load(*io, res);
        if(!loader)
        {
                delete io;
index ea673c3b8b8a606326e78963cdbe30b35fb3cc50..63b25c138756c8c6a44bd635e341cab9810332f9 100644 (file)
@@ -27,7 +27,7 @@ private:
        unsigned get_level_size(unsigned);
 
 public:
-       virtual AsyncLoader *load(IO::Seekable &) { return 0; }
+       virtual AsyncLoader *load(IO::Seekable &, const Resources * = 0) { return 0; }
        virtual UInt64 get_data_size() const;
        virtual void unload() { }
 };
index 7cad81d92a5e44e2717bbaf88f1c35d166fa8dc3..28b07bfe614761cc800ede69abc237d40fb844e2 100644 (file)
@@ -136,7 +136,7 @@ void Texture2D::get_level_size(unsigned level, unsigned &w, unsigned &h)
                h = 1;
 }
 
-Resource::AsyncLoader *Texture2D::load(IO::Seekable &io)
+Resource::AsyncLoader *Texture2D::load(IO::Seekable &io, const Resources *)
 {
        return new AsyncLoader(*this, io);
 }
index eba3286fee15fddce63b67e503f551990b0bf65d..7504f321d218543ea151700ed819cdd0eb9cb96d 100644 (file)
@@ -85,7 +85,7 @@ private:
        void get_level_size(unsigned, unsigned &, unsigned &);
 
 public:
-       virtual Resource::AsyncLoader *load(IO::Seekable &);
+       virtual Resource::AsyncLoader *load(IO::Seekable &, const Resources * = 0);
        virtual UInt64 get_data_size() const;
        virtual void unload();
 };
index fa4c050f039c38f9a0734b0f6ec11ec21082e92b..c55a3c1ae3bffd40be72d97183e0fbbebe86bd7e 100644 (file)
@@ -62,7 +62,7 @@ private:
        void get_level_size(unsigned, unsigned &, unsigned &, unsigned &);
 
 public:
-       virtual AsyncLoader *load(IO::Seekable &) { return 0; }
+       virtual AsyncLoader *load(IO::Seekable &, const Resources * = 0) { return 0; }
        virtual UInt64 get_data_size() const;
        virtual void unload() { }
 };
index fe343c7390630de1ad6fdc9a1f3a2cbc3ebfcdda..4530a97ac8525d4719af598c9ed1757edfbbf47b 100644 (file)
@@ -103,7 +103,7 @@ public:
        /** Returns a vector pointing to the center a texel. */
        Vector3 get_texel_direction(TextureCubeFace, unsigned, unsigned);
 
-       virtual AsyncLoader *load(IO::Seekable &) { return 0; }
+       virtual AsyncLoader *load(IO::Seekable &, const Resources * = 0) { return 0; }
        virtual UInt64 get_data_size() const;
        virtual void unload() { }
 };