#ifndef SPECTRE_INPUT_MODULE_H #define SPECTRE_INPUT_MODULE_H #include #include #include "InputListener.h" #include "InputEvent.h" namespace sp { 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 InputDeviceVec; InputDeviceVec m_devices; Mouse *m_mouse; Keyboard *m_keyboard; // Buffered input queue. std::deque m_buffer; std::vector m_listeners; PlatformInput *m_platform; }; } // namespace sp #endif /* SPECTRE_INPUT_MODULE_H */