57 lines
975 B
C++
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 */
|