Irrlicht 3D Engine
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
IEventReceiver.h
Go to the documentation of this file.
1
// Copyright (C) 2002-2012 Nikolaus Gebhardt
2
// This file is part of the "Irrlicht Engine".
3
// For conditions of distribution and use, see copyright notice in irrlicht.h
4
5
#ifndef __I_EVENT_RECEIVER_H_INCLUDED__
6
#define __I_EVENT_RECEIVER_H_INCLUDED__
7
8
#include "
ILogger.h
"
9
#include "
Keycodes.h
"
10
#include "
irrString.h
"
11
12
namespace
irr
13
{
15
enum
EEVENT_TYPE
16
{
18
22
EET_GUI_EVENT
= 0,
23
25
30
EET_MOUSE_INPUT_EVENT
,
31
33
35
EET_KEY_INPUT_EVENT
,
36
38
45
EET_JOYSTICK_INPUT_EVENT
,
46
48
50
EET_LOG_TEXT_EVENT
,
51
53
65
EET_USER_EVENT
,
66
69
EGUIET_FORCE_32_BIT
= 0x7fffffff
70
71
};
72
74
enum
EMOUSE_INPUT_EVENT
75
{
77
EMIE_LMOUSE_PRESSED_DOWN
= 0,
78
80
EMIE_RMOUSE_PRESSED_DOWN
,
81
83
EMIE_MMOUSE_PRESSED_DOWN
,
84
86
EMIE_LMOUSE_LEFT_UP
,
87
89
EMIE_RMOUSE_LEFT_UP
,
90
92
EMIE_MMOUSE_LEFT_UP
,
93
95
EMIE_MOUSE_MOVED
,
96
99
EMIE_MOUSE_WHEEL
,
100
103
EMIE_LMOUSE_DOUBLE_CLICK
,
104
107
EMIE_RMOUSE_DOUBLE_CLICK
,
108
111
EMIE_MMOUSE_DOUBLE_CLICK
,
112
115
EMIE_LMOUSE_TRIPLE_CLICK
,
116
119
EMIE_RMOUSE_TRIPLE_CLICK
,
120
123
EMIE_MMOUSE_TRIPLE_CLICK
,
124
126
EMIE_COUNT
127
};
128
130
enum
E_MOUSE_BUTTON_STATE_MASK
131
{
132
EMBSM_LEFT
= 0x01,
133
EMBSM_RIGHT
= 0x02,
134
EMBSM_MIDDLE
= 0x04,
135
137
EMBSM_EXTRA1
= 0x08,
138
140
EMBSM_EXTRA2
= 0x10,
141
142
EMBSM_FORCE_32_BIT
= 0x7fffffff
143
};
144
145
namespace
gui
146
{
147
148
class
IGUIElement;
149
151
enum
EGUI_EVENT_TYPE
152
{
154
156
EGET_ELEMENT_FOCUS_LOST
= 0,
157
159
160
EGET_ELEMENT_FOCUSED
,
161
163
164
EGET_ELEMENT_HOVERED
,
165
167
168
EGET_ELEMENT_LEFT
,
169
171
173
EGET_ELEMENT_CLOSED
,
174
176
EGET_BUTTON_CLICKED
,
177
179
EGET_SCROLL_BAR_CHANGED
,
180
182
EGET_CHECKBOX_CHANGED
,
183
185
186
EGET_LISTBOX_CHANGED
,
187
189
190
EGET_LISTBOX_SELECTED_AGAIN
,
191
193
EGET_FILE_SELECTED
,
194
196
EGET_DIRECTORY_SELECTED
,
197
199
EGET_FILE_CHOOSE_DIALOG_CANCELLED
,
200
202
EGET_MESSAGEBOX_YES
,
203
205
EGET_MESSAGEBOX_NO
,
206
208
EGET_MESSAGEBOX_OK
,
209
211
EGET_MESSAGEBOX_CANCEL
,
212
214
EGET_EDITBOX_ENTER
,
215
217
EGET_EDITBOX_CHANGED
,
218
220
EGET_EDITBOX_MARKING_CHANGED
,
221
223
EGET_TAB_CHANGED
,
224
226
EGET_MENU_ITEM_SELECTED
,
227
229
EGET_COMBO_BOX_CHANGED
,
230
232
EGET_SPINBOX_CHANGED
,
233
235
EGET_TABLE_CHANGED
,
236
EGET_TABLE_HEADER_CHANGED
,
237
EGET_TABLE_SELECTED_AGAIN
,
238
240
EGET_TREEVIEW_NODE_DESELECT
,
241
243
EGET_TREEVIEW_NODE_SELECT
,
244
246
EGET_TREEVIEW_NODE_EXPAND
,
247
249
EGET_TREEVIEW_NODE_COLLAPSE
,
250
253
EGET_TREEVIEW_NODE_COLLAPS
=
EGET_TREEVIEW_NODE_COLLAPSE
,
254
256
EGET_COUNT
257
};
258
}
// end namespace gui
259
260
262
struct
SEvent
263
{
265
struct
SGUIEvent
266
{
268
gui::IGUIElement
*
Caller
;
269
271
gui::IGUIElement
*
Element
;
272
274
gui::EGUI_EVENT_TYPE
EventType
;
275
276
};
277
279
struct
SMouseInput
280
{
282
s32
X
;
283
285
s32
Y
;
286
288
289
f32
Wheel
;
290
292
bool
Shift
:1;
293
295
bool
Control
:1;
296
300
u32
ButtonStates
;
301
303
bool
isLeftPressed
()
const
{
return
0 != (
ButtonStates
&
EMBSM_LEFT
); }
304
306
bool
isRightPressed
()
const
{
return
0 != (
ButtonStates
&
EMBSM_RIGHT
); }
307
309
bool
isMiddlePressed
()
const
{
return
0 != (
ButtonStates
&
EMBSM_MIDDLE
); }
310
312
EMOUSE_INPUT_EVENT
Event
;
313
};
314
316
struct
SKeyInput
317
{
319
wchar_t
Char
;
320
322
EKEY_CODE
Key
;
323
325
bool
PressedDown
:1;
326
328
bool
Shift
:1;
329
331
bool
Control
:1;
332
};
333
335
342
struct
SJoystickEvent
343
{
344
enum
345
{
346
NUMBER_OF_BUTTONS
= 32,
347
348
AXIS_X
= 0,
// e.g. analog stick 1 left to right
349
AXIS_Y
,
// e.g. analog stick 1 top to bottom
350
AXIS_Z
,
// e.g. throttle, or analog 2 stick 2 left to right
351
AXIS_R
,
// e.g. rudder, or analog 2 stick 2 top to bottom
352
AXIS_U
,
353
AXIS_V
,
354
NUMBER_OF_AXES
355
};
356
359
u32
ButtonStates
;
360
369
s16
Axis
[
NUMBER_OF_AXES
];
370
376
u16
POV
;
377
379
381
u8
Joystick
;
382
384
bool
IsButtonPressed
(
u32
button)
const
385
{
386
if
(button >= (
u32
)
NUMBER_OF_BUTTONS
)
387
return
false
;
388
389
return
(
ButtonStates
& (1 << button)) ?
true
:
false
;
390
}
391
};
392
393
395
struct
SLogEvent
396
{
398
const
c8
*
Text
;
399
401
ELOG_LEVEL
Level
;
402
};
403
405
struct
SUserEvent
406
{
408
s32
UserData1
;
409
411
s32
UserData2
;
412
};
413
414
EEVENT_TYPE
EventType
;
415
union
416
{
417
struct
SGUIEvent
GUIEvent
;
418
struct
SMouseInput
MouseInput
;
419
struct
SKeyInput
KeyInput
;
420
struct
SJoystickEvent
JoystickEvent
;
421
struct
SLogEvent
LogEvent
;
422
struct
SUserEvent
UserEvent
;
423
};
424
425
};
426
428
433
class
IEventReceiver
434
{
435
public
:
436
438
virtual
~IEventReceiver
() {}
439
441
446
virtual
bool
OnEvent
(
const
SEvent
& event) = 0;
447
};
448
449
451
struct
SJoystickInfo
452
{
454
457
u8
Joystick
;
458
460
core::stringc
Name
;
461
463
u32
Buttons
;
464
466
468
u32
Axes
;
469
471
473
enum
474
{
476
POV_HAT_PRESENT
,
477
479
POV_HAT_ABSENT
,
480
482
POV_HAT_UNKNOWN
483
}
PovHat
;
484
};
// struct SJoystickInfo
485
486
487
}
// end namespace irr
488
489
#endif
490
Irrlicht Engine
Documentation © 2003-2012 by Nikolaus Gebhardt. Generated on Tue Apr 7 2020 19:33:42 for Irrlicht 3D Engine by
Doxygen
1.8.1.2