quick backup:
[demo] / src / state_manager.h
1 #ifndef STATE_MANAGER_H_
2 #define STATE_MANAGER_H_
3
4 #include <gmath/gmath.h>
5 #include <map>
6
7 #include <string>
8 #include <vector>
9
10 struct State {
11         int num;
12         char *name;
13         float *data;
14 };
15
16 class StateManager {
17 private:
18         std::map<std::string, int> statemap;
19         State *get_state(const char *name);
20
21 public:
22         std::vector<State> states;
23
24         /*
25                 adds a state returns an idx:
26                 the num_floats indicates the number of floats that form
27                 the state element.
28                 For example:
29                 a float value consists of 1 float => num_floats = 1,
30                 a Vec2 consists of 2 floats, a Vec3 from 3, a Vec4 from 4
31
32                 see also:
33                 set_state(const char *name, const Mat4 &mat implementation)
34         */
35         int add_state_element(const char *name, int num_floats);
36
37         void set_state(const char *name, float value);
38         void set_state(const char *name, const Vec3 &vec);
39         void set_state(const char *name, const Vec4 &vec);
40         void set_state(const char *name, const Mat4 &mat);
41
42         const State *get_state(const char *name) const;
43         const State *get_state(int idx) const;
44 };
45
46 extern StateManager state_manager;
47
48 #endif // STATE_MANAGER_H_