Changeset 1755 for code/trunk/src/core/input/InputInterfaces.h
- Timestamp:
- Sep 10, 2008, 1:37:36 AM (16 years ago)
- Location:
- code/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
code/trunk
- Property svn:mergeinfo changed
/code/branches/gui (added) merged: 1636,1638,1640-1647,1649-1654,1656,1659-1665,1670,1672-1674,1686,1688-1692,1694-1697,1704 /code/branches/input (added) merged: 1629-1630
- Property svn:mergeinfo changed
-
code/trunk/src/core/input/InputInterfaces.h
r1556 r1755 28 28 29 29 /** 30 @file 31 @brief Declarations of various interface classes for the input management. 30 @file 31 @brief 32 Declarations of various interface classes for the input management. 32 33 */ 33 34 … … 37 38 #include "core/CorePrereqs.h" 38 39 39 #include " src/ois/OISKeyboard.h"40 #include " src/ois/OISMouse.h"41 #include " src/ois/OISJoyStick.h"40 #include "ois/OISKeyboard.h" 41 #include "ois/OISMouse.h" 42 #include "ois/OISJoyStick.h" 42 43 #include "util/Math.h" 43 44 44 45 namespace orxonox 45 46 { 46 namespace KeyCode 47 { 48 // note: KeyCode comments were directly taken from OISKeyboard.h 49 enum Enum 50 { 51 Unassigned = OIS::KC_UNASSIGNED, 52 Escape = OIS::KC_ESCAPE, 53 NumRow1 = OIS::KC_1, 54 NumRow2 = OIS::KC_2, 55 NumRow3 = OIS::KC_3, 56 NumRow4 = OIS::KC_4, 57 NumRow5 = OIS::KC_5, 58 NumRow6 = OIS::KC_6, 59 NumRow7 = OIS::KC_7, 60 NumRow8 = OIS::KC_8, 61 NumRow9 = OIS::KC_9, 62 NumRow0 = OIS::KC_0, 63 Minus = OIS::KC_MINUS, // - on main keyboard 64 Equals = OIS::KC_EQUALS, 65 Back = OIS::KC_BACK, // backspace 66 Tab = OIS::KC_TAB, 67 Q = OIS::KC_Q, 68 W = OIS::KC_W, 69 E = OIS::KC_E, 70 R = OIS::KC_R, 71 T = OIS::KC_T, 72 Y = OIS::KC_Y, 73 U = OIS::KC_U, 74 I = OIS::KC_I, 75 O = OIS::KC_O, 76 P = OIS::KC_P, 77 LeftBracket = OIS::KC_LBRACKET, 78 RightBracket = OIS::KC_RBRACKET, 79 Return = OIS::KC_RETURN, // Enter on main keyboard 80 LeftControl = OIS::KC_LCONTROL, 81 A = OIS::KC_A, 82 S = OIS::KC_S, 83 D = OIS::KC_D, 84 F = OIS::KC_F, 85 G = OIS::KC_G, 86 H = OIS::KC_H, 87 J = OIS::KC_J, 88 K = OIS::KC_K, 89 L = OIS::KC_L, 90 Semicolon = OIS::KC_SEMICOLON, 91 Apostrophe = OIS::KC_APOSTROPHE, 92 Grave = OIS::KC_GRAVE, // accent 93 LeftShift = OIS::KC_LSHIFT, 94 Backslash = OIS::KC_BACKSLASH, 95 Z = OIS::KC_Z, 96 X = OIS::KC_X, 97 C = OIS::KC_C, 98 V = OIS::KC_V, 99 B = OIS::KC_B, 100 N = OIS::KC_N, 101 M = OIS::KC_M, 102 Comma = OIS::KC_COMMA, 103 Period = OIS::KC_PERIOD, // . on main keyboard 104 Slash = OIS::KC_SLASH, // / on main keyboard 105 RightShift = OIS::KC_RSHIFT, 106 Multiply = OIS::KC_MULTIPLY, // * on numeric keypad 107 LeftAlt = OIS::KC_LMENU, // left Alt 108 Space = OIS::KC_SPACE, 109 CapsLock = OIS::KC_CAPITAL, 110 F1 = OIS::KC_F1, 111 F2 = OIS::KC_F2, 112 F3 = OIS::KC_F3, 113 F4 = OIS::KC_F4, 114 F5 = OIS::KC_F5, 115 F6 = OIS::KC_F6, 116 F7 = OIS::KC_F7, 117 F8 = OIS::KC_F8, 118 F9 = OIS::KC_F9, 119 F10 = OIS::KC_F10, 120 Numlock = OIS::KC_NUMLOCK, 121 Scrolllock = OIS::KC_SCROLL, // Scroll Lock 122 Numpad7 = OIS::KC_NUMPAD7, 123 Numpad8 = OIS::KC_NUMPAD8, 124 Numpad9 = OIS::KC_NUMPAD9, 125 NumpadSubtract= OIS::KC_SUBTRACT, // - on numeric keypad 126 Numpad4 = OIS::KC_NUMPAD4, 127 Numpad5 = OIS::KC_NUMPAD5, 128 Numpad6 = OIS::KC_NUMPAD6, 129 NumpadAdd = OIS::KC_ADD, // + on numeric keypad 130 Numpad1 = OIS::KC_NUMPAD1, 131 Numpad2 = OIS::KC_NUMPAD2, 132 Numpad3 = OIS::KC_NUMPAD3, 133 Numpad0 = OIS::KC_NUMPAD0, 134 NumpadPeriod = OIS::KC_DECIMAL, // . on numeric keypad 135 LessThan = OIS::KC_OEM_102, // < > | on UK/Germany keyboards 136 F11 = OIS::KC_F11, 137 F12 = OIS::KC_F12, 138 F13 = OIS::KC_F13, // (NEC PC98) 139 F14 = OIS::KC_F14, // (NEC PC98) 140 F15 = OIS::KC_F15, // (NEC PC98) 141 Kana = OIS::KC_KANA, // (Japanese keyboard) 142 ABNT_C1 = OIS::KC_ABNT_C1, // / ? on Portugese (Brazilian) keyboards 143 Convert = OIS::KC_CONVERT, // (Japanese keyboard) 144 NoConvert = OIS::KC_NOCONVERT, // (Japanese keyboard) 145 Yen = OIS::KC_YEN, // (Japanese keyboard) 146 ABNT_C2 = OIS::KC_ABNT_C2, // Numpad . on Portugese (Brazilian) keyboards 147 NumpadEquals = OIS::KC_NUMPADEQUALS, // = on numeric keypad (NEC PC98) 148 PreviousTrack = OIS::KC_PREVTRACK, // Previous Track (KC_CIRCUMFLEX on Japanese keyboard) 149 AT = OIS::KC_AT, // (NEC PC98) 150 Colon = OIS::KC_COLON, // (NEC PC98) 151 Underline = OIS::KC_UNDERLINE, // (NEC PC98) 152 Kanji = OIS::KC_KANJI, // (Japanese keyboard) 153 Stop = OIS::KC_STOP, // (NEC PC98) 154 AX = OIS::KC_AX, // (Japan AX) 155 Unlabeled = OIS::KC_UNLABELED, // (J3100) 156 NextTrack = OIS::KC_NEXTTRACK, // Next Track 157 NumpadEnter = OIS::KC_NUMPADENTER, // Enter on numeric keypad 158 RightControl = OIS::KC_RCONTROL, 159 Mute = OIS::KC_MUTE, // Mute 160 Calculator = OIS::KC_CALCULATOR, // Calculator 161 PlayPause = OIS::KC_PLAYPAUSE, // Play / Pause 162 MediaStop = OIS::KC_MEDIASTOP, // Media Stop 163 VolumeDown = OIS::KC_VOLUMEDOWN, // Volume - 164 VolumeUp = OIS::KC_VOLUMEUP, // Volume + 165 WebHome = OIS::KC_WEBHOME, // Web home 166 NumpadComma = OIS::KC_NUMPADCOMMA, // , on numeric keypad (NEC PC98) 167 Divide = OIS::KC_DIVIDE, // / on numeric keypad 168 SYSRQ = OIS::KC_SYSRQ, 169 RightAlt = OIS::KC_RMENU, // right Alt 170 Pause = OIS::KC_PAUSE, // Pause 171 Home = OIS::KC_HOME, // Home on arrow keypad 172 Up = OIS::KC_UP, // UpArrow on arrow keypad 173 PageUp = OIS::KC_PGUP, // PgUp on arrow keypad 174 Left = OIS::KC_LEFT, // LeftArrow on arrow keypad 175 Right = OIS::KC_RIGHT, // RightArrow on arrow keypad 176 End = OIS::KC_END, // End on arrow keypad 177 Down = OIS::KC_DOWN, // DownArrow on arrow keypad 178 PageDown = OIS::KC_PGDOWN, // PgDn on arrow keypad 179 Insert = OIS::KC_INSERT, // Insert on arrow keypad 180 Delete = OIS::KC_DELETE, // Delete on arrow keypad 181 LeftWindows = OIS::KC_LWIN, // Left Windows key 182 RightWindows = OIS::KC_RWIN, // Right Windows key 183 Apps = OIS::KC_APPS, // AppMenu key 184 Power = OIS::KC_POWER, // System Power 185 Sleep = OIS::KC_SLEEP, // System Sleep 186 Wake = OIS::KC_WAKE, // System Wake 187 WebSearch = OIS::KC_WEBSEARCH, // Web Search 188 WebFavorites = OIS::KC_WEBFAVORITES, // Web Favorites 189 WebRefresh = OIS::KC_WEBREFRESH, // Web Refresh 190 WebStop = OIS::KC_WEBSTOP, // Web Stop 191 WebForward = OIS::KC_WEBFORWARD, // Web Forward 192 WebBack = OIS::KC_WEBBACK, // Web Back 193 MyComputer = OIS::KC_MYCOMPUTER, // My Computer 194 Mail = OIS::KC_MAIL, // Mail 195 MediaSelect = OIS::KC_MEDIASELECT // Media Select 196 }; 197 } 198 199 namespace MouseButton 200 { 201 enum Enum 202 { 203 Left = OIS::MB_Left, 204 Right = OIS::MB_Right, 205 Middle = OIS::MB_Middle, 206 Button3 = OIS::MB_Button3, 207 Button4 = OIS::MB_Button4, 208 Button5 = OIS::MB_Button5, 209 Button6 = OIS::MB_Button6, 210 Button7 = OIS::MB_Button7 211 }; 212 } 213 214 namespace KeyboardModifier 215 { 216 enum Enum 217 { 218 Shift = 0x0000001, 219 Ctrl = 0x0000010, 220 Alt = 0x0000100 221 }; 222 } 223 224 struct _CoreExport Key 225 { 226 Key(const OIS::KeyEvent& evt) : key((KeyCode::Enum)evt.key), text(evt.text) { } 227 KeyCode::Enum key; 228 unsigned int text; 229 }; 230 231 class _CoreExport KeyEvent 232 { 233 public: 234 KeyEvent(KeyCode::Enum key, unsigned int text) : key(key), text(text) { } 235 KeyEvent(const OIS::KeyEvent& evt, unsigned int mod) : key((KeyCode::Enum)evt.key), text(evt.text), modifiers(mod) { } 236 KeyEvent(const Key& key, unsigned int mod) : key(key.key), text(key.text), modifiers(mod) { } 237 bool isModifierDown(KeyboardModifier::Enum modifier) const { return (KeyboardModifier::Enum)modifier&modifiers; } 238 239 const KeyCode::Enum key; 240 unsigned int text; 241 unsigned int modifiers; 242 }; 243 244 //typedef OIS::MouseState MouseState; 245 246 /*class _CoreExport JoyStickState 247 { 248 public: 249 JoyStickState(const OIS::JoyStickState& state, int ID) : OIS::JoyStickState(state), mJoyStickID(ID) { } 250 JoyStickState() { clear(); } 251 int mJoyStickID; 252 JoyStickState() { clear(); } 253 254 std::vector<bool> mButtons; 255 int axes[16]; 256 std::vector<Vector3> mVectors; 257 };*/ 258 259 /** 260 * Helper struct to determine which handlers of an object (can implement 261 * multiple handlers) are active. 262 */ 263 struct HandlerState 264 { 265 HandlerState() : key(false), mouse(false), joyStick(false) { } 266 bool key; 267 bool mouse; 268 bool joyStick; 269 }; 270 271 class _CoreExport InputTickable 272 { 273 public: 274 virtual ~InputTickable() { } 275 virtual void tickInput(float dt, const HandlerState& state) = 0; 276 }; 277 278 /** 279 @brief Interface class used for key input listeners. 280 */ 281 class _CoreExport KeyHandler : virtual public InputTickable 282 { 283 public: 284 virtual ~KeyHandler() { } 285 virtual void keyPressed (const KeyEvent& evt) = 0; 286 virtual void keyReleased(const KeyEvent& evt) = 0; 287 virtual void keyHeld (const KeyEvent& evt) = 0; 288 //virtual void tickKey (float dt) { } 289 }; 290 291 /** 292 @brief Interface class used for mouse input listeners. 293 */ 294 class _CoreExport MouseHandler : virtual public InputTickable 295 { 296 public: 297 virtual ~MouseHandler() { } 298 virtual void mouseButtonPressed (MouseButton::Enum id) = 0; 299 virtual void mouseButtonReleased(MouseButton::Enum id) = 0; 300 virtual void mouseButtonHeld (MouseButton::Enum id) = 0; 301 virtual void mouseMoved (IntVector2 abs, IntVector2 rel, IntVector2 clippingSize) = 0; 302 virtual void mouseScrolled (int abs, int rel) = 0; 303 //virtual void tickMouse (float dt) { } 304 }; 305 306 307 /** 308 @brief Interface class used for joy stick input listeners. 309 */ 310 class _CoreExport JoyStickHandler : virtual public InputTickable 311 { 312 public: 313 virtual ~JoyStickHandler() { } 314 virtual void joyStickButtonPressed (int joyStickID, int button) = 0; 315 virtual void joyStickButtonReleased(int joyStickID, int button) = 0; 316 virtual void joyStickButtonHeld (int joyStickID, int button) = 0; 317 virtual void joyStickAxisMoved (int joyStickID, int axis, float value) = 0; 318 //virtual bool joyStickVector3Moved (int joyStickID, int index /*, fill list*/) {return true;} 319 //virtual void tickJoyStick (float dt) { } 320 }; 47 namespace KeyCode 48 { 49 // note: KeyCode comments were directly copied from OISKeyboard.h 50 enum Enum 51 { 52 Unassigned = OIS::KC_UNASSIGNED, 53 Escape = OIS::KC_ESCAPE, 54 NumRow1 = OIS::KC_1, 55 NumRow2 = OIS::KC_2, 56 NumRow3 = OIS::KC_3, 57 NumRow4 = OIS::KC_4, 58 NumRow5 = OIS::KC_5, 59 NumRow6 = OIS::KC_6, 60 NumRow7 = OIS::KC_7, 61 NumRow8 = OIS::KC_8, 62 NumRow9 = OIS::KC_9, 63 NumRow0 = OIS::KC_0, 64 Minus = OIS::KC_MINUS, // - on main keyboard 65 Equals = OIS::KC_EQUALS, 66 Back = OIS::KC_BACK, // backspace 67 Tab = OIS::KC_TAB, 68 Q = OIS::KC_Q, 69 W = OIS::KC_W, 70 E = OIS::KC_E, 71 R = OIS::KC_R, 72 T = OIS::KC_T, 73 Y = OIS::KC_Y, 74 U = OIS::KC_U, 75 I = OIS::KC_I, 76 O = OIS::KC_O, 77 P = OIS::KC_P, 78 LeftBracket = OIS::KC_LBRACKET, 79 RightBracket = OIS::KC_RBRACKET, 80 Return = OIS::KC_RETURN, // Enter on main keyboard 81 LeftControl = OIS::KC_LCONTROL, 82 A = OIS::KC_A, 83 S = OIS::KC_S, 84 D = OIS::KC_D, 85 F = OIS::KC_F, 86 G = OIS::KC_G, 87 H = OIS::KC_H, 88 J = OIS::KC_J, 89 K = OIS::KC_K, 90 L = OIS::KC_L, 91 Semicolon = OIS::KC_SEMICOLON, 92 Apostrophe = OIS::KC_APOSTROPHE, 93 Grave = OIS::KC_GRAVE, // accent 94 LeftShift = OIS::KC_LSHIFT, 95 Backslash = OIS::KC_BACKSLASH, 96 Z = OIS::KC_Z, 97 X = OIS::KC_X, 98 C = OIS::KC_C, 99 V = OIS::KC_V, 100 B = OIS::KC_B, 101 N = OIS::KC_N, 102 M = OIS::KC_M, 103 Comma = OIS::KC_COMMA, 104 Period = OIS::KC_PERIOD, // . on main keyboard 105 Slash = OIS::KC_SLASH, // / on main keyboard 106 RightShift = OIS::KC_RSHIFT, 107 Multiply = OIS::KC_MULTIPLY, // * on numeric keypad 108 LeftAlt = OIS::KC_LMENU, // left Alt 109 Space = OIS::KC_SPACE, 110 CapsLock = OIS::KC_CAPITAL, 111 F1 = OIS::KC_F1, 112 F2 = OIS::KC_F2, 113 F3 = OIS::KC_F3, 114 F4 = OIS::KC_F4, 115 F5 = OIS::KC_F5, 116 F6 = OIS::KC_F6, 117 F7 = OIS::KC_F7, 118 F8 = OIS::KC_F8, 119 F9 = OIS::KC_F9, 120 F10 = OIS::KC_F10, 121 Numlock = OIS::KC_NUMLOCK, 122 Scrolllock = OIS::KC_SCROLL, // Scroll Lock 123 Numpad7 = OIS::KC_NUMPAD7, 124 Numpad8 = OIS::KC_NUMPAD8, 125 Numpad9 = OIS::KC_NUMPAD9, 126 NumpadSubtract= OIS::KC_SUBTRACT, // - on numeric keypad 127 Numpad4 = OIS::KC_NUMPAD4, 128 Numpad5 = OIS::KC_NUMPAD5, 129 Numpad6 = OIS::KC_NUMPAD6, 130 NumpadAdd = OIS::KC_ADD, // + on numeric keypad 131 Numpad1 = OIS::KC_NUMPAD1, 132 Numpad2 = OIS::KC_NUMPAD2, 133 Numpad3 = OIS::KC_NUMPAD3, 134 Numpad0 = OIS::KC_NUMPAD0, 135 NumpadPeriod = OIS::KC_DECIMAL, // . on numeric keypad 136 LessThan = OIS::KC_OEM_102, // < > | on UK/Germany keyboards 137 F11 = OIS::KC_F11, 138 F12 = OIS::KC_F12, 139 F13 = OIS::KC_F13, // (NEC PC98) 140 F14 = OIS::KC_F14, // (NEC PC98) 141 F15 = OIS::KC_F15, // (NEC PC98) 142 Kana = OIS::KC_KANA, // (Japanese keyboard) 143 ABNT_C1 = OIS::KC_ABNT_C1, // / ? on Portugese (Brazilian) keyboards 144 Convert = OIS::KC_CONVERT, // (Japanese keyboard) 145 NoConvert = OIS::KC_NOCONVERT, // (Japanese keyboard) 146 Yen = OIS::KC_YEN, // (Japanese keyboard) 147 ABNT_C2 = OIS::KC_ABNT_C2, // Numpad . on Portugese (Brazilian) keyboards 148 NumpadEquals = OIS::KC_NUMPADEQUALS, // = on numeric keypad (NEC PC98) 149 PreviousTrack = OIS::KC_PREVTRACK, // Previous Track (KC_CIRCUMFLEX on Japanese keyboard) 150 AT = OIS::KC_AT, // (NEC PC98) 151 Colon = OIS::KC_COLON, // (NEC PC98) 152 Underline = OIS::KC_UNDERLINE, // (NEC PC98) 153 Kanji = OIS::KC_KANJI, // (Japanese keyboard) 154 Stop = OIS::KC_STOP, // (NEC PC98) 155 AX = OIS::KC_AX, // (Japan AX) 156 Unlabeled = OIS::KC_UNLABELED, // (J3100) 157 NextTrack = OIS::KC_NEXTTRACK, // Next Track 158 NumpadEnter = OIS::KC_NUMPADENTER, // Enter on numeric keypad 159 RightControl = OIS::KC_RCONTROL, 160 Mute = OIS::KC_MUTE, // Mute 161 Calculator = OIS::KC_CALCULATOR, // Calculator 162 PlayPause = OIS::KC_PLAYPAUSE, // Play / Pause 163 MediaStop = OIS::KC_MEDIASTOP, // Media Stop 164 VolumeDown = OIS::KC_VOLUMEDOWN, // Volume - 165 VolumeUp = OIS::KC_VOLUMEUP, // Volume + 166 WebHome = OIS::KC_WEBHOME, // Web home 167 NumpadComma = OIS::KC_NUMPADCOMMA, // , on numeric keypad (NEC PC98) 168 Divide = OIS::KC_DIVIDE, // / on numeric keypad 169 SYSRQ = OIS::KC_SYSRQ, 170 RightAlt = OIS::KC_RMENU, // right Alt 171 Pause = OIS::KC_PAUSE, // Pause 172 Home = OIS::KC_HOME, // Home on arrow keypad 173 Up = OIS::KC_UP, // UpArrow on arrow keypad 174 PageUp = OIS::KC_PGUP, // PgUp on arrow keypad 175 Left = OIS::KC_LEFT, // LeftArrow on arrow keypad 176 Right = OIS::KC_RIGHT, // RightArrow on arrow keypad 177 End = OIS::KC_END, // End on arrow keypad 178 Down = OIS::KC_DOWN, // DownArrow on arrow keypad 179 PageDown = OIS::KC_PGDOWN, // PgDn on arrow keypad 180 Insert = OIS::KC_INSERT, // Insert on arrow keypad 181 Delete = OIS::KC_DELETE, // Delete on arrow keypad 182 LeftWindows = OIS::KC_LWIN, // Left Windows key 183 RightWindows = OIS::KC_RWIN, // Right Windows key 184 Apps = OIS::KC_APPS, // AppMenu key 185 Power = OIS::KC_POWER, // System Power 186 Sleep = OIS::KC_SLEEP, // System Sleep 187 Wake = OIS::KC_WAKE, // System Wake 188 WebSearch = OIS::KC_WEBSEARCH, // Web Search 189 WebFavorites = OIS::KC_WEBFAVORITES, // Web Favorites 190 WebRefresh = OIS::KC_WEBREFRESH, // Web Refresh 191 WebStop = OIS::KC_WEBSTOP, // Web Stop 192 WebForward = OIS::KC_WEBFORWARD, // Web Forward 193 WebBack = OIS::KC_WEBBACK, // Web Back 194 MyComputer = OIS::KC_MYCOMPUTER, // My Computer 195 Mail = OIS::KC_MAIL, // Mail 196 MediaSelect = OIS::KC_MEDIASELECT // Media Select 197 }; 198 } 199 200 namespace MouseButton 201 { 202 enum Enum 203 { 204 Left = OIS::MB_Left, 205 Right = OIS::MB_Right, 206 Middle = OIS::MB_Middle, 207 Button3 = OIS::MB_Button3, 208 Button4 = OIS::MB_Button4, 209 Button5 = OIS::MB_Button5, 210 Button6 = OIS::MB_Button6, 211 Button7 = OIS::MB_Button7 212 }; 213 } 214 215 namespace JoyStickButton 216 { 217 enum Enum 218 { 219 Button0 = 0, Button1 = 1, Button2 = 2, Button3 = 3, 220 Button4 = 4, Button5 = 5, Button6 = 6, Button7 = 7, 221 Button8 = 8, Button9 = 9, Button10 = 10, Button11 = 11, 222 Button12 = 12, Button13 = 13, Button14 = 14, Button15 = 15, 223 Button16 = 16, Button17 = 17, Button18 = 18, Button19 = 19, 224 Button20 = 20, Button21 = 21, Button22 = 22, Button23 = 23, 225 Button24 = 24, Button25 = 25, Button26 = 26, Button27 = 27, 226 Button28 = 28, Button29 = 29, Button30 = 30, Button31 = 31, 227 228 POV0North = 32, POV0South = 33, POV0East = 34, POV0West = 35, 229 POV0NorthEast = 36, POV0SouthEast = 37, POV0NorthWest = 38, POV0SouthWest = 39, 230 231 POV1North = 40, POV1South = 41, POV1East = 42, POV1West = 43, 232 POV1NorthEast = 44, POV1SouthEast = 45, POV1NorthWest = 46, POV1SouthWest = 47, 233 234 POV2North = 48, POV2South = 49, POV2East = 50, POV2West = 51, 235 POV2NorthEast = 52, POV2SouthEast = 53, POV2NorthWest = 54, POV2SouthWest = 55, 236 237 POV3North = 56, POV3South = 57, POV3East = 58, POV3West = 59, 238 POV3NorthEast = 60, POV3SouthEast = 61, POV3NorthWest = 62, POV3SouthWest = 63, 239 }; 240 } 241 242 namespace KeyboardModifier 243 { 244 enum Enum 245 { 246 Shift = 0x0000001, 247 Ctrl = 0x0000010, 248 Alt = 0x0000100 249 }; 250 } 251 252 namespace InputDevice 253 { 254 enum Enum 255 { 256 Keyboard, 257 Mouse, 258 JoyStick0, 259 JoyStick1, 260 JoyStick2, 261 JoyStick3, 262 // note: No problem if there are more joy sticks. This enum is just for convenience. 263 }; 264 } 265 266 struct _CoreExport Key 267 { 268 Key(const OIS::KeyEvent& evt) : key((KeyCode::Enum)evt.key), text(evt.text) { } 269 KeyCode::Enum key; 270 unsigned int text; 271 }; 272 273 class _CoreExport KeyEvent 274 { 275 public: 276 KeyEvent(KeyCode::Enum key, unsigned int text) : key(key), text(text) { } 277 KeyEvent(const OIS::KeyEvent& evt, unsigned int mod) 278 : key((KeyCode::Enum)evt.key), text(evt.text), modifiers(mod) { } 279 KeyEvent(const Key& key, unsigned int mod) : key(key.key), text(key.text), modifiers(mod) { } 280 bool isModifierDown(KeyboardModifier::Enum modifier) const 281 { return (KeyboardModifier::Enum)modifier&modifiers; } 282 283 const KeyCode::Enum key; 284 unsigned int text; 285 unsigned int modifiers; 286 }; 287 288 289 class _CoreExport InputTickable 290 { 291 public: 292 virtual ~InputTickable() { } 293 virtual void tickInput(float dt) = 0; 294 }; 295 296 /** 297 @brief 298 Interface class used for key input listeners. 299 */ 300 class _CoreExport KeyHandler : virtual public InputTickable 301 { 302 public: 303 virtual ~KeyHandler() { } 304 virtual void keyPressed (const KeyEvent& evt) = 0; 305 virtual void keyReleased(const KeyEvent& evt) = 0; 306 virtual void keyHeld (const KeyEvent& evt) = 0; 307 virtual void tickKey (float dt) = 0; 308 }; 309 310 /** 311 @brief 312 Interface class used for mouse input listeners. 313 */ 314 class _CoreExport MouseHandler : virtual public InputTickable 315 { 316 public: 317 virtual ~MouseHandler() { } 318 virtual void mouseButtonPressed (MouseButton::Enum id) = 0; 319 virtual void mouseButtonReleased(MouseButton::Enum id) = 0; 320 virtual void mouseButtonHeld (MouseButton::Enum id) = 0; 321 virtual void mouseMoved (IntVector2 abs, IntVector2 rel, IntVector2 clippingSize) = 0; 322 virtual void mouseScrolled (int abs, int rel) = 0; 323 virtual void tickMouse (float dt) = 0; 324 }; 325 326 327 /** 328 @brief 329 Interface class used for joy stick input listeners. 330 */ 331 class _CoreExport JoyStickHandler : virtual public InputTickable 332 { 333 public: 334 virtual ~JoyStickHandler() { } 335 virtual void joyStickButtonPressed (unsigned int joyStickID, JoyStickButton::Enum id) = 0; 336 virtual void joyStickButtonReleased(unsigned int joyStickID, JoyStickButton::Enum id) = 0; 337 virtual void joyStickButtonHeld (unsigned int joyStickID, JoyStickButton::Enum id) = 0; 338 virtual void joyStickAxisMoved (unsigned int joyStickID, unsigned int axis, float value) = 0; 339 virtual void tickJoyStick (float dt, unsigned int joyStick) = 0; 340 }; 341 342 class _CoreExport EmptyHandler : public KeyHandler, public MouseHandler, public JoyStickHandler 343 { 344 private: 345 void tickInput(float dt) { } 346 void tickJoyStick(float dt, unsigned int joyStick) { } 347 void tickMouse(float dt) { } 348 void tickKey(float dt) { } 349 350 void keyPressed (const KeyEvent& evt) { } 351 void keyReleased(const KeyEvent& evt) { } 352 void keyHeld (const KeyEvent& evt) { } 353 354 void mouseButtonPressed (MouseButton::Enum id) { } 355 void mouseButtonReleased(MouseButton::Enum id) { } 356 void mouseButtonHeld (MouseButton::Enum id) { } 357 void mouseMoved (IntVector2 abs, IntVector2 rel, IntVector2 clippingSize) { } 358 void mouseScrolled (int abs, int rel) { } 359 360 void joyStickButtonPressed (unsigned int joyStickID, JoyStickButton::Enum id) { } 361 void joyStickButtonReleased(unsigned int joyStickID, JoyStickButton::Enum id) { } 362 void joyStickButtonHeld (unsigned int joyStickID, JoyStickButton::Enum id) { } 363 void joyStickAxisMoved (unsigned int joyStickID, unsigned int axis, float value) { } 364 }; 321 365 322 366 }
Note: See TracChangeset
for help on using the changeset viewer.