Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2009-02-08 13:13:11 +0000
committerStijn Buys <ingar@osirion.org>2009-02-08 13:13:11 +0000
commitc8a6ff1c0693ca1bd9025dcbdd7c22e3d193f8dd (patch)
tree67b9568002fa77ea34aa993362fd53636f70fca8 /src/model/material.h
parent43f7733dfdd8700430a238d230ed573c12e72c87 (diff)
materials registry, read shaderlist.txt
Diffstat (limited to 'src/model/material.h')
-rw-r--r--src/model/material.h47
1 files changed, 46 insertions, 1 deletions
diff --git a/src/model/material.h b/src/model/material.h
index bdfee68..8081792 100644
--- a/src/model/material.h
+++ b/src/model/material.h
@@ -7,13 +7,58 @@
#ifndef __INCLUDED_MODEL_MATERIAL_H__
#define __INCLUDED_MODEL_MATERIAL_H__
+#include <string>
+#include <map>
+
namespace model
{
+/// fragment surface material parameters
class Material
{
public:
- enum Flags { None=0, Primary=1, Secondary=2, Tertiary=3, Dark=4, Light=8, Engine=16};
+ /// surface flags
+ enum SurfaceFlags { None=0, Primary=1, Secondary=2, Tertiary=3, Dark=4, Light=8, Engine=16};
+
+ /// type definition for the material registry
+ typedef std::map<std::string, Material *> Registry;
+
+ Material(const std::string &name);
+ ~Material();
+
+ inline const std::string &name() { return material_name; }
+
+/* ---- static ----------------------------------------------------- */
+
+ /**
+ * @brief initialize materials
+ * reads materials from the shader files
+ */
+ static void init();
+
+ /// clear all materials
+ static void shutdown();
+
+ /// clear all materials
+ static void clear();
+
+ /// list registered materials
+ static void list();
+
+ /// add a material to the registry
+ static void add(Material *material);
+
+ /// find a material in the registry
+ static Material *find(const std::string &name);
+
+private:
+
+ std::string material_name;
+
+ /// the material registry
+ static Registry material_registry;
+
+ static void load_shader(const std::string &shadername);
};
}