1
0
Fork 0
spectre/include/Spectre/Input/InputModule.h
2016-01-10 09:26:43 +01:00

57 lines
975 B
C++

#ifndef SPECTRE_INPUT_MODULE_H
#define SPECTRE_INPUT_MODULE_H
#include <deque>
#include <vector>
#include "InputListener.h"
#include "InputEvent.h"
class Mouse;
class Keyboard;
class InputDevice;
class PlatformInput;
class InputModule
{
public :
InputModule(PlatformInput *platform);
virtual ~InputModule();
Mouse* getMouse();
Keyboard* getKeyboard();
void addInputDevice(InputDevice *device);
void registerListener(InputListener* listener);
void removeListener(InputListener* listener);
void postInputEvent(const InputEvent& event);
// NOTE: Update devices here! (for winapi, process keyboard/mouse messages)
void update();
protected :
void dispatch();
typedef std::vector<InputDevice*> InputDeviceVec;
InputDeviceVec m_devices;
Mouse *m_mouse;
Keyboard *m_keyboard;
// Buffered input queue.
std::deque<InputEvent> m_buffer;
std::vector<InputListener*> m_listeners;
PlatformInput *m_platform;
};
#endif /* SPECTRE_INPUT_MODULE_H */