// // Lol Engine // // Copyright: (c) 2010-2013 Benjamin Litzelmann // This program is free software; you can redistribute it and/or // modify it under the terms of the Do What The Fuck You Want To // Public License, Version 2, as published by Sam Hocevar. See // http://www.wtfpl.net/ for more details. // #pragma once namespace lol { /** Internal class (not public) that allows to construct an InputDevice * dynamically, when the keys, axis and cursors are not known at * compile time. */ class InputDeviceInternal : InputDevice { public: inline InputDeviceInternal(char const * name) : InputDevice(name) { } void AddKey(int id, char const * name); inline void AddKey(char const * name) { AddKey(-1, name); } void AddAxis(int id, char const * name, float sensitivity = 1.0f); inline void AddAxis(char const * name, float sensitivity = 1.0f) { AddAxis(-1, name, sensitivity); } void AddCursor(int id, char const * name); inline void AddCursor(char const * name) { AddCursor(-1, name); } void SetKey(int id, bool state) { m_keys[id] = state; } void AddText(String const &text) { m_text += text; } void SetAxis(int id, float value) { m_axis[id].m1 = value; } void SetCursor(int id, vec2 const & position, ivec2 const & pixel) { m_cursors[id].m1 = position; m_cursors[id].m2 = pixel; } ivec2 GetCursorPixelPos(int id) { return m_cursors[id].m2; } static bool GetMouseCapture() { return m_capturemouse; } static InputDeviceInternal* CreateStandardKeyboard(); static InputDeviceInternal* CreateStandardMouse(); }; } /* namespace lol */