]> git.tdb.fi Git - libs/gl.git/blobdiff - source/materials/material.h
Remove collection-less constructor overloads from most loaders
[libs/gl.git] / source / materials / material.h
index 43da2542612d7ba50bbb4f4e0d2ee886f7a48483..ea02df6b1e00dad8d0dc5275399a55104c5086d5 100644 (file)
 namespace Msp {
 namespace GL {
 
+class Sampler;
+
 class Material
 {
 private:
        class Loader: public DataFile::CollectionObjectLoader<Material>
        {
        protected:
-               Loader(Material &);
                Loader(Material &, Collection &);
 
                virtual void init_actions();
@@ -40,7 +41,6 @@ protected:
        class PropertyLoader: public DataFile::DerivedObjectLoader<Material, Loader>
        {
        protected:
-               PropertyLoader(C &m): DerivedObjectLoader<Material, Loader>(m) { }
                PropertyLoader(C &m, Collection &c): DerivedObjectLoader<Material, Loader>(m, c) { }
 
                void add_property(const std::string &, void (C::*)(float), void (C::*)(const Texture *));
@@ -65,17 +65,17 @@ public:
                        void operator()(const std::string &, GenericLoader &) const;
                };
 
-               DataFile::Collection *coll;
+               DataFile::Collection &coll;
                Material *material;
                Loader *mat_loader;
 
                static ActionMap shared_actions;
 
        public:
-               GenericLoader(DataFile::Collection * = 0);
+               GenericLoader(DataFile::Collection &);
                ~GenericLoader();
 
-               Material *get_material() { Material *m = material; material = 0; return m; }
+               Material *get_object() { Material *m = material; material = 0; return m; }
        private:
                virtual void init_actions();
 
@@ -105,7 +105,7 @@ public:
 
        virtual const Tag *get_texture_tags() const = 0;
        virtual const Texture *get_texture(Tag) const = 0;
-       const Sampler *get_sampler() const { return sampler; }
+       virtual const Sampler *get_sampler(Tag) const { return sampler; }
 
        void set_debug_name(const std::string &);
 
@@ -197,10 +197,7 @@ void Material::GenericLoader::CreateMaterial<T>::operator()(const std::string &,
 
        T *mat = new T;
        ldr.material = mat;
-       if(ldr.coll)
-               ldr.mat_loader = new typename T::Loader(*mat, *ldr.coll);
-       else
-               ldr.mat_loader = new typename T::Loader(*mat);
+       ldr.mat_loader = new typename T::Loader(*mat, ldr.coll);
        ldr.add_auxiliary_loader(*ldr.mat_loader);
 }