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