Changeset 1293 for code/trunk/src/core
- Timestamp:
- May 15, 2008, 5:44:55 PM (17 years ago)
- Location:
- code/trunk/src/core
- Files:
-
- 19 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
code/trunk/src/core/BaseObject.cc
r1209 r1293 45 45 @brief Constructor: Registers the object in the BaseObject-list. 46 46 */ 47 BaseObject::BaseObject() 47 BaseObject::BaseObject() : 48 bActive_(true), 49 bVisible_(true), 50 level_(0), 51 namespace_(0) 48 52 { 49 53 RegisterRootObject(BaseObject); 50 51 this->bActive_ = true;52 this->bVisible_ = true;53 this->level_ = 0;54 this->namespace_ = 0;55 54 } 56 55 -
code/trunk/src/core/CommandExecutor.h
r1214 r1293 89 89 inline std::string getAdditionalParameter() const 90 90 { return (this->additionalParameter_ != "") ? (" " + this->additionalParameter_) : ""; } 91 inline std::string getCommandString() const { return this->processedCommand_; } 91 92 92 93 void setEvaluatedParameter(unsigned int index, MultiTypeMath param); -
code/trunk/src/core/CoreIncludes.h
r1062 r1293 59 59 if (orxonox::Identifier::isCreatingHierarchy() && this->getParents()) \ 60 60 this->getParents()->insert(this->getParents()->end(), this->getIdentifier()); \ 61 orxonox::ClassManager<ClassName>::getIdentifier()->addObject(this) 61 orxonox::ClassManager<ClassName>::getIdentifier()->addObject(this); \ 62 if (orxonox::Identifier::isCreatingHierarchy()) \ 63 return 62 64 63 65 /** -
code/trunk/src/core/CorePrereqs.h
r1219 r1293 144 144 145 145 // input 146 //class GUIInputHandler; 146 147 class InputBuffer; 147 148 class InputBufferListener; 148 149 class InputManager; 150 class JoyStickHandler; 149 151 class KeyBinder; 150 class GUIInputHandler;151 152 class KeyHandler; 152 153 class MouseHandler; 153 class JoyStickHandler;154 154 155 155 } -
code/trunk/src/core/Debug.h
r1219 r1293 273 273 #define CCOUT_EXEC(x) \ 274 274 orxonox::OutputHandler::getOutStream().setOutputLevel(x) \ 275 << "*** " <<this->getIdentifier()->getName() << ": "275 << this->getIdentifier()->getName() << ": " 276 276 277 277 #ifndef CCOUT -
code/trunk/src/core/Error.cc
r1062 r1293 37 37 namespace orxonox 38 38 { 39 Error::Error()40 {41 Error(0,"");42 }43 44 39 Error::Error(std::string errorMsg, int errorCode) 45 {46 Error(errorCode, errorMsg);47 }48 49 Error::Error(int errorCode, std::string errorMsg)50 40 { 51 41 COUT(1) << "############################ "<< std::endl -
code/trunk/src/core/Error.h
r1062 r1293 44 44 { 45 45 public: 46 Error(); 47 Error(std::string errorMsg, int errorCode = 0); 48 Error(int errorCode, std::string errorMsg = ""); 46 Error(std::string errorMsg = "", int errorCode = 0); 49 47 private: 50 48 -
code/trunk/src/core/InputBuffer.cc
r1220 r1293 23 23 * Fabian 'x3n' Landau 24 24 * Co-authors: 25 * ...25 * Reto Grieder 26 26 * 27 27 */ … … 32 32 33 33 #include "util/Clipboard.h" 34 #include "InputManager.h" 34 #include "CoreIncludes.h" 35 #include "ConfigValueIncludes.h" 35 36 36 37 namespace orxonox 37 38 { 38 InputBuffer::InputBuffer() 39 { 40 //this->bActivated_ = false; 41 this->allowedChars_ = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZäöüÄÖÜ0123456789 \\\"(){}[]<>.:,;_-+*/=!?|$&%^"; 42 this->keyboard_ = InputManager::getKeyboard(); 43 this->buffer_ = ""; 44 45 //this->keyboard_->setEventCallback(this); 46 } 47 48 InputBuffer::InputBuffer(const std::string allowedChars) 49 { 50 //this->bActivated_ = false; 51 this->allowedChars_ = allowedChars; 52 this->keyboard_ = InputManager::getKeyboard(); 53 this->buffer_ = ""; 54 } 55 /* 56 void InputBuffer::registerListener(InputBufferListener* listener, void (InputBufferListener::*function)(), bool bOnlySingleInput) 57 { 58 struct InputBufferListenerTuple newListener = {listener, function, true, bOnlySingleInput, ' '}; 59 this->listeners_.insert(this->listeners_.end(), newListener); 60 } 61 62 void InputBuffer::registerListener(InputBufferListener* listener, void (InputBufferListener::*function)(), char char_, bool bOnlySingleInput) 63 { 64 struct InputBufferListenerTuple newListener = {listener, function, false, bOnlySingleInput, char_}; 65 this->listeners_.insert(this->listeners_.end(), newListener); 66 } 67 */ 68 void InputBuffer::set(const std::string& input) 69 { 70 this->buffer_ = ""; 71 this->append(input); 72 } 73 74 void InputBuffer::append(const std::string& input) 75 { 76 for (unsigned int i = 0; i < input.size(); i++) 77 { 78 if (this->charIsAllowed(input[i])) 79 this->buffer_ += input[i]; 80 81 this->updated(input[i], false); 82 } 83 this->updated(); 84 } 85 86 void InputBuffer::append(const char& input) 87 { 88 if (this->charIsAllowed(input)) 89 this->buffer_ += input; 90 91 this->updated(input, true); 92 } 93 94 void InputBuffer::clear() 95 { 96 this->buffer_ = ""; 97 this->updated(); 98 } 99 100 void InputBuffer::removeLast() 101 { 102 this->buffer_ = this->buffer_.substr(0, this->buffer_.size() - 1); 103 this->updated(); 104 } 105 106 void InputBuffer::updated() 107 { 108 for (std::list<InputBufferListenerTuple>::iterator it = this->listeners_.begin(); it != this->listeners_.end(); ++it) 109 { 110 if ((*it).bListenToAllChanges_) 111 (*(*it).listener_.*(*it).function_)(); 112 } 113 } 114 115 void InputBuffer::updated(const char& update, bool bSingleInput) 116 { 117 for (std::list<InputBufferListenerTuple>::iterator it = this->listeners_.begin(); it != this->listeners_.end(); ++it) 118 { 119 if (((*it).bListenToAllChanges_ || ((*it).char_ == update)) && (!(*it).bOnlySingleInput_ || bSingleInput)) 120 (*(*it).listener_.*(*it).function_)(); 121 } 122 } 123 124 /*void InputBuffer::activityChanged() const 125 { 126 }*/ 127 128 bool InputBuffer::charIsAllowed(const char& input) 129 { 130 if (this->allowedChars_ == "") 131 return true; 132 else 133 return (this->allowedChars_.find(input) != std::string::npos); 134 } 135 136 bool InputBuffer::keyPressed(const OIS::KeyEvent &e) 137 { 138 /*if (e.key == OIS::KC_NUMPADENTER) 139 { 140 this->setActivated(!this->isActivated()); 141 this->clear(); 142 return true; 143 }*/ 144 145 if (this->keyboard_->isModifierDown(OIS::Keyboard::Ctrl)) 146 { 147 if (e.key == OIS::KC_V) 148 { 149 this->append(fromClipboard()); 150 return true; 151 } 152 else if (e.key == OIS::KC_C) 153 { 154 toClipboard(this->buffer_); 155 return true; 156 } 157 else if (e.key == OIS::KC_X) 158 { 159 toClipboard(this->buffer_); 160 this->clear(); 161 return true; 162 } 163 } 164 else if (this->keyboard_->isModifierDown(OIS::Keyboard::Shift)) 165 { 166 if (e.key == OIS::KC_INSERT) 167 { 168 this->append(fromClipboard()); 169 return true; 170 } 171 else if (e.key == OIS::KC_DELETE) 172 { 173 toClipboard(this->buffer_); 174 this->clear(); 175 return true; 176 } 177 } 178 179 //std::cout << this->keyboard_->getAsString(e.key) << " / " << (char)e.text << std::endl; 180 181 std::string input = this->keyboard_->getAsString(e.key); 182 /*if (input.size() >= 1) 183 this->append(input[0]);*/ 184 185 this->append((char)e.text); 186 return true; 187 } 188 189 bool InputBuffer::keyReleased(const OIS::KeyEvent &e) 190 { 191 return true; 192 } 39 InputBuffer::InputBuffer(const std::string allowedChars) : 40 buffer_(""), 41 allowedChars_(allowedChars), 42 lastKey_(KeyCode::Unassigned), 43 timeSinceKeyPressed_(0.0f), 44 timeSinceKeyRepeated_(0.0f), 45 keysToRepeat_(0) 46 { 47 RegisterObject(InputBuffer); 48 setConfigValues(); 49 } 50 51 void InputBuffer::setConfigValues() 52 { 53 SetConfigValue(keyRepeatDeleay_, 0.4).description("Key repeat deleay of the input buffer"); 54 SetConfigValue(keyRepeatTime_, 0.022).description("Key repeat time of the input buffer"); 55 if (keyRepeatDeleay_ < 0.0) 56 { 57 ResetConfigValue(keyRepeatDeleay_); 58 } 59 if (keyRepeatTime_ < 0.0) 60 { 61 ResetConfigValue(keyRepeatTime_); 62 } 63 } 64 /* 65 void InputBuffer::registerListener(InputBufferListener* listener, void (InputBufferListener::*function)(), bool bOnlySingleInput) 66 { 67 struct InputBufferListenerTuple newListener = {listener, function, true, bOnlySingleInput, ' '}; 68 listeners_.insert(listeners_.end(), newListener); 69 } 70 71 void InputBuffer::registerListener(InputBufferListener* listener, void (InputBufferListener::*function)(), char char_, bool bOnlySingleInput) 72 { 73 struct InputBufferListenerTuple newListener = {listener, function, false, bOnlySingleInput, char_}; 74 listeners_.insert(listeners_.end(), newListener); 75 } 76 */ 77 void InputBuffer::set(const std::string& input) 78 { 79 buffer_ = ""; 80 append(input); 81 } 82 83 void InputBuffer::append(const std::string& input) 84 { 85 for (unsigned int i = 0; i < input.size(); i++) 86 { 87 if (charIsAllowed(input[i])) 88 buffer_ += input[i]; 89 90 updated(input[i], false); 91 } 92 updated(); 93 } 94 95 void InputBuffer::append(const char& input) 96 { 97 if (charIsAllowed(input)) 98 buffer_ += input; 99 100 updated(input, true); 101 } 102 103 void InputBuffer::clear() 104 { 105 buffer_ = ""; 106 updated(); 107 } 108 109 void InputBuffer::removeLast() 110 { 111 buffer_ = buffer_.substr(0, buffer_.size() - 1); 112 updated(); 113 } 114 115 void InputBuffer::updated() 116 { 117 for (std::list<InputBufferListenerTuple>::iterator it = listeners_.begin(); it != listeners_.end(); ++it) 118 { 119 if ((*it).bListenToAllChanges_) 120 (*(*it).listener_.*(*it).function_)(); 121 } 122 } 123 124 void InputBuffer::updated(const char& update, bool bSingleInput) 125 { 126 for (std::list<InputBufferListenerTuple>::iterator it = listeners_.begin(); it != listeners_.end(); ++it) 127 { 128 if (((*it).bListenToAllChanges_ || ((*it).char_ == update)) && (!(*it).bOnlySingleInput_ || bSingleInput)) 129 (*(*it).listener_.*(*it).function_)(); 130 } 131 } 132 133 bool InputBuffer::charIsAllowed(const char& input) 134 { 135 if (allowedChars_ == "") 136 return true; 137 else 138 return (allowedChars_.find(input) != std::string::npos); 139 } 140 141 142 void InputBuffer::processKey(const KeyEvent &evt) 143 { 144 if (evt.isModifierDown(KeyboardModifier::Ctrl)) 145 { 146 if (evt.key == KeyCode::V) 147 append(fromClipboard()); 148 else if (evt.key == KeyCode::C) 149 toClipboard(buffer_); 150 else if (evt.key == KeyCode::X) 151 { 152 toClipboard(buffer_); 153 clear(); 154 } 155 } 156 else if (evt.isModifierDown(KeyboardModifier::Shift)) 157 { 158 if (evt.key == KeyCode::Insert) 159 { 160 append(fromClipboard()); 161 } 162 else if (evt.key == KeyCode::Delete) 163 { 164 toClipboard(buffer_); 165 clear(); 166 } 167 } 168 //std::string input = keyboard_->getAsString(e.key); 169 /*if (input.size() >= 1) 170 append(input[0]);*/ 171 172 append((char)evt.text); 173 } 174 175 void InputBuffer::tick(float dt) 176 { 177 timeSinceKeyPressed_ += dt; 178 if (keysToRepeat_ < 10 && timeSinceKeyPressed_ > keyRepeatDeleay_) 179 { 180 // initial time out has gone by, start repeating keys 181 while (timeSinceKeyPressed_ - timeSinceKeyRepeated_ > keyRepeatTime_) 182 { 183 timeSinceKeyRepeated_ += keyRepeatTime_; 184 keysToRepeat_++; 185 } 186 } 187 } 188 189 bool InputBuffer::keyPressed(const KeyEvent &evt) 190 { 191 lastKey_ = evt.key; 192 timeSinceKeyPressed_ = 0.0; 193 timeSinceKeyRepeated_ = keyRepeatDeleay_; 194 keysToRepeat_ = 0; 195 196 processKey(evt); 197 return true; 198 } 199 200 bool InputBuffer::keyHeld(const KeyEvent& evt) 201 { 202 if (evt.key == lastKey_) 203 { 204 while (keysToRepeat_) 205 { 206 processKey(evt); 207 keysToRepeat_--; 208 } 209 } 210 return true; 211 } 212 193 213 } -
code/trunk/src/core/InputBuffer.h
r1219 r1293 23 23 * Fabian 'x3n' Landau 24 24 * Co-authors: 25 * ...25 * Reto Grieder 26 26 * 27 27 */ … … 35 35 #include <list> 36 36 37 #include " ois/OISKeyboard.h"38 #include " InputHandler.h"37 #include "InputInterfaces.h" 38 #include "Tickable.h" 39 39 40 40 namespace orxonox 41 41 { 42 43 42 class _CoreExport InputBufferListener 43 {}; 44 44 45 class _CoreExport InputBuffer : public KeyHandler 45 class _CoreExport InputBuffer : public KeyHandler, public TickableReal 46 { 47 struct InputBufferListenerTuple 46 48 { 47 struct InputBufferListenerTuple 48 { 49 InputBufferListener* listener_; 50 void (InputBufferListener::*function_)(); 51 bool bListenToAllChanges_; 52 bool bOnlySingleInput_; 53 char char_; 54 }; 49 InputBufferListener* listener_; 50 void (InputBufferListener::*function_)(); 51 bool bListenToAllChanges_; 52 bool bOnlySingleInput_; 53 char char_; 54 }; 55 55 56 57 InputBuffer();58 InputBuffer(const std::string allowedChars);56 public: 57 InputBuffer(const std::string allowedChars = 58 "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZäöüÄÖÜ0123456789 \\\"(){}[]<>.:,;_-+*/=!?|$&%^"); 59 59 60 template <class T> 61 void registerListener(T* listener, void (T::*function)(), bool bOnlySingleInput) 62 { 63 struct InputBufferListenerTuple newListener = {listener, (void (InputBufferListener::*)())function, true, bOnlySingleInput, ' '}; 64 this->listeners_.insert(this->listeners_.end(), newListener); 65 } 66 template <class T> 67 void registerListener(T* listener, void (T::*function)() const, bool bOnlySingleInput) 68 { 69 struct InputBufferListenerTuple newListener = {listener, (void (InputBufferListener::*)())function, true, bOnlySingleInput, ' '}; 70 this->listeners_.insert(this->listeners_.end(), newListener); 71 } 60 void setConfigValues(); 72 61 73 74 void registerListener(T* listener, void (T::*function)(), char char_, bool bOnlySingleInput)75 76 struct InputBufferListenerTuple newListener = {listener, (void (InputBufferListener::*)())function, false, bOnlySingleInput, char_};77 78 79 80 void registerListener(T* listener, void (T::*function)() const, char char_, bool bOnlySingleInput)81 82 struct InputBufferListenerTuple newListener = {listener, (void (InputBufferListener::*)())function, false, bOnlySingleInput, char_};83 84 62 template <class T> 63 void registerListener(T* listener, void (T::*function)(), bool bOnlySingleInput) 64 { 65 struct InputBufferListenerTuple newListener = {listener, (void (InputBufferListener::*)())function, true, bOnlySingleInput, ' '}; 66 this->listeners_.insert(this->listeners_.end(), newListener); 67 } 68 template <class T> 69 void registerListener(T* listener, void (T::*function)() const, bool bOnlySingleInput) 70 { 71 struct InputBufferListenerTuple newListener = {listener, (void (InputBufferListener::*)())function, true, bOnlySingleInput, ' '}; 72 this->listeners_.insert(this->listeners_.end(), newListener); 73 } 85 74 86 void set(const std::string& input); 87 void append(const std::string& input); 88 void append(const char& input); 89 void removeLast(); 90 void clear(); 75 template <class T> 76 void registerListener(T* listener, void (T::*function)(), char char_, bool bOnlySingleInput) 77 { 78 struct InputBufferListenerTuple newListener = {listener, (void (InputBufferListener::*)())function, false, bOnlySingleInput, char_}; 79 this->listeners_.insert(this->listeners_.end(), newListener); 80 } 81 template <class T> 82 void registerListener(T* listener, void (T::*function)() const, char char_, bool bOnlySingleInput) 83 { 84 struct InputBufferListenerTuple newListener = {listener, (void (InputBufferListener::*)())function, false, bOnlySingleInput, char_}; 85 this->listeners_.insert(this->listeners_.end(), newListener); 86 } 91 87 92 void updated(); 93 void updated(const char& update, bool bSingleInput); 88 void set(const std::string& input); 89 void append(const std::string& input); 90 void append(const char& input); 91 void removeLast(); 92 void clear(); 94 93 95 inline std::string get() const96 { return this->buffer_; }94 void updated(); 95 void updated(const char& update, bool bSingleInput); 97 96 98 /*inline void activate() 99 { this->setActivated(true); } 100 inline void deactivate() 101 { this->setActivated(false); } 102 inline void setActivated(bool bActivated) 103 { if (this->bActivated_ != bActivated) { this->bActivated_ = bActivated; this->activityChanged(); } else { this->bActivated_ = bActivated; } } 104 inline bool isActivated() const 105 { return this->bActivated_; } 97 inline std::string get() const 98 { return this->buffer_; } 106 99 107 void activityChanged() const;*/ 100 private: // functions 101 bool charIsAllowed(const char& input); 108 102 109 private: 110 bool charIsAllowed(const char& input); 103 bool keyPressed (const KeyEvent& evt); 104 bool keyReleased(const KeyEvent& evt) { return true; } 105 bool keyHeld (const KeyEvent& evt); 106 void processKey (const KeyEvent &e); 111 107 112 bool keyPressed(const OIS::KeyEvent &e); 113 bool keyReleased(const OIS::KeyEvent &e); 114 bool keyHeld(const OIS::KeyEvent &e) { return true; } 108 void tick(float dt); 115 109 116 OIS::Keyboard* keyboard_; 117 //bool bActivated_; 118 std::string buffer_; 119 std::list<InputBufferListenerTuple> listeners_; 120 std::string allowedChars_; 121 }; 110 private: // variables 111 std::string buffer_; 112 std::list<InputBufferListenerTuple> listeners_; 113 std::string allowedChars_; 114 115 KeyCode::Enum lastKey_; 116 float timeSinceKeyPressed_; 117 float timeSinceKeyRepeated_; 118 int keysToRepeat_; 119 120 // configured values 121 float keyRepeatDeleay_; 122 float keyRepeatTime_; 123 }; 122 124 } 123 125 -
code/trunk/src/core/InputHandler.cc
r1219 r1293 33 33 34 34 #include "InputHandler.h" 35 #include "util/Convert.h" 35 36 #include "Debug.h" 36 37 #include "ConfigValueIncludes.h" 37 38 #include "CoreIncludes.h" 38 #include "util/Convert.h" 39 #include "core/CommandExecutor.h" 39 #include "CommandExecutor.h" 40 40 41 41 namespace orxonox … … 55 55 std::string keyNames[] = { 56 56 "UNASSIGNED", 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 57 "ESCAPE", 58 "1", 59 "2", 60 "3", 61 "4", 62 "5", 63 "6", 64 "7", 65 "8", 66 "9", 67 "0", 68 "MINUS", 69 "EQUALS", 70 "BACK", 71 "TAB", 72 "Q", 73 "W", 74 "E", 75 "R", 76 "T", 77 "Y", 78 "U", 79 "I", 80 "O", 81 "P", 82 "LBRACKET", 83 "RBRACKET", 84 "RETURN", 85 "LCONTROL", 86 "A", 87 "S", 88 "D", 89 "F", 90 "G", 91 "H", 92 "J", 93 "K", 94 "L", 95 "SEMICOLON", 96 "APOSTROPHE", 97 "GRAVE", 98 "LSHIFT", 99 "BACKSLASH", 100 "Z", 101 "X", 102 "C", 103 "V", 104 "B", 105 "N", 106 "M", 107 "COMMA", 108 "PERIOD", 109 "SLASH", 110 "RSHIFT", 111 "MULTIPLY", 112 "LMENU", 113 "SPACE", 114 "CAPITAL", 115 "F1", 116 "F2", 117 "F3", 118 "F4", 119 "F5", 120 "F6", 121 "F7", 122 "F8", 123 "F9", 124 "F10", 125 "NUMLOCK", 126 "SCROLL", 127 "NUMPAD7", 128 "NUMPAD8", 129 "NUMPAD9", 130 "SUBTRACT", 131 "NUMPAD4", 132 "NUMPAD5", 133 "NUMPAD6", 134 "ADD", 135 "NUMPAD1", 136 "NUMPAD2", 137 "NUMPAD3", 138 "NUMPAD0", 139 "DECIMAL", 140 140 "","", 141 142 143 141 "OEM_102", 142 "F11", 143 "F12", 144 144 "","","","","","","","","","","", 145 146 147 145 "F13", 146 "F14", 147 "F15", 148 148 "","","","","","","","","","", 149 149 "KANA", 150 150 "","", 151 151 "ABNT_C1", 152 152 "","","","","", 153 154 "", 155 156 "", 157 158 153 "CONVERT", 154 "", 155 "NOCONVERT", 156 "", 157 "YEN", 158 "ABNT_C2", 159 159 "","","","","","","","","","","","","","", 160 160 "NUMPADEQUALS", 161 161 "","", 162 163 164 165 166 167 168 169 170 162 "PREVTRACK", 163 "AT", 164 "COLON", 165 "UNDERLINE", 166 "KANJI", 167 "STOP", 168 "AX", 169 "UNLABELED", 170 "NEXTTRACK", 171 171 "","", 172 173 172 "NUMPADENTER", 173 "RCONTROL", 174 174 "","", 175 176 177 178 "", 179 175 "MUTE", 176 "CALCULATOR", 177 "PLAYPAUSE", 178 "", 179 "MEDIASTOP", 180 180 "","","","","","","","","", 181 182 "", 183 184 "", 185 186 187 "", 188 189 "", 190 191 181 "VOLUMEDOWN", 182 "", 183 "VOLUMEUP", 184 "", 185 "WEBHOME", 186 "NUMPADCOMMA", 187 "", 188 "DIVIDE", 189 "", 190 "SYSRQ", 191 "RMENU", 192 192 "","","","","","","","","","","","", 193 194 "", 195 196 197 198 "", 199 200 "", 201 202 "", 203 204 205 206 207 193 "PAUSE", 194 "", 195 "HOME", 196 "UP", 197 "PGUP", 198 "", 199 "LEFT", 200 "", 201 "RIGHT", 202 "", 203 "END", 204 "DOWN", 205 "PGDOWN", 206 "INSERT", 207 "DELETE", 208 208 "","","","","","","", 209 210 211 212 213 209 "LWIN", 210 "RWIN", 211 "APPS", 212 "POWER", 213 "SLEEP", 214 214 "","","", 215 216 "", 217 218 219 220 221 222 223 224 225 215 "WAKE", 216 "", 217 "WEBSEARCH", 218 "WEBFAVORITES", 219 "WEBREFRESH", 220 "WEBSTOP", 221 "WEBFORWARD", 222 "WEBBACK", 223 "MYCOMPUTER", 224 "MAIL", 225 "MEDIASELECT" 226 226 }; 227 227 for (int i = 0; i < numberOfKeys_s; i++) … … 229 229 230 230 std::string mouseButtonNames[] = { 231 "MouseLeft", "MouseRight", "MouseMiddle",232 "MouseButton3", "MouseButton4", "MouseButton5",233 "MouseButton6", "MouseButton7" };231 "MouseLeft", "MouseRight", "MouseMiddle", 232 "MouseButton3", "MouseButton4", "MouseButton5", 233 "MouseButton6", "MouseButton7" }; 234 234 for (int i = 0; i < numberOfMouseButtons_s; i++) 235 235 mouseButtonNames_[i] = mouseButtonNames[i]; … … 267 267 switch (j) 268 268 { 269 // note: the first element in the struct is the string, so the following pointer270 // arithmetic works.271 269 case 0: 272 270 cont->getValue(&bindingsKeyPress_[i].commandStr); 273 271 break; 274 272 case 1: 275 cont->getValue( bindingsKeyRelease_ + i);273 cont->getValue(&bindingsKeyRelease_[i].commandStr); 276 274 break; 277 275 case 2: 278 cont->getValue( bindingsKeyHold_ + i);276 cont->getValue(&bindingsKeyHold_[i].commandStr); 279 277 } 280 278 } … … 295 293 { 296 294 case 0: 297 cont->getValue( bindingsMouseButtonPress_ + i);295 cont->getValue(&bindingsMouseButtonPress_[i].commandStr); 298 296 break; 299 297 case 1: 300 cont->getValue( bindingsMouseButtonRelease_ + i);298 cont->getValue(&bindingsMouseButtonRelease_[i].commandStr); 301 299 break; 302 300 case 2: 303 cont->getValue( bindingsMouseButtonHold_ + i);301 cont->getValue(&bindingsMouseButtonHold_[i].commandStr); 304 302 } 305 303 } … … 320 318 { 321 319 case 0: 322 cont->getValue( bindingsJoyStickButtonPress_ + i);320 cont->getValue(&bindingsJoyStickButtonPress_[i].commandStr); 323 321 break; 324 322 case 1: 325 cont->getValue( bindingsJoyStickButtonRelease_ + i);323 cont->getValue(&bindingsJoyStickButtonRelease_[i].commandStr); 326 324 break; 327 325 case 2: 328 cont->getValue( bindingsJoyStickButtonHold_ + i);326 cont->getValue(&bindingsJoyStickButtonHold_[i].commandStr); 329 327 } 330 328 } … … 345 343 for (int i = 0; i < numberOfMouseButtons_s; i++) 346 344 { 347 bindingsMouseButtonPress_ [i] = "";348 bindingsMouseButtonRelease_[i] = "";349 bindingsMouseButtonHold_ [i] = "";345 bindingsMouseButtonPress_ [i].commandStr = ""; 346 bindingsMouseButtonRelease_[i].commandStr = ""; 347 bindingsMouseButtonHold_ [i].commandStr = ""; 350 348 } 351 349 for (int i = 0; i < numberOfJoyStickButtons_s; i++) 352 350 { 353 bindingsJoyStickButtonPress_ [i] = "";354 bindingsJoyStickButtonRelease_[i] = "";355 bindingsJoyStickButtonHold_ [i] = "";351 bindingsJoyStickButtonPress_ [i].commandStr = ""; 352 bindingsJoyStickButtonRelease_[i].commandStr = ""; 353 bindingsJoyStickButtonHold_ [i].commandStr = ""; 356 354 } 357 355 } … … 370 368 // evaluate the key bindings 371 369 // TODO: what if binding is invalid? 372 //for (int i = 0; i < numberOfKeys_s; i++)373 //{374 //if (bindingsKeyPress_[i].commandStr != "")375 //{376 //bindingsKeyPress_[i].evaluation = CommandExecutor::evaluate(bindingsKeyPress_[i].commandStr);377 //bindingsKeyPress_[i].commandStr = bindingsKeyPress_[i].evaluation.getCommandString();378 //}379 //}370 for (int i = 0; i < numberOfKeys_s; i++) 371 { 372 if (bindingsKeyPress_[i].commandStr != "") 373 { 374 bindingsKeyPress_[i].evaluation = CommandExecutor::evaluate(bindingsKeyPress_[i].commandStr); 375 bindingsKeyPress_[i].commandStr = bindingsKeyPress_[i].evaluation.getCommandString(); 376 } 377 } 380 378 381 379 COUT(ORX_DEBUG) << "KeyBinder: Loading key bindings done." << std::endl; … … 383 381 } 384 382 385 bool KeyBinder::execute Binding(KeyBinding& binding)383 bool KeyBinder::executeSimpleBinding(KeyBinding& binding) 386 384 { 387 385 if (binding.commandStr != "") 388 386 { 389 //if (binding.commandStr != binding.evaluation.getCommandString())390 //{391 //// key binding has changed, reevaluate the command string.392 //binding.evaluation = CommandExecutor::evaluate(binding.commandStr);393 //binding.commandStr = binding.evaluation.getCommandString();394 //}395 COUT( 3) << "Executing command: " << binding.commandStr << std::endl;387 if (binding.commandStr != binding.evaluation.getCommandString()) 388 { 389 // key binding has changed, reevaluate the command string. 390 binding.evaluation = CommandExecutor::evaluate(binding.commandStr); 391 binding.commandStr = binding.evaluation.getCommandString(); 392 } 393 COUT(ORX_DEBUG) << "Keybinding: Executing command: " << binding.commandStr << std::endl; 396 394 CommandExecutor::execute(binding.commandStr); 397 395 } … … 405 403 @param e Event information 406 404 */ 407 bool KeyBinder::keyPressed(const OIS::KeyEvent &e) 408 { 409 COUT(3) << "Key: " << e.key << std::endl; 410 // find the appropriate key binding 411 executeBinding(bindingsKeyPress_[int(e.key)]); 412 405 bool KeyBinder::keyPressed(const KeyEvent& evt) 406 { 407 // find the appropriate key binding 408 executeSimpleBinding(bindingsKeyPress_[int(evt.key)]); 409 413 410 return true; 414 411 } … … 418 415 @param e Event information 419 416 */ 420 bool KeyBinder::keyReleased(const OIS::KeyEvent &e)421 { 422 // find the appropriate key binding 423 execute Binding(bindingsKeyRelease_[int(e.key)]);417 bool KeyBinder::keyReleased(const KeyEvent& evt) 418 { 419 // find the appropriate key binding 420 executeSimpleBinding(bindingsKeyRelease_[int(evt.key)]); 424 421 425 422 return true; … … 428 425 /** 429 426 @brief Event handler for the keyHeld Event. 430 @param e Eventinformation431 */ 432 bool KeyBinder::keyHeld(const OIS::KeyEvent &e)433 { 434 // find the appropriate key binding 435 execute Binding(bindingsKeyHold_[int(e.key)]);427 @param e Mouse state information 428 */ 429 bool KeyBinder::keyHeld(const KeyEvent& evt) 430 { 431 // find the appropriate key binding 432 executeSimpleBinding(bindingsKeyHold_[int(evt.key)]); 436 433 437 434 return true; … … 440 437 /** 441 438 @brief Event handler for the mouseMoved Event. 442 @param e Event information 443 */ 444 bool KeyBinder::mouseMoved(const OIS::MouseEvent &e) 439 @param e Mouse state information 440 */ 441 bool KeyBinder::mouseMoved(const MouseState &evt) 442 { 443 /*if (bindingMouseMoved_.commandStr != "") 444 { 445 if (bindingMouseMoved_.commandStr != bindingMouseMoved_.evaluation.getCommandString()) 446 { 447 // key binding has changed, reevaluate the command string. 448 bindingMouseMoved_.evaluation = CommandExecutor::evaluate(bindingMouseMoved_.commandStr); 449 bindingMouseMoved_.commandStr = bindingMouseMoved_.evaluation.getCommandString(); 450 } 451 COUT(3) << "Executing command: " << bindingMouseMoved_.commandStr << std::endl; 452 453 bindingMouseMoved_.evaluation.setEvaluatedParameter( 454 CommandExecutor::execute(bindingMouseMoved_.commandStr); 455 }*/ 456 457 return true; 458 } 459 460 /** 461 @brief Event handler for the mouseScrolled Event. 462 @param e Mouse state information 463 */ 464 bool KeyBinder::mouseScrolled(const MouseState &evt) 445 465 { 446 466 return true; … … 452 472 @param id The ID of the mouse button 453 473 */ 454 bool KeyBinder::mousePressed(const OIS::MouseEvent &e, OIS::MouseButtonID id) 455 { 456 // find the appropriate key binding 457 std::string cmdStr = bindingsMouseButtonPress_[int(id)]; 458 if (cmdStr != "") 459 { 460 CommandExecutor::execute(cmdStr); 461 COUT(3) << "Executing command: " << cmdStr << std::endl; 462 } 474 bool KeyBinder::mouseButtonPressed(const MouseState& state, MouseButton::Enum id) 475 { 476 // find the appropriate key binding 477 executeSimpleBinding(bindingsMouseButtonPress_[int(id)]); 463 478 464 479 return true; … … 470 485 @param id The ID of the mouse button 471 486 */ 472 bool KeyBinder::mouseReleased(const OIS::MouseEvent &e, OIS::MouseButtonID id) 473 { 474 // find the appropriate key binding 475 std::string cmdStr = bindingsMouseButtonRelease_[int(id)]; 476 if (cmdStr != "") 477 { 478 CommandExecutor::execute(cmdStr); 479 COUT(3) << "Executing command: " << cmdStr << std::endl; 480 } 487 bool KeyBinder::mouseButtonReleased(const MouseState& state, MouseButton::Enum id) 488 { 489 // find the appropriate key binding 490 executeSimpleBinding(bindingsMouseButtonRelease_[int(id)]); 481 491 482 492 return true; … … 488 498 @param id The ID of the mouse button 489 499 */ 490 bool KeyBinder::mouseHeld(const OIS::MouseEvent &e, OIS::MouseButtonID id) 491 { 492 // find the appropriate key binding 493 std::string cmdStr = bindingsMouseButtonHold_[int(id)]; 494 if (cmdStr != "") 495 { 496 CommandExecutor::execute(cmdStr); 497 COUT(3) << "Executing command: " << cmdStr << std::endl; 498 } 499 500 return true; 501 } 502 503 bool KeyBinder::buttonPressed(int joyStickID, const OIS::JoyStickEvent &arg, int button) 504 { 505 // find the appropriate key binding 506 std::string cmdStr = bindingsJoyStickButtonPress_[button]; 507 if (cmdStr != "") 508 { 509 CommandExecutor::execute(cmdStr); 510 COUT(3) << "Executing command: " << cmdStr << std::endl; 511 } 512 513 return true; 514 } 515 516 bool KeyBinder::buttonReleased(int joyStickID, const OIS::JoyStickEvent &arg, int button) 517 { 518 // find the appropriate key binding 519 std::string cmdStr = bindingsJoyStickButtonRelease_[button]; 520 if (cmdStr != "") 521 { 522 CommandExecutor::execute(cmdStr); 523 COUT(3) << "Executing command: " << cmdStr << std::endl; 524 } 525 526 return true; 527 } 528 529 bool KeyBinder::buttonHeld(int joyStickID, const OIS::JoyStickEvent &arg, int button) 530 { 531 // find the appropriate key binding 532 std::string cmdStr = bindingsJoyStickButtonHold_[button]; 533 if (cmdStr != "") 534 { 535 CommandExecutor::execute(cmdStr); 536 COUT(3) << "Executing command: " << cmdStr << std::endl; 537 } 538 539 return true; 540 } 541 542 bool KeyBinder::axisMoved(int joyStickID, const OIS::JoyStickEvent &arg, int axis) 543 { 544 return true; 545 } 546 547 bool KeyBinder::sliderMoved(int joyStickID, const OIS::JoyStickEvent &arg, int id) 548 { 549 return true; 550 } 551 552 bool KeyBinder::povMoved(int joyStickID, const OIS::JoyStickEvent &arg, int id) 553 { 554 return true; 555 } 556 557 bool KeyBinder::vector3Moved(int joyStickID, const OIS::JoyStickEvent &arg, int id) 500 bool KeyBinder::mouseButtonHeld(const MouseState& state, MouseButton::Enum id) 501 { 502 // find the appropriate key binding 503 executeSimpleBinding(bindingsMouseButtonHold_[int(id)]); 504 505 return true; 506 } 507 508 bool KeyBinder::joyStickButtonPressed(const JoyStickState& state, int button) 509 { 510 // find the appropriate key binding 511 executeSimpleBinding(bindingsJoyStickButtonPress_[button]); 512 513 return true; 514 } 515 516 bool KeyBinder::joyStickButtonReleased(const JoyStickState& state, int button) 517 { 518 // find the appropriate key binding 519 executeSimpleBinding(bindingsJoyStickButtonRelease_[button]); 520 521 return true; 522 } 523 524 bool KeyBinder::joyStickButtonHeld(const JoyStickState& state, int button) 525 { 526 // find the appropriate key binding 527 executeSimpleBinding(bindingsJoyStickButtonHold_[button]); 528 529 return true; 530 } 531 532 bool KeyBinder::joyStickAxisMoved(const JoyStickState& state, int axis) 533 { 534 return true; 535 } 536 537 bool KeyBinder::joyStickSliderMoved(const JoyStickState& state, int index) 538 { 539 return true; 540 } 541 542 bool KeyBinder::joyStickPovMoved(const JoyStickState& state, int index) 543 { 544 return true; 545 } 546 547 bool KeyBinder::joyStickVector3Moved(const JoyStickState& state, int index) 558 548 { 559 549 return true; … … 586 576 //bool GUIInputHandler::keyPressed(const OIS::KeyEvent &e) 587 577 //{ 588 589 578 ////CEGUI::System::getSingleton().injectKeyDown( arg.key ); 579 ////CEGUI::System::getSingleton().injectChar( arg.text ); 590 580 // return true; 591 581 //} … … 597 587 //bool GUIInputHandler::keyReleased(const OIS::KeyEvent &e) 598 588 //{ 599 589 ////CEGUI::System::getSingleton().injectKeyUp( arg.key ); 600 590 // return true; 601 591 //} … … 607 597 //bool GUIInputHandler::mouseMoved(const OIS::MouseEvent &e) 608 598 //{ 609 599 ////CEGUI::System::getSingleton().injectMouseMove( arg.state.X.rel, arg.state.Y.rel ); 610 600 // return true; 611 601 //} … … 616 606 // @param id The ID of the mouse button 617 607 //*/ 618 //bool GUIInputHandler::mousePressed(const OIS::MouseEvent &e, OIS::MouseButton IDid)608 //bool GUIInputHandler::mousePressed(const OIS::MouseEvent &e, OIS::MouseButton id) 619 609 //{ 620 610 ////CEGUI::System::getSingleton().injectMouseButtonDown(convertOISMouseButtonToCegui(id)); 621 611 // return true; 622 612 //} … … 627 617 // @param id The ID of the mouse button 628 618 //*/ 629 //bool GUIInputHandler::mouseReleased(const OIS::MouseEvent &e, OIS::MouseButton IDid)619 //bool GUIInputHandler::mouseReleased(const OIS::MouseEvent &e, OIS::MouseButton id) 630 620 //{ 631 621 ////CEGUI::System::getSingleton().injectMouseButtonUp(convertOISMouseButtonToCegui(id)); 632 622 // return true; 633 623 //} -
code/trunk/src/core/InputHandler.h
r1219 r1293 38 38 39 39 #include <string> 40 40 41 #include "ois/OIS.h" 41 42 #include "OrxonoxClass.h" 42 43 #include "CommandExecutor.h" 44 #include "InputInterfaces.h" 43 45 44 46 namespace orxonox … … 54 56 }; 55 57 } 56 57 /**58 @brief Interface class used for key input listeners.59 */60 class _CoreExport KeyHandler : public OIS::KeyListener61 {62 public:63 virtual ~KeyHandler() { }64 virtual bool keyHeld(const OIS::KeyEvent &arg) = 0;65 };66 67 /**68 @brief Interface class used for mouse input listeners.69 */70 class _CoreExport MouseHandler : public OIS::MouseListener71 {72 public:73 virtual ~MouseHandler() { }74 virtual bool mouseHeld(const OIS::MouseEvent &arg, OIS::MouseButtonID id) = 0;75 };76 77 /**78 @brief Interface class used for joy stick input listeners.79 */80 class _CoreExport JoyStickHandler81 {82 public:83 virtual ~JoyStickHandler() { }84 virtual bool buttonPressed (int joyStickID, const OIS::JoyStickEvent &arg, int button) = 0;85 virtual bool buttonReleased(int joyStickID, const OIS::JoyStickEvent &arg, int button) = 0;86 virtual bool buttonHeld (int joyStickID, const OIS::JoyStickEvent &arg, int button) = 0;87 virtual bool axisMoved (int joyStickID, const OIS::JoyStickEvent &arg, int axis) = 0;88 virtual bool sliderMoved (int joyStickID, const OIS::JoyStickEvent &arg, int index) {return true;}89 virtual bool povMoved (int joyStickID, const OIS::JoyStickEvent &arg, int index) {return true;}90 virtual bool vector3Moved (int joyStickID, const OIS::JoyStickEvent &arg, int index) {return true;}91 };92 58 93 59 struct _CoreExport KeyBinding … … 113 79 void setConfigValues(); 114 80 115 std::string testtest;116 117 81 private: // functions 118 82 119 bool execute Binding(KeyBinding &binding);83 bool executeSimpleBinding(KeyBinding &binding); 120 84 121 bool keyPressed (const OIS::KeyEvent &arg);122 bool keyReleased (const OIS::KeyEvent &arg);123 bool keyHeld (const OIS::KeyEvent &arg);85 bool keyPressed (const KeyEvent& evt); 86 bool keyReleased(const KeyEvent& evt); 87 bool keyHeld (const KeyEvent& evt); 124 88 125 bool mousePressed (const OIS::MouseEvent &arg, OIS::MouseButtonID id); 126 bool mouseReleased(const OIS::MouseEvent &arg, OIS::MouseButtonID id); 127 bool mouseHeld (const OIS::MouseEvent &arg, OIS::MouseButtonID id); 128 bool mouseMoved (const OIS::MouseEvent &arg); 89 bool mouseButtonPressed (const MouseState& state, MouseButton::Enum id); 90 bool mouseButtonReleased(const MouseState& state, MouseButton::Enum id); 91 bool mouseButtonHeld (const MouseState& state, MouseButton::Enum id); 92 bool mouseMoved (const MouseState& state); 93 bool mouseScrolled (const MouseState& state); 129 94 130 bool buttonPressed (int joyStickID, const OIS::JoyStickEvent &arg, int button);131 bool buttonReleased(int joyStickID, const OIS::JoyStickEvent &arg, int button);132 bool buttonHeld (int joyStickID, const OIS::JoyStickEvent &arg, int button);133 bool axisMoved (int joyStickID, const OIS::JoyStickEvent &arg, int axis);134 bool sliderMoved (int joyStickID, const OIS::JoyStickEvent &arg, int id);135 bool povMoved (int joyStickID, const OIS::JoyStickEvent &arg, int id);136 bool vector3Moved (int joyStickID, const OIS::JoyStickEvent &arg, int id);95 bool joyStickButtonPressed (const JoyStickState& state, int button); 96 bool joyStickButtonReleased(const JoyStickState& state, int button); 97 bool joyStickButtonHeld (const JoyStickState& state, int button); 98 bool joyStickAxisMoved (const JoyStickState& state, int axis) ; 99 bool joyStickSliderMoved (const JoyStickState& state, int index) ; 100 bool joyStickPovMoved (const JoyStickState& state, int index) ; 101 bool joyStickVector3Moved (const JoyStickState& state, int index) ; 137 102 138 103 private: // variables … … 152 117 static const int numberOfMouseButtons_s = 8; 153 118 //! Array of input events for every pressed mouse button 154 std::string bindingsMouseButtonPress_ [numberOfMouseButtons_s];119 KeyBinding bindingsMouseButtonPress_ [numberOfMouseButtons_s]; 155 120 //! Array of input events for every released mouse button 156 std::string bindingsMouseButtonRelease_[numberOfMouseButtons_s];121 KeyBinding bindingsMouseButtonRelease_[numberOfMouseButtons_s]; 157 122 //! Array of input events for every held mouse button 158 std::string bindingsMouseButtonHold_ [numberOfMouseButtons_s]; 123 KeyBinding bindingsMouseButtonHold_ [numberOfMouseButtons_s]; 124 //! Key binding for mouse moved event 125 KeyBinding bindingMouseMoved_; 126 //! Key binding for mouse scrolled event 127 KeyBinding bindingMouseScrolled_; 159 128 //! Names of the mouse buttons as strings 160 129 std::string mouseButtonNames_[numberOfMouseButtons_s]; … … 163 132 static const int numberOfJoyStickButtons_s = 32; 164 133 //! Array of input events for every pressed joy stick button 165 std::string bindingsJoyStickButtonPress_ [numberOfJoyStickButtons_s];134 KeyBinding bindingsJoyStickButtonPress_ [numberOfJoyStickButtons_s]; 166 135 //! Array of input events for every released joy stick button 167 std::string bindingsJoyStickButtonRelease_[numberOfJoyStickButtons_s];136 KeyBinding bindingsJoyStickButtonRelease_[numberOfJoyStickButtons_s]; 168 137 //! Array of input events for every held joy stick button 169 std::string bindingsJoyStickButtonHold_ [numberOfJoyStickButtons_s];138 KeyBinding bindingsJoyStickButtonHold_ [numberOfJoyStickButtons_s]; 170 139 //! Names of the joy stick buttons as strings 171 140 std::string joyStickButtonNames_[numberOfJoyStickButtons_s]; … … 186 155 //private: 187 156 // // input events 188 189 190 157 //bool keyPressed (const OIS::KeyEvent &arg); 158 //bool keyReleased (const OIS::KeyEvent &arg); 159 //bool keyHeld (const OIS::KeyEvent &arg); 191 160 192 // bool mousePressed (const OIS::MouseEvent &arg, OIS::MouseButton IDid);193 //bool mouseReleased(const OIS::MouseEvent &arg, OIS::MouseButtonIDid);194 //bool mouseHeld (const OIS::MouseEvent &arg, OIS::MouseButtonIDid);161 // bool mousePressed (const OIS::MouseEvent &arg, OIS::MouseButton id); 162 //bool mouseReleased(const OIS::MouseEvent &arg, OIS::MouseButton id); 163 //bool mouseHeld (const OIS::MouseEvent &arg, OIS::MouseButton id); 195 164 // bool mouseMoved (const OIS::MouseEvent &arg); 196 165 197 198 199 200 201 202 166 //bool buttonPressed (const OIS::JoyStickEvent &arg, int button); 167 //bool buttonReleased(const OIS::JoyStickEvent &arg, int button); 168 //bool buttonHeld (const OIS::JoyStickEvent &arg, int button); 169 //bool axisMoved (const OIS::JoyStickEvent &arg, int axis); 170 //bool sliderMoved (const OIS::JoyStickEvent &arg, int id); 171 //bool povMoved (const OIS::JoyStickEvent &arg, int id); 203 172 //}; 204 173 -
code/trunk/src/core/InputManager.cc
r1219 r1293 30 30 @file 31 31 @brief Implementation of the InputManager that captures all the input from OIS 32 and redirects it to handlers if necessary.32 and redirects it to handlers. 33 33 */ 34 34 … … 52 52 InputManager::InputManager() : 53 53 inputSystem_(0), keyboard_(0), mouse_(0), 54 state_(IS_UNINIT), stateRequest_(IS_UNINIT) 54 joySticksSize_(0), 55 state_(IS_UNINIT), stateRequest_(IS_UNINIT), 56 keyboardModifiers_(0) 55 57 { 56 58 RegisterObject(InputManager); 57 58 this->joySticks_.reserve(5);59 //this->activeJoyStickHandlers_.reserve(10);60 this->activeKeyHandlers_.reserve(10);61 this->activeMouseHandlers_.reserve(10);62 59 } 63 60 … … 87 84 @param windowHeight The height of the render window 88 85 */ 89 bool InputManager::_initialise(const size_t windowHnd, const int windowWidth, constint windowHeight,90 const bool createKeyboard, const bool createMouse, constbool createJoySticks)86 bool InputManager::_initialise(const size_t windowHnd, int windowWidth, int windowHeight, 87 bool createKeyboard, bool createMouse, bool createJoySticks) 91 88 { 92 89 if (state_ == IS_UNINIT) 93 90 { 91 CCOUT(3) << "Initialising Input System..." << std::endl; 94 92 CCOUT(ORX_DEBUG) << "Initialising OIS components..." << std::endl; 95 93 … … 145 143 addKeyHandler(binder, "keybinder"); 146 144 addMouseHandler(binder, "keybinder"); 145 addJoyStickHandler(binder, "keybinder"); 147 146 148 147 // Read all the key bindings and assign them … … 234 233 bool InputManager::_initialiseJoySticks() 235 234 { 236 if (joySticks _.size()> 0)235 if (joySticksSize_ > 0) 237 236 { 238 237 CCOUT(2) << "Warning: Joy sticks already initialised, skipping." << std::endl; … … 265 264 return false; 266 265 } 266 joySticksSize_ = joySticks_.size(); 267 activeJoyStickHandlers_.resize(joySticksSize_); 268 joyStickButtonsDown_.resize(joySticksSize_); 267 269 return success; 268 270 } … … 273 275 void InputManager::_destroy() 274 276 { 275 CCOUT(ORX_DEBUG) << "Destroying ..." << std::endl;276 277 277 if (state_ != IS_UNINIT) 278 278 { 279 CCOUT(ORX_DEBUG) << "Destroying ..." << std::endl; 280 279 281 if (keyHandlers_.find("buffer") != keyHandlers_.end()) 280 282 delete keyHandlers_["buffer"]; … … 296 298 297 299 state_ = IS_UNINIT; 298 } 299 else 300 CCOUT(ORX_WARNING) << "Warning: Cannot be destroyed, since not initialised." << std::endl; 301 302 CCOUT(ORX_DEBUG) << "Destroying done." << std::endl; 300 CCOUT(ORX_DEBUG) << "Destroying done." << std::endl; 301 } 303 302 } 304 303 … … 336 335 void InputManager::_destroyJoySticks() 337 336 { 338 if (joySticks _.size()> 0)337 if (joySticksSize_ > 0) 339 338 { 340 339 // note: inputSystem_ can never be 0, or else the code is mistaken 341 for (unsigned int i = 0; i < joySticks _.size(); i++)340 for (unsigned int i = 0; i < joySticksSize_; i++) 342 341 if (joySticks_[i] != 0) 343 342 inputSystem_->destroyInputObject(joySticks_[i]); 344 343 345 344 joySticks_.clear(); 345 joySticksSize_ = 0; 346 346 activeJoyStickHandlers_.clear(); 347 347 joyStickButtonsDown_.clear(); … … 372 372 activeKeyHandlers_.clear(); 373 373 activeMouseHandlers_.clear(); 374 activeJoyStickHandlers_.clear(); 374 for (unsigned int i = 0; i < joySticksSize_; i++) 375 activeJoyStickHandlers_[i].clear(); 375 376 376 377 switch (stateRequest_) … … 381 382 activeKeyHandlers_.push_back(keyHandlers_["keybinder"]); 382 383 activeMouseHandlers_.push_back(mouseHandlers_["keybinder"]); 383 activeMouseHandlers_.push_back(mouseHandlers_["SpaceShip"]);384 for (std::vector<OIS::JoyStick*>::const_iterator it = joySticks_.begin();385 it != joySticks_.end(); it++)386 activeJoyStickHandlers_[ *it].push_back(joyStickHandlers_["keybinder"]);384 if (getMouseHandler("SpaceShip")) 385 activeMouseHandlers_.push_back(mouseHandlers_["SpaceShip"]); 386 for (unsigned int i = 0; i < joySticksSize_; i++) 387 activeJoyStickHandlers_[i].push_back(joyStickHandlers_["keybinder"]); 387 388 break; 388 389 … … 393 394 case IS_CONSOLE: 394 395 activeMouseHandlers_.push_back(mouseHandlers_["keybinder"]); 395 for (std::vector<OIS::JoyStick*>::const_iterator it = joySticks_.begin(); 396 it != joySticks_.end(); it++) 397 activeJoyStickHandlers_[*it].push_back(joyStickHandlers_["keybinder"]); 396 if (getMouseHandler("SpaceShip")) 397 activeMouseHandlers_.push_back(mouseHandlers_["SpaceShip"]); 398 for (unsigned int i = 0; i < joySticksSize_; i++) 399 activeJoyStickHandlers_[i].push_back(joyStickHandlers_["keybinder"]); 398 400 399 401 activeKeyHandlers_.push_back(keyHandlers_["buffer"]); … … 412 414 if (keyboard_) 413 415 keyboard_->capture(); 416 for (unsigned int i = 0; i < joySticksSize_; i++) 417 joySticks_[i]->capture(); 414 418 415 419 416 420 // call all the handlers for the held key events 417 for (std::list<OIS::KeyCode>::const_iterator itKey = keysDown_.begin(); 418 itKey != keysDown_.end(); itKey++) 419 { 420 OIS::KeyEvent keyArg(keyboard_, *itKey, 0); 421 for (unsigned int i = 0; i < activeKeyHandlers_.size(); i++) 422 activeKeyHandlers_[i]->keyHeld(keyArg); 423 } 421 for (unsigned int iKey = 0; iKey < keysDown_.size(); iKey++) 422 for (unsigned int iHandler = 0; iHandler < activeKeyHandlers_.size(); iHandler++) 423 activeKeyHandlers_[iHandler]->keyHeld(KeyEvent(keysDown_[iKey], keyboardModifiers_)); 424 424 425 425 // call all the handlers for the held mouse button events 426 for (std::list<OIS::MouseButtonID>::const_iterator itMouseButton = mouseButtonsDown_.begin(); 427 itMouseButton != mouseButtonsDown_.end(); itMouseButton++) 428 { 429 OIS::MouseEvent mouseButtonArg(mouse_, mouse_->getMouseState()); 430 for (unsigned int i = 0; i < activeMouseHandlers_.size(); i++) 431 activeMouseHandlers_[i]->mouseHeld(mouseButtonArg, *itMouseButton); 432 } 426 for (unsigned int iButton = 0; iButton < mouseButtonsDown_.size(); iButton++) 427 for (unsigned int iHandler = 0; iHandler < activeMouseHandlers_.size(); iHandler++) 428 activeMouseHandlers_[iHandler]->mouseButtonHeld(mouse_->getMouseState(), mouseButtonsDown_[iButton]); 433 429 434 430 // call all the handlers for the held joy stick button events 435 for (std::map< OIS::JoyStick*, std::list <int> >::const_iterator itJoyStick = joyStickButtonsDown_.begin(); 436 itJoyStick != joyStickButtonsDown_.end(); itJoyStick++) 437 { 438 OIS::JoyStick* joyStick = (*itJoyStick).first; 439 for (std::list<int>::const_iterator itJoyStickButton = (*itJoyStick).second.begin(); 440 itJoyStickButton != (*itJoyStick).second.end(); itJoyStickButton++) 441 { 442 OIS::JoyStickEvent joyStickButtonArg(joyStick, joyStick->getJoyStickState()); 443 for (unsigned int i = 0; i < activeJoyStickHandlers_[joyStick].size(); i++) 444 activeJoyStickHandlers_[joyStick][i]->buttonHeld(i, joyStickButtonArg, *itJoyStickButton); 445 } 446 } 447 } 448 431 for (unsigned int iJoyStick = 0; iJoyStick < joySticksSize_; iJoyStick++) 432 for (unsigned int iButton = 0; iButton < joyStickButtonsDown_[iJoyStick].size(); iButton++) 433 for (unsigned int iHandler = 0; iHandler < activeJoyStickHandlers_[iJoyStick].size(); iHandler++) 434 activeJoyStickHandlers_[iJoyStick][iHandler]->joyStickButtonHeld( 435 JoyStickState(joySticks_[iJoyStick]->getJoyStickState(), iJoyStick), joyStickButtonsDown_[iJoyStick][iButton]); 436 } 449 437 450 438 // ###### Key Events ###### … … 457 445 { 458 446 // check whether the key already is in the list (can happen when focus was lost) 459 for (std::list<OIS::KeyCode>::iterator it = keysDown_.begin(); it != keysDown_.end(); it++) 460 { 461 if (*it == e.key) 462 { 463 keysDown_.erase(it); 464 break; 465 } 466 } 467 keysDown_.push_back(e.key); 447 unsigned int iKey = 0; 448 while (iKey < keysDown_.size() && keysDown_[iKey].key != (KeyCode::Enum)e.key) 449 iKey++; 450 if (iKey == keysDown_.size()) 451 keysDown_.push_back(Key(e)); 452 453 // update modifiers 454 if(e.key == OIS::KC_RMENU || e.key == OIS::KC_LMENU) 455 keyboardModifiers_ |= KeyboardModifier::Alt; // alt key 456 if(e.key == OIS::KC_RCONTROL || e.key == OIS::KC_LCONTROL) 457 keyboardModifiers_ |= KeyboardModifier::Ctrl; // ctrl key 458 if(e.key == OIS::KC_RSHIFT || e.key == OIS::KC_LSHIFT) 459 keyboardModifiers_ |= KeyboardModifier::Shift; // shift key 468 460 469 461 for (unsigned int i = 0; i < activeKeyHandlers_.size(); i++) 470 activeKeyHandlers_[i]->keyPressed( e);462 activeKeyHandlers_[i]->keyPressed(KeyEvent(e, keyboardModifiers_)); 471 463 472 464 return true; … … 480 472 { 481 473 // remove the key from the keysDown_ list 482 for ( std::list<OIS::KeyCode>::iterator it = keysDown_.begin(); it != keysDown_.end(); it++)483 { 484 if ( *it ==e.key)485 { 486 keysDown_.erase( it);474 for (unsigned int iKey = 0; iKey < keysDown_.size(); iKey++) 475 { 476 if (keysDown_[iKey].key == (KeyCode::Enum)e.key) 477 { 478 keysDown_.erase(keysDown_.begin() + iKey); 487 479 break; 488 480 } 489 481 } 490 482 483 // update modifiers 484 if(e.key == OIS::KC_RMENU || e.key == OIS::KC_LMENU) 485 keyboardModifiers_ &= ~KeyboardModifier::Alt; // alt key 486 if(e.key == OIS::KC_RCONTROL || e.key == OIS::KC_LCONTROL) 487 keyboardModifiers_ &= ~KeyboardModifier::Ctrl; // ctrl key 488 if(e.key == OIS::KC_RSHIFT || e.key == OIS::KC_LSHIFT) 489 keyboardModifiers_ &= ~KeyboardModifier::Shift; // shift key 490 491 491 for (unsigned int i = 0; i < activeKeyHandlers_.size(); i++) 492 activeKeyHandlers_[i]->keyReleased( e);492 activeKeyHandlers_[i]->keyReleased(KeyEvent(e, keyboardModifiers_)); 493 493 494 494 return true; … … 504 504 bool InputManager::mouseMoved(const OIS::MouseEvent &e) 505 505 { 506 for (unsigned int i = 0; i < activeMouseHandlers_.size(); i++) 507 activeMouseHandlers_[i]->mouseMoved(e); 506 // check for actual moved event 507 if (e.state.X.rel != 0 || e.state.Y.rel != 0) 508 { 509 for (unsigned int i = 0; i < activeMouseHandlers_.size(); i++) 510 activeMouseHandlers_[i]->mouseMoved(e.state); 511 } 512 513 // check for mouse scrolled event 514 if (e.state.Z.rel != 0) 515 { 516 for (unsigned int i = 0; i < activeMouseHandlers_.size(); i++) 517 activeMouseHandlers_[i]->mouseScrolled(e.state); 518 } 508 519 509 520 return true; … … 518 529 { 519 530 // check whether the button already is in the list (can happen when focus was lost) 520 for (std::list<OIS::MouseButtonID>::iterator it = mouseButtonsDown_.begin(); it != mouseButtonsDown_.end(); it++) 521 { 522 if (*it == id) 523 { 524 mouseButtonsDown_.erase(it); 525 break; 526 } 527 } 528 mouseButtonsDown_.push_back(id); 531 unsigned int iButton = 0; 532 while (iButton < mouseButtonsDown_.size() && mouseButtonsDown_[iButton] != (MouseButton::Enum)id) 533 iButton++; 534 if (iButton == mouseButtonsDown_.size()) 535 mouseButtonsDown_.push_back((MouseButton::Enum)id); 529 536 530 537 for (unsigned int i = 0; i < activeMouseHandlers_.size(); i++) 531 activeMouseHandlers_[i]->mouse Pressed(e,id);538 activeMouseHandlers_[i]->mouseButtonPressed(e.state, (MouseButton::Enum)id); 532 539 533 540 return true; … … 542 549 { 543 550 // remove the button from the keysDown_ list 544 for ( std::list<OIS::MouseButtonID>::iterator it = mouseButtonsDown_.begin(); it != mouseButtonsDown_.end(); it++)545 { 546 if ( *it ==id)547 { 548 mouseButtonsDown_.erase( it);551 for (unsigned int iButton = 0; iButton < mouseButtonsDown_.size(); iButton++) 552 { 553 if (mouseButtonsDown_[iButton] == (MouseButton::Enum)id) 554 { 555 mouseButtonsDown_.erase(mouseButtonsDown_.begin() + iButton); 549 556 break; 550 557 } … … 552 559 553 560 for (unsigned int i = 0; i < activeMouseHandlers_.size(); i++) 554 activeMouseHandlers_[i]->mouse Released(e,id);561 activeMouseHandlers_[i]->mouseButtonReleased(e.state, (MouseButton::Enum)id); 555 562 556 563 return true; … … 562 569 bool InputManager::buttonPressed(const OIS::JoyStickEvent &arg, int button) 563 570 { 571 // use the device to identify which one called the method 564 572 OIS::JoyStick* joyStick = (OIS::JoyStick*)arg.device; 573 unsigned int iJoyStick = 0; 574 while (joySticks_[iJoyStick] != joyStick) 575 iJoyStick++; 565 576 566 577 // check whether the button already is in the list (can happen when focus was lost) 567 std::list<int>& buttonsDownList = joyStickButtonsDown_[joyStick]; 568 for (std::list<int>::iterator it = buttonsDownList.begin(); it != buttonsDownList.end(); it++) 569 { 570 if (*it == button) 571 { 572 buttonsDownList.erase(it); 578 std::vector<int> buttonsDown = joyStickButtonsDown_[iJoyStick]; 579 unsigned int iButton = 0; 580 while (iButton < buttonsDown.size() && buttonsDown[iButton] != button) 581 iButton++; 582 if (iButton == buttonsDown.size()) 583 buttonsDown.push_back(button); 584 585 for (unsigned int iHandler = 0; iHandler < activeJoyStickHandlers_[iJoyStick].size(); iHandler++) 586 activeJoyStickHandlers_[iJoyStick][iHandler]->joyStickButtonPressed(JoyStickState(arg.state, iJoyStick), button); 587 588 return true; 589 } 590 591 bool InputManager::buttonReleased(const OIS::JoyStickEvent &arg, int button) 592 { 593 // use the device to identify which one called the method 594 OIS::JoyStick* joyStick = (OIS::JoyStick*)arg.device; 595 unsigned int iJoyStick = 0; 596 while (joySticks_[iJoyStick] != joyStick) 597 iJoyStick++; 598 599 // remove the button from the joyStickButtonsDown_ list 600 std::vector<int> buttonsDown = joyStickButtonsDown_[iJoyStick]; 601 for (unsigned int iButton = 0; iButton < buttonsDown.size(); iButton++) 602 { 603 if (buttonsDown[iButton] == button) 604 { 605 buttonsDown.erase(buttonsDown.begin() + iButton); 573 606 break; 574 607 } 575 608 } 576 joyStickButtonsDown_[joyStick].push_back(button); 577 578 for (unsigned int i = 0; i < activeJoyStickHandlers_[joyStick].size(); i++)579 activeJoyStickHandlers_[joyStick][i]->buttonPressed(i, arg, button); 580 581 return true;582 } 583 584 bool InputManager::buttonReleased(const OIS::JoyStickEvent &arg, int button)585 {609 610 for (unsigned int iHandler = 0; iHandler < activeJoyStickHandlers_[iJoyStick].size(); iHandler++) 611 activeJoyStickHandlers_[iJoyStick][iHandler]->joyStickButtonReleased(JoyStickState(arg.state, iJoyStick), button); 612 613 return true; 614 } 615 616 bool InputManager::axisMoved(const OIS::JoyStickEvent &arg, int axis) 617 { 618 // use the device to identify which one called the method 586 619 OIS::JoyStick* joyStick = (OIS::JoyStick*)arg.device; 587 588 // remove the button from the joyStickButtonsDown_ list 589 std::list<int>& buttonsDownList = joyStickButtonsDown_[joyStick]; 590 for (std::list<int>::iterator it = buttonsDownList.begin(); it != buttonsDownList.end(); it++) 591 { 592 if (*it == button) 593 { 594 buttonsDownList.erase(it); 595 break; 596 } 597 } 598 599 for (unsigned int i = 0; i < activeJoyStickHandlers_[joyStick].size(); i++) 600 activeJoyStickHandlers_[joyStick][i]->buttonReleased(i, arg, button); 601 602 return true; 603 } 604 605 bool InputManager::axisMoved(const OIS::JoyStickEvent &arg, int axis) 606 { 620 unsigned int iJoyStick = 0; 621 while (joySticks_[iJoyStick] != joyStick) 622 iJoyStick++; 623 624 for (unsigned int iHandler = 0; iHandler < activeJoyStickHandlers_[iJoyStick].size(); iHandler++) 625 activeJoyStickHandlers_[iJoyStick][iHandler]->joyStickAxisMoved(JoyStickState(arg.state, iJoyStick), axis); 626 627 return true; 628 } 629 630 bool InputManager::sliderMoved(const OIS::JoyStickEvent &arg, int id) 631 { 632 // use the device to identify which one called the method 607 633 OIS::JoyStick* joyStick = (OIS::JoyStick*)arg.device; 608 for (unsigned int i = 0; i < activeJoyStickHandlers_[joyStick].size(); i++) 609 activeJoyStickHandlers_[joyStick][i]->axisMoved(i, arg, axis); 610 611 return true; 612 } 613 614 bool InputManager::sliderMoved(const OIS::JoyStickEvent &arg, int id) 615 { 634 unsigned int iJoyStick = 0; 635 while (joySticks_[iJoyStick] != joyStick) 636 iJoyStick++; 637 638 for (unsigned int iHandler = 0; iHandler < activeJoyStickHandlers_[iJoyStick].size(); iHandler++) 639 activeJoyStickHandlers_[iJoyStick][iHandler]->joyStickSliderMoved(JoyStickState(arg.state, iJoyStick), id); 640 641 return true; 642 } 643 644 bool InputManager::povMoved(const OIS::JoyStickEvent &arg, int id) 645 { 646 // use the device to identify which one called the method 616 647 OIS::JoyStick* joyStick = (OIS::JoyStick*)arg.device; 617 for (unsigned int i = 0; i < activeJoyStickHandlers_[joyStick].size(); i++) 618 activeJoyStickHandlers_[joyStick][i]->sliderMoved(i, arg, id); 619 620 return true; 621 } 622 623 bool InputManager::povMoved(const OIS::JoyStickEvent &arg, int id) 624 { 648 unsigned int iJoyStick = 0; 649 while (joySticks_[iJoyStick] != joyStick) 650 iJoyStick++; 651 652 for (unsigned int iHandler = 0; iHandler < activeJoyStickHandlers_[iJoyStick].size(); iHandler++) 653 activeJoyStickHandlers_[iJoyStick][iHandler]->joyStickPovMoved(JoyStickState(arg.state, iJoyStick), id); 654 655 return true; 656 } 657 658 bool InputManager::vector3Moved(const OIS::JoyStickEvent &arg, int id) 659 { 660 // use the device to identify which one called the method 625 661 OIS::JoyStick* joyStick = (OIS::JoyStick*)arg.device; 626 for (unsigned int i = 0; i < activeJoyStickHandlers_[joyStick].size(); i++) 627 activeJoyStickHandlers_[joyStick][i]->povMoved(i, arg, id); 628 629 return true; 630 } 631 632 bool InputManager::vector3Moved(const OIS::JoyStickEvent &arg, int id) 633 { 634 OIS::JoyStick* joyStick = (OIS::JoyStick*)arg.device; 635 for (unsigned int i = 0; i < activeJoyStickHandlers_[joyStick].size(); i++) 636 activeJoyStickHandlers_[joyStick][i]->vector3Moved(i, arg, id); 662 unsigned int iJoyStick = 0; 663 while (joySticks_[iJoyStick] != joyStick) 664 iJoyStick++; 665 666 for (unsigned int iHandler = 0; iHandler < activeJoyStickHandlers_[iJoyStick].size(); iHandler++) 667 activeJoyStickHandlers_[iJoyStick][iHandler]->joyStickVector3Moved(JoyStickState(arg.state, iJoyStick), id); 637 668 638 669 return true; … … 645 676 // ################################ 646 677 647 bool InputManager::initialise(const size_t windowHnd, const int windowWidth, constint windowHeight,648 const bool createKeyboard, const bool createMouse, constbool createJoySticks)678 bool InputManager::initialise(const size_t windowHnd, int windowWidth, int windowHeight, 679 bool createKeyboard, bool createMouse, bool createJoySticks) 649 680 { 650 681 return _getSingleton()._initialise(windowHnd, windowWidth, windowHeight, … … 685 716 int InputManager::numberOfJoySticks() 686 717 { 687 return _getSingleton().joySticks_.size(); 718 return _getSingleton().joySticksSize_; 719 } 720 721 bool InputManager::isKeyDown(KeyCode::Enum key) 722 { 723 if (_getSingleton().keyboard_) 724 return _getSingleton().keyboard_->isKeyDown((OIS::KeyCode)key); 725 else 726 return false; 727 } 728 729 bool InputManager::isModifierDown(KeyboardModifier::Enum modifier) 730 { 731 if (_getSingleton().keyboard_) 732 return isModifierDown(modifier); 733 else 734 return false; 735 } 736 737 const MouseState InputManager::getMouseState() 738 { 739 if (_getSingleton().mouse_) 740 return _getSingleton().mouse_->getMouseState(); 741 else 742 return MouseState(); 743 } 744 745 const JoyStickState InputManager::getJoyStickState(unsigned int ID) 746 { 747 if (ID < _getSingleton().joySticksSize_) 748 return JoyStickState(_getSingleton().joySticks_[ID]->getJoyStickState(), ID); 749 else 750 return JoyStickState(); 688 751 } 689 752 … … 757 820 bool InputManager::addKeyHandler(KeyHandler* handler, const std::string& name) 758 821 { 822 if (!handler) 823 return false; 759 824 if (_getSingleton().keyHandlers_.find(name) == _getSingleton().keyHandlers_.end()) 760 825 { … … 883 948 bool InputManager::addMouseHandler(MouseHandler* handler, const std::string& name) 884 949 { 950 if (!handler) 951 return false; 885 952 if (_getSingleton().mouseHandlers_.find(name) == _getSingleton().mouseHandlers_.end()) 886 953 { … … 1010 1077 bool InputManager::addJoyStickHandler(JoyStickHandler* handler, const std::string& name) 1011 1078 { 1079 if (!handler) 1080 return false; 1012 1081 if (_getSingleton().joyStickHandlers_.find(name) == _getSingleton().joyStickHandlers_.end()) 1013 1082 { … … 1061 1130 @return False if name or id was not found, true otherwise. 1062 1131 */ 1063 bool InputManager::enableJoyStickHandler(const std::string& name, constint ID)1132 bool InputManager::enableJoyStickHandler(const std::string& name, unsigned int ID) 1064 1133 { 1065 1134 // get handler pointer from the map with all stored handlers … … 1069 1138 1070 1139 // check for existence of the ID 1071 if ((unsigned int)ID >= _getSingleton().joySticks_.size()) 1072 return false; 1073 OIS::JoyStick* joyStick = _getSingleton().joySticks_[ID]; 1140 if (ID >= _getSingleton().joySticksSize_) 1141 return false; 1074 1142 1075 1143 // see whether the handler already is in the list 1076 for (std::vector<JoyStickHandler*>::iterator it = _getSingleton().activeJoyStickHandlers_[ joyStick].begin();1077 it != _getSingleton().activeJoyStickHandlers_[ joyStick].end(); it++)1144 for (std::vector<JoyStickHandler*>::iterator it = _getSingleton().activeJoyStickHandlers_[ID].begin(); 1145 it != _getSingleton().activeJoyStickHandlers_[ID].end(); it++) 1078 1146 { 1079 1147 if ((*it) == (*handlerIt).second) … … 1083 1151 } 1084 1152 } 1085 _getSingleton().activeJoyStickHandlers_[ joyStick].push_back((*handlerIt).second);1153 _getSingleton().activeJoyStickHandlers_[ID].push_back((*handlerIt).second); 1086 1154 _getSingleton().stateRequest_ = IS_CUSTOM; 1087 1155 return true; … … 1093 1161 @return False if name or id was not found, true otherwise. 1094 1162 */ 1095 bool InputManager::disableJoyStickHandler(const std::string &name, int ID)1163 bool InputManager::disableJoyStickHandler(const std::string &name, unsigned int ID) 1096 1164 { 1097 1165 // get handler pointer from the map with all stored handlers … … 1101 1169 1102 1170 // check for existence of the ID 1103 if ((unsigned int)ID >= _getSingleton().joySticks_.size()) 1104 return false; 1105 OIS::JoyStick* joyStick = _getSingleton().joySticks_[ID]; 1171 if (ID >= _getSingleton().joySticksSize_) 1172 return false; 1106 1173 1107 1174 // look for the handler in the list 1108 for (std::vector<JoyStickHandler*>::iterator it = _getSingleton().activeJoyStickHandlers_[ joyStick].begin();1109 it != _getSingleton().activeJoyStickHandlers_[ joyStick].end(); it++)1175 for (std::vector<JoyStickHandler*>::iterator it = _getSingleton().activeJoyStickHandlers_[ID].begin(); 1176 it != _getSingleton().activeJoyStickHandlers_[ID].end(); it++) 1110 1177 { 1111 1178 if ((*it) == (*handlerIt).second) 1112 1179 { 1113 _getSingleton().activeJoyStickHandlers_[ joyStick].erase(it);1180 _getSingleton().activeJoyStickHandlers_[ID].erase(it); 1114 1181 _getSingleton().stateRequest_ = IS_CUSTOM; 1115 1182 return true; … … 1124 1191 @return False if key handler is not active or doesn't exist, true otherwise. 1125 1192 */ 1126 bool InputManager::isJoyStickHandlerActive(const std::string& name, constint ID)1193 bool InputManager::isJoyStickHandlerActive(const std::string& name, unsigned int ID) 1127 1194 { 1128 1195 // get handler pointer from the map with all stored handlers … … 1132 1199 1133 1200 // check for existence of the ID 1134 if ((unsigned int)ID >= _getSingleton().joySticks_.size()) 1135 return false; 1136 OIS::JoyStick* joyStick = _getSingleton().joySticks_[ID]; 1201 if (ID >= _getSingleton().joySticksSize_) 1202 return false; 1137 1203 1138 1204 // see whether the handler already is in the list 1139 for (std::vector<JoyStickHandler*>::iterator it = _getSingleton().activeJoyStickHandlers_[ joyStick].begin();1140 it != _getSingleton().activeJoyStickHandlers_[ joyStick].end(); it++)1205 for (std::vector<JoyStickHandler*>::iterator it = _getSingleton().activeJoyStickHandlers_[ID].begin(); 1206 it != _getSingleton().activeJoyStickHandlers_[ID].end(); it++) 1141 1207 { 1142 1208 if ((*it) == (*handlerIt).second) -
code/trunk/src/core/InputManager.h
r1219 r1293 39 39 40 40 #include <map> 41 #include < list>41 #include <vector> 42 42 43 43 #include "ois/OIS.h" 44 44 #include "Tickable.h" 45 #include "InputInterfaces.h" 45 46 46 47 namespace orxonox 47 48 { 48 class Mouse : public OIS::Mouse49 {50 };51 52 49 /** 53 50 @brief Captures and distributes mouse and keyboard input. 54 51 */ 55 52 class _CoreExport InputManager 56 : public Tickable ,53 : public TickableReal, 57 54 public OIS::KeyListener, public OIS::MouseListener, public OIS::JoyStickListener 58 55 { … … 72 69 73 70 public: // static functions 74 static bool initialise(const size_t windowHnd, const int windowWidth, constint windowHeight,75 const bool createKeyboard = true, const bool createMouse = true, constbool createJoySticks = false);71 static bool initialise(const size_t windowHnd, int windowWidth, int windowHeight, 72 bool createKeyboard = true, bool createMouse = true, bool createJoySticks = false); 76 73 static bool initialiseKeyboard(); 77 74 static bool initialiseMouse(); … … 85 82 static void destroyMouse(); 86 83 static void destroyJoySticks(); 84 85 static bool isModifierDown(KeyboardModifier::Enum modifier); 86 static bool isKeyDown(KeyCode::Enum key); 87 static const MouseState getMouseState(); 88 static const JoyStickState getJoyStickState(unsigned int ID); 87 89 88 90 static void setWindowExtents(const int width, const int height); … … 108 110 static bool removeJoyStickHandler (const std::string& name); 109 111 static JoyStickHandler* getJoyStickHandler(const std::string& name); 110 static bool enableJoyStickHandler (const std::string& name, const int id); 111 static bool disableJoyStickHandler (const std::string& name, const int id); 112 static bool isJoyStickHandlerActive (const std::string& name, const int id); 113 114 // Temporary solutions. Will be removed soon! 115 static OIS::Mouse* getMouse() { return _getSingleton().mouse_ ; } 116 static OIS::Keyboard* getKeyboard() { return _getSingleton().keyboard_; } 112 static bool enableJoyStickHandler (const std::string& name, unsigned int id); 113 static bool disableJoyStickHandler (const std::string& name, unsigned int id); 114 static bool isJoyStickHandlerActive (const std::string& name, unsigned int id); 117 115 118 116 private: // functions … … 123 121 124 122 // Intenal methods 125 bool _initialise(const size_t, const int, const int, const bool, const bool, constbool);123 bool _initialise(const size_t, int, int, bool, bool, bool); 126 124 bool _initialiseKeyboard(); 127 125 bool _initialiseMouse(); … … 133 131 void _destroyJoySticks(); 134 132 135 //void _setNumberOfJoysticks(int size);136 137 133 void tick(float dt); 138 134 139 135 // input events 140 141 136 bool mousePressed (const OIS::MouseEvent &arg, OIS::MouseButtonID id); 137 bool mouseReleased (const OIS::MouseEvent &arg, OIS::MouseButtonID id); 142 138 bool mouseMoved (const OIS::MouseEvent &arg); 143 144 145 146 147 148 149 150 139 bool keyPressed (const OIS::KeyEvent &arg); 140 bool keyReleased (const OIS::KeyEvent &arg); 141 bool buttonPressed (const OIS::JoyStickEvent &arg, int button); 142 bool buttonReleased(const OIS::JoyStickEvent &arg, int button); 143 bool axisMoved (const OIS::JoyStickEvent &arg, int axis); 144 bool sliderMoved (const OIS::JoyStickEvent &arg, int id); 145 bool povMoved (const OIS::JoyStickEvent &arg, int id); 146 bool vector3Moved (const OIS::JoyStickEvent &arg, int id); 151 147 152 148 static InputManager& _getSingleton(); … … 158 154 OIS::Mouse* mouse_; //!< OIS keyboard 159 155 std::vector<OIS::JoyStick*> joySticks_; //!< OIS joy sticks 156 unsigned int joySticksSize_; 160 157 161 158 InputState state_; 162 159 InputState stateRequest_; 160 unsigned int keyboardModifiers_; 163 161 164 162 std::map<std::string, KeyHandler*> keyHandlers_; … … 168 166 std::vector<KeyHandler*> activeKeyHandlers_; 169 167 std::vector<MouseHandler*> activeMouseHandlers_; 170 std:: map< OIS::JoyStick*,std::vector<JoyStickHandler*> > activeJoyStickHandlers_;168 std::vector<std::vector<JoyStickHandler*> > activeJoyStickHandlers_; 171 169 172 std:: list<OIS::KeyCode>keysDown_;173 std:: list<OIS::MouseButtonID>mouseButtonsDown_;174 std:: map< OIS::JoyStick*, std::list<int> >joyStickButtonsDown_;170 std::vector<Key> keysDown_; 171 std::vector<MouseButton::Enum> mouseButtonsDown_; 172 std::vector<std::vector<int> > joyStickButtonsDown_; 175 173 176 174 }; 175 177 176 } 178 177 -
code/trunk/src/core/Namespace.cc
r1062 r1293 37 37 CreateFactory(Namespace); 38 38 39 Namespace::Namespace() 39 Namespace::Namespace() : 40 bAutogeneratedFileRootNamespace_(false), 41 bRoot_(false), 42 operator_("or") 40 43 { 41 44 RegisterObject(Namespace); 42 43 this->bAutogeneratedFileRootNamespace_ = false;44 this->bRoot_ = false;45 this->operator_ = "or";46 45 } 47 46 -
code/trunk/src/core/OrxonoxClass.cc
r1056 r1293 37 37 { 38 38 /** @brief Constructor: Sets the default values. */ 39 OrxonoxClass::OrxonoxClass() 39 OrxonoxClass::OrxonoxClass() : 40 identifier_(0), 41 parents_(0) 40 42 { 41 43 this->setConfigValues(); 42 43 this->identifier_ = 0;44 this->parents_ = 0;45 44 } 46 45 -
code/trunk/src/core/SignalHandler.cc
r1062 r1293 35 35 36 36 #include <assert.h> 37 #include <iostream> 37 38 38 39 #include "Debug.h" … … 43 44 44 45 #include <wait.h> 46 #include <X11/Xlib.h> 47 #include <X11/Xutil.h> 48 #include <X11/keysym.h> 49 50 bool SignalHandler::bXAutoKeyRepeatOn_ = false; 45 51 46 52 SignalHandler::SignalHandler() … … 58 64 this->fileName = fileName; 59 65 66 // prepare for restoring XAutoKeyRepeat 67 Display* display; 68 if ((display = XOpenDisplay(0))) 69 { 70 XKeyboardState oldState; 71 XGetKeyboardControl(display, &oldState); 72 if (oldState.global_auto_repeat == AutoRepeatModeOn) 73 bXAutoKeyRepeatOn_ = true; 74 else 75 bXAutoKeyRepeatOn_ = false; 76 XCloseDisplay(display); 77 } 78 else 79 { 80 std::cout << "Warning: couldn't open X display to restore XAutoKeyRepeat." << std::endl; 81 bXAutoKeyRepeatOn_ = false; 82 } 83 84 60 85 // make sure doCatch is only called once without calling dontCatch 61 86 assert( sigRecList.size() == 0 ); … … 120 145 sigName = "SIGILL"; 121 146 break; 147 } 148 149 if (bXAutoKeyRepeatOn_) 150 { 151 std::cout << "Trying to restore XAutoKeyRepeat" << std::endl; 152 Display* display; 153 if ((display = XOpenDisplay(0))) 154 { 155 XAutoRepeatOn(display); 156 XCloseDisplay(display); 157 } 122 158 } 123 159 -
code/trunk/src/core/SignalHandler.h
r1062 r1293 86 86 std::string appName; 87 87 std::string fileName; 88 89 // used to turn on KeyAutoRepeat if OIS crashes 90 static bool bXAutoKeyRepeatOn_; 88 91 }; 89 92 -
code/trunk/src/core/Tickable.cc
r1062 r1293 40 40 RegisterRootObject(Tickable); 41 41 } 42 43 /** 44 @brief Constructor: Registers the object in the TickableReal-list 45 */ 46 TickableReal::TickableReal() 47 { 48 RegisterRootObject(TickableReal); 49 } 42 50 } -
code/trunk/src/core/Tickable.h
r1062 r1293 62 62 }; 63 63 64 //! The Tickable interface provides a tick(dt) function, that gets called every frame. 65 class _CoreExport TickableReal : virtual public OrxonoxClass 66 { 67 public: 68 /** 69 @brief Gets called every frame. 70 @param dt The time since the last frame in seconds 71 */ 72 virtual void tick(float dt) = 0; 73 74 protected: 75 TickableReal(); 76 }; 77 64 78 } 65 79
Note: See TracChangeset
for help on using the changeset viewer.