Mercurial > LightClone
comparison LightClone/Source/InputManager.cpp @ 43:d27c06bd8ce1
Simplify input manager and remove event system
author | koryspansel |
---|---|
date | Thu, 22 Sep 2011 10:47:05 -0700 |
parents | 0b729faa4e73 |
children |
comparison
equal
deleted
inserted
replaced
42:91e927584f92 | 43:d27c06bd8ce1 |
---|---|
1 /* | 1 /* |
2 * InputManager | 2 * InputManager |
3 */ | 3 */ |
4 | 4 |
5 #include "InputManager.h" | 5 #include "InputManager.h" |
6 #include "EventSystem.h" | |
7 | 6 |
8 /* | 7 /* |
9 * fMouseSensitivity | 8 * fMouseSensitivity |
10 */ | 9 */ |
11 static const float fMouseSensitivity = 1.5f; | 10 static const float fMouseSensitivity = 1.5f; |
112 } | 111 } |
113 | 112 |
114 /* | 113 /* |
115 * Update | 114 * Update |
116 */ | 115 */ |
117 void InputManager::Update(EventSystem* pEventSystem, float fElapsed) | 116 void InputManager::Update(float fElapsed) |
118 { | 117 { |
119 if(pKeyboard) | 118 if(pKeyboard) |
120 { | 119 { |
121 memcpy(kPreviousKeyboardState, kCurrentKeyboardState, sizeof(kCurrentKeyboardState)); | 120 memcpy(kPreviousKeyboardState, kCurrentKeyboardState, sizeof(kCurrentKeyboardState)); |
122 | 121 |
127 if(SUCCEEDED(hResult)) | 126 if(SUCCEEDED(hResult)) |
128 { | 127 { |
129 hResult = pKeyboard->GetDeviceState(sizeof(kCurrentKeyboardState), kCurrentKeyboardState); | 128 hResult = pKeyboard->GetDeviceState(sizeof(kCurrentKeyboardState), kCurrentKeyboardState); |
130 } | 129 } |
131 } | 130 } |
132 | |
133 for(uint32 i = 0; i < sizeof(kCurrentKeyboardState) / sizeof(kCurrentKeyboardState[0]); ++i) | |
134 { | |
135 // check for key up events | |
136 if(kPreviousKeyboardState[i] & 0x80) | |
137 { | |
138 if(!(kCurrentKeyboardState[i] & 0x80)) | |
139 { | |
140 InputEvent kEvent; | |
141 kEvent.nType = InputEventType_KeyUp; | |
142 kEvent.nKey = i; | |
143 kEvent.nDuration = 0; | |
144 | |
145 pEventSystem->Post(kEvent); | |
146 } | |
147 } | |
148 else | |
149 { | |
150 if(kCurrentKeyboardState[i] & 0x80) | |
151 { | |
152 InputEvent kEvent; | |
153 kEvent.nType = InputEventType_KeyDown; | |
154 kEvent.nKey = i; | |
155 kEvent.nDuration = 0; | |
156 | |
157 pEventSystem->Post(kEvent); | |
158 } | |
159 } | |
160 } | |
161 } | 131 } |
162 | 132 |
163 if(pMouse) | 133 if(pMouse) |
164 { | 134 { |
165 memcpy(&kPreviousMouseState, &kCurrentMouseState, sizeof(kCurrentMouseState)); | 135 memcpy(&kPreviousMouseState, &kCurrentMouseState, sizeof(kCurrentMouseState)); |
174 } | 144 } |
175 } | 145 } |
176 | 146 |
177 fMouseX = Clamp(fMouseX + fMouseSensitivity * kCurrentMouseState.lX, kMouseBounds.X, kMouseBounds.X + kMouseBounds.Width - 1.0f); | 147 fMouseX = Clamp(fMouseX + fMouseSensitivity * kCurrentMouseState.lX, kMouseBounds.X, kMouseBounds.X + kMouseBounds.Width - 1.0f); |
178 fMouseY = Clamp(fMouseY + fMouseSensitivity * kCurrentMouseState.lY, kMouseBounds.Y, kMouseBounds.Y + kMouseBounds.Height - 1.0f); | 148 fMouseY = Clamp(fMouseY + fMouseSensitivity * kCurrentMouseState.lY, kMouseBounds.Y, kMouseBounds.Y + kMouseBounds.Height - 1.0f); |
179 | |
180 for(uint32 i = 0; i < sizeof(kCurrentMouseState.rgbButtons) / sizeof(kCurrentMouseState.rgbButtons[0]); ++i) | |
181 { | |
182 if(kPreviousMouseState.rgbButtons[i] & 0x80) | |
183 { | |
184 if(!(kCurrentMouseState.rgbButtons[i] & 0x80)) | |
185 { | |
186 InputEvent kEvent; | |
187 kEvent.nType = InputEventType_MouseUp; | |
188 kEvent.nButton = i; | |
189 kEvent.nDuration = 0; | |
190 | |
191 pEventSystem->Post(kEvent); | |
192 } | |
193 } | |
194 else | |
195 { | |
196 if(kCurrentMouseState.rgbButtons[i] & 0x80) | |
197 { | |
198 InputEvent kEvent; | |
199 kEvent.nType = InputEventType_MouseDown; | |
200 kEvent.nButton = i; | |
201 kEvent.nDuration = 0; | |
202 | |
203 pEventSystem->Post(kEvent); | |
204 } | |
205 } | |
206 } | |
207 | |
208 if(kCurrentMouseState.lX != 0 || kCurrentMouseState.lY != 0) | |
209 { | |
210 InputEvent kEvent; | |
211 kEvent.nType = InputEventType_MouseMove; | |
212 kEvent.fX = fMouseX; | |
213 kEvent.fY = fMouseY; | |
214 | |
215 pEventSystem->Post(kEvent); | |
216 } | |
217 } | 149 } |
218 } | 150 } |
219 | 151 |
220 /* | 152 /* |
221 * SetBounds | 153 * SetBounds |