Make various instance stuff to take references to other instance objs
[lsnes.git] / include / core / multitrack.hpp
blobbccb4a547a960fdfbd518e32b377c90b7b1b31ce
1 #ifndef _multitrack__hpp__included__
2 #define _multitrack__hpp__included__
4 #include <map>
5 #include "library/threads.hpp"
6 #include "library/controller-data.hpp"
7 #include "core/movie.hpp"
9 class multitrack_edit
11 public:
12 enum state
14 MT_PRESERVE,
15 MT_OVERWRITE,
16 MT_OR,
17 MT_XOR
19 multitrack_edit(movie_logic& _mlogic, controller_state& _controls);
20 void enable(bool state);
21 void set(unsigned port, unsigned controller, state s);
22 void set_and_notify(unsigned port, unsigned controller, state s);
23 void rotate(bool forward);
24 state get(unsigned port, unsigned controller);
25 bool is_enabled();
26 void config_altered();
27 void process_frame(controller_frame& input);
28 bool any_records();
29 private:
30 threads::lock mlock;
31 bool enabled;
32 std::map<std::pair<unsigned, unsigned>, state> controllerstate;
33 movie_logic& mlogic;
34 controller_state& controls;
37 #endif