3 This file is part of libmspgl
4 Copyright © 2007 Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
11 #include "objectpass.h"
21 Stores a complete multipass rendering technique for an Object. This includes
22 shaders, textures and a material. A Technique can also specify empty texture
23 slots which Objects must override.
28 class Loader: public Msp::DataFile::Loader
31 typedef DataFile::Collection Collection;
38 Loader(Technique &, Collection &);
40 Technique &get_object() const { return tech; }
41 Collection &get_collection() const { return coll; }
43 virtual void finish();
44 void material_inline();
45 void pass(const std::string &);
46 void shader(const std::string &);
47 void shader_texture(const std::string &);
48 void texture(const std::string &);
49 void texture_slot(const std::string &);
56 const Texture *texture;
58 TextureSlot(): texture(0) { }
61 typedef std::map<Tag, ObjectPass> PassMap;
63 std::vector<TextureSlot> textures;
64 const Texture *main_texture;
66 ObjectPass *normal_pass;
67 const Material *material;
73 bool has_pass(const GL::Tag &) const;
74 const ObjectPass &get_pass(const GL::Tag &) const;
75 unsigned get_n_textures() const { return textures.size(); }
76 unsigned get_texture_index(const std::string &) const;
77 const Texture *get_texture(unsigned) const;
78 const Texture *get_main_texture() const { return main_texture; }
79 const Material *get_material() const { return material; }