namespace Msp {
namespace GL {
-class Texturing;
+class Sampler;
class Material
{
class Loader: public DataFile::CollectionObjectLoader<Material>
{
protected:
- Loader(Material &);
Loader(Material &, Collection &);
virtual void init_actions();
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 *));
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();
public:
virtual ~Material() { }
- virtual const Program *create_compatible_shader(DataFile::Collection &, const std::map<std::string, int> & = std::map<std::string, int>()) const;
+ virtual const Program *create_compatible_shader(const std::map<std::string, int> & = std::map<std::string, int>()) const;
protected:
virtual void fill_program_info(std::string &, std::map<std::string, int> &) const = 0;
/** Returns the uniforms for the material. */
const ProgramData &get_shader_data() const { return shdata; }
-protected:
- DEPRECATED void attach_texture_to(const Texture *, Texturing &, ProgramData &, const std::string &) const;
-public:
- DEPRECATED virtual void attach_textures_to(Texturing &, ProgramData &) const = 0;
-
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 &);
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);
}