OLD | NEW |
1 /* | 1 /* |
2 * $Id$ | 2 * $Id$ |
3 * | 3 * |
4 * ***** BEGIN GPL LICENSE BLOCK ***** | 4 * ***** BEGIN GPL LICENSE BLOCK ***** |
5 * | 5 * |
6 * This program is free software; you can redistribute it and/or | 6 * This program is free software; you can redistribute it and/or |
7 * modify it under the terms of the GNU General Public License | 7 * modify it under the terms of the GNU General Public License |
8 * as published by the Free Software Foundation; either version 2 | 8 * as published by the Free Software Foundation; either version 2 |
9 * of the License, or (at your option) any later version. | 9 * of the License, or (at your option) any later version. |
10 * | 10 * |
(...skipping 25 matching lines...) Expand all Loading... |
36 | 36 |
37 #if defined(WIN32) && !defined(FREE_WINDOWS) | 37 #if defined(WIN32) && !defined(FREE_WINDOWS) |
38 #pragma warning(disable : 4786) // shut off 255 char limit debug template warni
ng | 38 #pragma warning(disable : 4786) // shut off 255 char limit debug template warni
ng |
39 #endif | 39 #endif |
40 | 40 |
41 #include <map> | 41 #include <map> |
42 | 42 |
43 #include "wm_event_types.h" | 43 #include "wm_event_types.h" |
44 #include "WM_types.h" | 44 #include "WM_types.h" |
45 #include "SCA_IInputDevice.h" | 45 #include "SCA_IInputDevice.h" |
| 46 #include "BL_BlenderDataConversion.h" |
46 | 47 |
47 #ifdef WITH_CXX_GUARDEDALLOC | 48 #ifdef WITH_CXX_GUARDEDALLOC |
48 #include "MEM_guardedalloc.h" | 49 #include "MEM_guardedalloc.h" |
49 #endif | 50 #endif |
50 | 51 |
51 /** | 52 /** |
52 Base Class for Blender specific inputdevices. Blender specific inputdevices are
used when the gameengine is running in embedded mode instead of standalone mode
. | 53 Base Class for Blender specific inputdevices. Blender specific inputdevices are
used when the gameengine is running in embedded mode instead of standalone mode
. |
53 */ | 54 */ |
54 class BL_BlenderInputDevice : public SCA_IInputDevice | 55 class BL_BlenderInputDevice : public SCA_IInputDevice |
55 { | 56 { |
56 // this map is Blender specific: a conversion between blender and ketsji
enums | |
57 std::map<int,KX_EnumInputs> m_reverseKeyTranslateTable; | |
58 public: | 57 public: |
59 » BL_BlenderInputDevice() | 58 » BL_BlenderInputDevice()
|
60 { | 59 { |
61 | 60 » }
··································· |
62 » » /* The reverse table. In order to not confuse ourselves, we
*/ | |
63 » » /* immediately convert all events that come in to KX codes.
*/ | |
64 » » m_reverseKeyTranslateTable[LEFTMOUSE» » » ] =»
KX_LEFTMOUSE; | |
65 » » m_reverseKeyTranslateTable[MIDDLEMOUSE» » » ] =»
KX_MIDDLEMOUSE; | |
66 » » m_reverseKeyTranslateTable[RIGHTMOUSE» » » ] =»
KX_RIGHTMOUSE; | |
67 » » m_reverseKeyTranslateTable[WHEELUPMOUSE»» » ] =»
KX_WHEELUPMOUSE; | |
68 » » m_reverseKeyTranslateTable[WHEELDOWNMOUSE» » ] =»
KX_WHEELDOWNMOUSE; | |
69 » » m_reverseKeyTranslateTable[MOUSEX» » » ] =»
KX_MOUSEX; | |
70 » » m_reverseKeyTranslateTable[MOUSEY» » » ] =»
KX_MOUSEY; | |
71 | |
72 » » // TIMERS | |
73 | |
74 » » m_reverseKeyTranslateTable[TIMER0 ] =»
KX_TIMER0; | |
75 » » m_reverseKeyTranslateTable[TIMER1 ] =»
KX_TIMER1; | |
76 » » m_reverseKeyTranslateTable[TIMER2 ] =
KX_TIMER2; | |
77 | |
78 » » // SYSTEM | |
79 #if 0 | |
80 » » /* **** XXX **** */ | |
81 » » m_reverseKeyTranslateTable[KEYBD ] =
KX_KEYBD; | |
82 » » m_reverseKeyTranslateTable[RAWKEYBD ] =
KX_RAWKEYBD; | |
83 » » m_reverseKeyTranslateTable[REDRAW ] =
KX_REDRAW; | |
84 » » m_reverseKeyTranslateTable[INPUTCHANGE ] =
KX_INPUTCHANGE; | |
85 » » m_reverseKeyTranslateTable[QFULL ] =
KX_QFULL; | |
86 » » m_reverseKeyTranslateTable[WINFREEZE ] =
KX_WINFREEZE; | |
87 » » m_reverseKeyTranslateTable[WINTHAW ] =
KX_WINTHAW; | |
88 » » m_reverseKeyTranslateTable[WINCLOSE ] =
KX_WINCLOSE; | |
89 » » m_reverseKeyTranslateTable[WINQUIT ] =
KX_WINQUIT; | |
90 » » m_reverseKeyTranslateTable[Q_FIRSTTIME ] =
KX_Q_FIRSTTIME; | |
91 » » /* **** XXX **** */ | |
92 #endif | |
93 » » // standard keyboard | |
94 | |
95 » » m_reverseKeyTranslateTable[AKEY ] =
KX_AKEY; | |
96 » » m_reverseKeyTranslateTable[BKEY ] =
KX_BKEY; | |
97 » » m_reverseKeyTranslateTable[CKEY ] =
KX_CKEY; | |
98 » » m_reverseKeyTranslateTable[DKEY ] =
KX_DKEY; | |
99 » » m_reverseKeyTranslateTable[EKEY ] =
KX_EKEY; | |
100 » » m_reverseKeyTranslateTable[FKEY ] =
KX_FKEY; | |
101 » » m_reverseKeyTranslateTable[GKEY ] =
KX_GKEY; | |
102 » » //XXX clean up | |
103 #ifdef WIN32 | |
104 #define HKEY» 'h' | |
105 #endif | |
106 » » m_reverseKeyTranslateTable[HKEY ] =
KX_HKEY; | |
107 » » //XXX clean up | |
108 #ifdef WIN32 | |
109 #undef HKEY | |
110 #endif | |
111 » » m_reverseKeyTranslateTable[IKEY ] =
KX_IKEY; | |
112 » » m_reverseKeyTranslateTable[JKEY ] =
KX_JKEY; | |
113 » » m_reverseKeyTranslateTable[KKEY ] =
KX_KKEY; | |
114 » » m_reverseKeyTranslateTable[LKEY ] =
KX_LKEY; | |
115 » » m_reverseKeyTranslateTable[MKEY ] =
KX_MKEY; | |
116 » » m_reverseKeyTranslateTable[NKEY ] =
KX_NKEY; | |
117 » » m_reverseKeyTranslateTable[OKEY ] =
KX_OKEY; | |
118 » » m_reverseKeyTranslateTable[PKEY ] =
KX_PKEY; | |
119 » » m_reverseKeyTranslateTable[QKEY ] =
KX_QKEY; | |
120 » » m_reverseKeyTranslateTable[RKEY ] =
KX_RKEY; | |
121 » » m_reverseKeyTranslateTable[SKEY ] =
KX_SKEY; | |
122 » » m_reverseKeyTranslateTable[TKEY ] =»
KX_TKEY; | |
123 » » m_reverseKeyTranslateTable[UKEY ] =
KX_UKEY; | |
124 » » m_reverseKeyTranslateTable[VKEY ] =
KX_VKEY; | |
125 » » m_reverseKeyTranslateTable[WKEY ] =
KX_WKEY; | |
126 » » m_reverseKeyTranslateTable[XKEY ] =
KX_XKEY; | |
127 » » m_reverseKeyTranslateTable[YKEY ] =
KX_YKEY; | |
128 » » m_reverseKeyTranslateTable[ZKEY ] =
KX_ZKEY; | |
129 | |
130 » » m_reverseKeyTranslateTable[ZEROKEY» »
] = KX_ZEROKEY; | |
131 » » m_reverseKeyTranslateTable[ONEKEY» »
] = KX_ONEKEY; | |
132 » » m_reverseKeyTranslateTable[TWOKEY» »
] = KX_TWOKEY; | |
133 » » m_reverseKeyTranslateTable[THREEKEY ] = KX_T
HREEKEY; | |
134 » » m_reverseKeyTranslateTable[FOURKEY» »
] = KX_FOURKEY; | |
135 » » m_reverseKeyTranslateTable[FIVEKEY» »
] = KX_FIVEKEY; | |
136 » » m_reverseKeyTranslateTable[SIXKEY» »
] = KX_SIXKEY; | |
137 » » m_reverseKeyTranslateTable[SEVENKEY ] =
KX_SEVENKEY; | |
138 » » m_reverseKeyTranslateTable[EIGHTKEY ] =
KX_EIGHTKEY; | |
139 » » m_reverseKeyTranslateTable[NINEKEY» »
] = KX_NINEKEY; | |
140 | |
141 » » m_reverseKeyTranslateTable[CAPSLOCKKEY ] =
KX_CAPSLOCKKEY; | |
142 | |
143 » » m_reverseKeyTranslateTable[LEFTCTRLKEY» ] = KX_L
EFTCTRLKEY; | |
144 » » m_reverseKeyTranslateTable[LEFTALTKEY » » ] = KX_L
EFTALTKEY; | |
145 » » m_reverseKeyTranslateTable[RIGHTALTKEY » ] = KX_R
IGHTALTKEY; | |
146 » » m_reverseKeyTranslateTable[RIGHTCTRLKEY »
] = KX_RIGHTCTRLKEY; | |
147 » » m_reverseKeyTranslateTable[RIGHTSHIFTKEY»
] = KX_RIGHTSHIFTKEY; | |
148 » » m_reverseKeyTranslateTable[LEFTSHIFTKEY ] =
KX_LEFTSHIFTKEY; | |
149 | |
150 » » m_reverseKeyTranslateTable[ESCKEY ] =
KX_ESCKEY; | |
151 » » m_reverseKeyTranslateTable[TABKEY ] =
KX_TABKEY; | |
152 » » m_reverseKeyTranslateTable[RETKEY ] =
KX_RETKEY; | |
153 » » m_reverseKeyTranslateTable[SPACEKEY ] =
KX_SPACEKEY; | |
154 » » m_reverseKeyTranslateTable[LINEFEEDKEY» » ] = KX_L
INEFEEDKEY; | |
155 » » m_reverseKeyTranslateTable[BACKSPACEKEY ] =
KX_BACKSPACEKEY; | |
156 » » m_reverseKeyTranslateTable[DELKEY ] =
KX_DELKEY; | |
157 » » m_reverseKeyTranslateTable[SEMICOLONKEY ] =
KX_SEMICOLONKEY; | |
158 » » m_reverseKeyTranslateTable[PERIODKEY» » ] = KX_P
ERIODKEY; | |
159 » » m_reverseKeyTranslateTable[COMMAKEY» »
] = KX_COMMAKEY; | |
160 » » m_reverseKeyTranslateTable[QUOTEKEY» »
] = KX_QUOTEKEY; | |
161 » » m_reverseKeyTranslateTable[ACCENTGRAVEKEY»
] = KX_ACCENTGRAVEKEY; | |
162 » » m_reverseKeyTranslateTable[MINUSKEY» »
] = KX_MINUSKEY; | |
163 » » m_reverseKeyTranslateTable[SLASHKEY» »
] = KX_SLASHKEY; | |
164 » » m_reverseKeyTranslateTable[BACKSLASHKEY ] =
KX_BACKSLASHKEY; | |
165 » » m_reverseKeyTranslateTable[EQUALKEY» »
] = KX_EQUALKEY; | |
166 » » m_reverseKeyTranslateTable[LEFTBRACKETKEY»
] = KX_LEFTBRACKETKEY; | |
167 » » m_reverseKeyTranslateTable[RIGHTBRACKETKEY»
] = KX_RIGHTBRACKETKEY; | |
168 | |
169 » » m_reverseKeyTranslateTable[LEFTARROWKEY ] =
KX_LEFTARROWKEY; | |
170 » » m_reverseKeyTranslateTable[DOWNARROWKEY ] =
KX_DOWNARROWKEY; | |
171 » » m_reverseKeyTranslateTable[RIGHTARROWKEY»
] = KX_RIGHTARROWKEY; | |
172 » » m_reverseKeyTranslateTable[UPARROWKEY» » ] = KX_U
PARROWKEY; | |
173 | |
174 » » m_reverseKeyTranslateTable[PAD2» ] = KX_P
AD2; | |
175 » » m_reverseKeyTranslateTable[PAD4» ] = KX_P
AD4; | |
176 » » m_reverseKeyTranslateTable[PAD6» ] = KX_P
AD6; | |
177 » » m_reverseKeyTranslateTable[PAD8» ] = KX_P
AD8; | |
178 | |
179 » » m_reverseKeyTranslateTable[PAD1» ] = KX_P
AD1; | |
180 » » m_reverseKeyTranslateTable[PAD3» ] = KX_P
AD3; | |
181 » » m_reverseKeyTranslateTable[PAD5» ] = KX_P
AD5; | |
182 » » m_reverseKeyTranslateTable[PAD7» ] = KX_P
AD7; | |
183 » » m_reverseKeyTranslateTable[PAD9» ] = KX_P
AD9; | |
184 | |
185 » » m_reverseKeyTranslateTable[PADPERIOD ] =
KX_PADPERIOD; | |
186 » » m_reverseKeyTranslateTable[PADSLASHKEY ] = KX
_PADSLASHKEY; | |
187 » » m_reverseKeyTranslateTable[PADASTERKEY ] =
KX_PADASTERKEY; | |
188 | |
189 | |
190 » » m_reverseKeyTranslateTable[PAD0» ] = KX_P
AD0; | |
191 » » m_reverseKeyTranslateTable[PADMINUS ] =
KX_PADMINUS; | |
192 » » m_reverseKeyTranslateTable[PADENTER ] =
KX_PADENTER; | |
193 » » m_reverseKeyTranslateTable[PADPLUSKEY ] =
KX_PADPLUSKEY; | |
194 | |
195 | |
196 » » m_reverseKeyTranslateTable[F1KEY ] =
KX_F1KEY; | |
197 » » m_reverseKeyTranslateTable[F2KEY ] =
KX_F2KEY; | |
198 » » m_reverseKeyTranslateTable[F3KEY ] =
KX_F3KEY; | |
199 » » m_reverseKeyTranslateTable[F4KEY ] =
KX_F4KEY; | |
200 » » m_reverseKeyTranslateTable[F5KEY ] =
KX_F5KEY; | |
201 » » m_reverseKeyTranslateTable[F6KEY ] =
KX_F6KEY; | |
202 » » m_reverseKeyTranslateTable[F7KEY ] =
KX_F7KEY; | |
203 » » m_reverseKeyTranslateTable[F8KEY ] =
KX_F8KEY; | |
204 » » m_reverseKeyTranslateTable[F9KEY ] =
KX_F9KEY; | |
205 » » m_reverseKeyTranslateTable[F10KEY ] =
KX_F10KEY; | |
206 » » m_reverseKeyTranslateTable[F11KEY ] = KX_F11KEY; | |
207 » » m_reverseKeyTranslateTable[F12KEY ] = KX_F12KEY; | |
208 » » m_reverseKeyTranslateTable[F13KEY ] = KX_F13KEY; | |
209 » » m_reverseKeyTranslateTable[F14KEY ] = KX_F14KEY; | |
210 » » m_reverseKeyTranslateTable[F15KEY ] = KX_F15KEY; | |
211 » » m_reverseKeyTranslateTable[F16KEY ] = KX_F16KEY; | |
212 » » m_reverseKeyTranslateTable[F17KEY ] = KX_F17KEY; | |
213 » » m_reverseKeyTranslateTable[F18KEY ] = KX_F18KEY; | |
214 » » m_reverseKeyTranslateTable[F19KEY ] = KX_F19KEY; | |
215 | |
216 » » m_reverseKeyTranslateTable[PAUSEKEY ] = KX_PAUSEKEY; | |
217 » » m_reverseKeyTranslateTable[INSERTKEY ] = KX_INSERTKEY; | |
218 » » m_reverseKeyTranslateTable[HOMEKEY ] = KX_HOMEKEY; | |
219 » » m_reverseKeyTranslateTable[PAGEUPKEY ] = KX_PAGEUPKEY; | |
220 » » m_reverseKeyTranslateTable[PAGEDOWNKEY ] = KX_PAGEDOWNKEY; | |
221 » » m_reverseKeyTranslateTable[ENDKEY ] = KX_ENDKEY; | |
222 » } | |
223 | 61 |
224 virtual ~BL_BlenderInputDevice() | 62 virtual ~BL_BlenderInputDevice() |
225 { | 63 { |
226 | 64 |
227 } | 65 } |
228 | 66 |
229 KX_EnumInputs ToNative(unsigned short incode) { | 67 KX_EnumInputs ToNative(unsigned short incode) { |
230 » » return m_reverseKeyTranslateTable[incode]; | 68 » » return ConvertKeyCode(incode); |
231 } | 69 } |
232 | 70 |
233 virtual bool IsPressed(SCA_IInputDevice::KX_EnumInputs inputcode)=0; | 71 virtual bool IsPressed(SCA_IInputDevice::KX_EnumInputs inputcode)=0; |
234 // virtual const SCA_InputEvent& GetEventValue(SCA_IInputDevice::
KX_EnumInputs inputcode)=0; | 72 // virtual const SCA_InputEvent& GetEventValue(SCA_IInputDevice::
KX_EnumInputs inputcode)=0; |
235 virtual bool ConvertBlenderEvent(unsigned short incode,short val)=0; | 73 virtual bool ConvertBlenderEvent(unsigned short incode,short val)=0; |
236 | 74 |
237 | 75 |
238 #ifdef WITH_CXX_GUARDEDALLOC | 76 #ifdef WITH_CXX_GUARDEDALLOC |
239 public: | 77 public: |
240 void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE
:BL_BlenderInputDevice"); } | 78 void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE
:BL_BlenderInputDevice"); } |
241 void operator delete(void *mem) { MEM_freeN(mem); } | 79 void operator delete(void *mem) { MEM_freeN(mem); } |
242 #endif | 80 #endif |
243 }; | 81 }; |
244 #endif //__KX_BLENDERINPUTDEVICE | 82 #endif //__KX_BLENDERINPUTDEVICE |
245 | 83 |
OLD | NEW |