Irrlicht 3D Engine
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 {
16  {
18 
23 
25 
31 
33 
36 
38 
46 
48 
51 
53 
66 
69  EGUIET_FORCE_32_BIT = 0x7fffffff
70 
71  };
72 
75  {
78 
81 
84 
87 
90 
93 
96 
100 
104 
108 
112 
116 
120 
124 
127  };
128 
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 
152  {
154 
157 
159 
161 
163 
165 
167 
169 
171 
174 
177 
180 
183 
185 
187 
189 
191 
194 
197 
200 
203 
206 
209 
212 
215 
218 
221 
224 
227 
230 
233 
238 
241 
244 
247 
250 
254 
257  };
258  } // end namespace gui
259 
260 
262 struct SEvent
263 {
265  struct SGUIEvent
266  {
269 
272 
275 
276  };
277 
279  struct SMouseInput
280  {
283 
286 
288 
290 
292  bool Shift:1;
293 
295  bool Control:1;
296 
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 
313  };
314 
316  struct SKeyInput
317  {
319  wchar_t Char;
320 
323 
325  bool PressedDown:1;
326 
328  bool Shift:1;
329 
331  bool Control:1;
332  };
333 
335 
343  {
344  enum
345  {
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
355  };
356 
360 
370 
377 
379 
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 
402  };
403 
405  struct SUserEvent
406  {
409 
412  };
413 
415  union
416  {
423  };
424 
425 };
426 
428 
434 {
435 public:
436 
438  virtual ~IEventReceiver() {}
439 
441 
446  virtual bool OnEvent(const SEvent& event) = 0;
447 };
448 
449 
452 {
454 
458 
461 
464 
466 
469 
471 
473  enum
474  {
477 
480 
483  } PovHat;
484 }; // struct SJoystickInfo
485 
486 
487 } // end namespace irr
488 
489 #endif
490 
irr::SJoystickInfo::Axes
u32 Axes
The number of axes that the joystick has, i.e. X, Y, Z, R, U, V.
Definition: IEventReceiver.h:468
irr::gui::EGET_TABLE_CHANGED
@ EGET_TABLE_CHANGED
A table has changed.
Definition: IEventReceiver.h:235
irr::SEvent::JoystickEvent
struct SJoystickEvent JoystickEvent
Definition: IEventReceiver.h:420
irr::EMBSM_LEFT
@ EMBSM_LEFT
Definition: IEventReceiver.h:132
irr::SEvent::SJoystickEvent
A joystick event.
Definition: IEventReceiver.h:342
irr::gui::EGET_TREEVIEW_NODE_DESELECT
@ EGET_TREEVIEW_NODE_DESELECT
A tree view node lost selection. See IGUITreeView::getLastEventNode().
Definition: IEventReceiver.h:240
irr::SEvent::SMouseInput::isMiddlePressed
bool isMiddlePressed() const
Is the middle button pressed down?
Definition: IEventReceiver.h:309
irr::gui::EGET_SCROLL_BAR_CHANGED
@ EGET_SCROLL_BAR_CHANGED
A scrollbar has changed its position.
Definition: IEventReceiver.h:179
irr::SJoystickInfo::Joystick
u8 Joystick
The ID of the joystick.
Definition: IEventReceiver.h:457
irr::EMIE_MMOUSE_PRESSED_DOWN
@ EMIE_MMOUSE_PRESSED_DOWN
Middle mouse button was pressed down.
Definition: IEventReceiver.h:83
irr::SJoystickInfo::PovHat
enum irr::SJoystickInfo::@3 PovHat
An indication of whether the joystick has a POV hat.
irr::SEvent::MouseInput
struct SMouseInput MouseInput
Definition: IEventReceiver.h:418
irr::gui::EGET_FILE_SELECTED
@ EGET_FILE_SELECTED
A file has been selected in the file dialog.
Definition: IEventReceiver.h:193
irr::SEvent::SJoystickEvent::AXIS_Z
@ AXIS_Z
Definition: IEventReceiver.h:350
irr::EET_MOUSE_INPUT_EVENT
@ EET_MOUSE_INPUT_EVENT
A mouse input event.
Definition: IEventReceiver.h:30
irr::gui::EGET_LISTBOX_SELECTED_AGAIN
@ EGET_LISTBOX_SELECTED_AGAIN
An item in the listbox was selected, which was already selected.
Definition: IEventReceiver.h:190
irr::SEvent::SLogEvent
Any kind of log event.
Definition: IEventReceiver.h:395
irr::IEventReceiver::~IEventReceiver
virtual ~IEventReceiver()
Destructor.
Definition: IEventReceiver.h:438
irr::gui::EGET_DIRECTORY_SELECTED
@ EGET_DIRECTORY_SELECTED
A directory has been selected in the file dialog.
Definition: IEventReceiver.h:196
irr::gui::EGET_LISTBOX_CHANGED
@ EGET_LISTBOX_CHANGED
A new item in a listbox was selected.
Definition: IEventReceiver.h:186
irr::SEvent::SJoystickEvent::AXIS_V
@ AXIS_V
Definition: IEventReceiver.h:353
irr::gui::EGET_FILE_CHOOSE_DIALOG_CANCELLED
@ EGET_FILE_CHOOSE_DIALOG_CANCELLED
A file open dialog has been closed without choosing a file.
Definition: IEventReceiver.h:199
irr::SJoystickInfo::POV_HAT_ABSENT
@ POV_HAT_ABSENT
A hat is definitely not present.
Definition: IEventReceiver.h:479
irr::c8
char c8
8 bit character variable.
Definition: irrTypes.h:31
irr::SEvent::SKeyInput::Control
bool Control
True if ctrl was also pressed.
Definition: IEventReceiver.h:331
irr::gui::EGET_CHECKBOX_CHANGED
@ EGET_CHECKBOX_CHANGED
A checkbox has changed its check state.
Definition: IEventReceiver.h:182
irr::SEvent::SJoystickEvent::NUMBER_OF_AXES
@ NUMBER_OF_AXES
Definition: IEventReceiver.h:354
irr::gui::EGUI_EVENT_TYPE
EGUI_EVENT_TYPE
Enumeration for all events which are sendable by the gui system.
Definition: IEventReceiver.h:151
irr::EMIE_LMOUSE_LEFT_UP
@ EMIE_LMOUSE_LEFT_UP
Left mouse button was left up.
Definition: IEventReceiver.h:86
irr::EGUIET_FORCE_32_BIT
@ EGUIET_FORCE_32_BIT
Definition: IEventReceiver.h:69
irr::SEvent::SKeyInput
Any kind of keyboard event.
Definition: IEventReceiver.h:316
irr::SEvent::SKeyInput::Char
wchar_t Char
Character corresponding to the key (0, if not a character)
Definition: IEventReceiver.h:319
irr::SJoystickInfo::Name
core::stringc Name
The name that the joystick uses to identify itself.
Definition: IEventReceiver.h:460
irr::gui::EGET_EDITBOX_MARKING_CHANGED
@ EGET_EDITBOX_MARKING_CHANGED
The marked area in an editbox was changed.
Definition: IEventReceiver.h:220
irr::SEvent::SMouseInput::isLeftPressed
bool isLeftPressed() const
Is the left button pressed down?
Definition: IEventReceiver.h:303
irr::gui::EGET_ELEMENT_FOCUSED
@ EGET_ELEMENT_FOCUSED
A gui element has got the focus.
Definition: IEventReceiver.h:160
irrString.h
irr::gui::EGET_COUNT
@ EGET_COUNT
No real event. Just for convenience to get number of events.
Definition: IEventReceiver.h:256
irr::s16
signed short s16
16 bit signed variable.
Definition: irrTypes.h:48
irr::EMIE_LMOUSE_PRESSED_DOWN
@ EMIE_LMOUSE_PRESSED_DOWN
Left mouse button was pressed down.
Definition: IEventReceiver.h:77
irr::SEvent::GUIEvent
struct SGUIEvent GUIEvent
Definition: IEventReceiver.h:417
irr::SEvent::KeyInput
struct SKeyInput KeyInput
Definition: IEventReceiver.h:419
irr::SEvent::SJoystickEvent::POV
u16 POV
Definition: IEventReceiver.h:376
irr::SJoystickInfo
Information on a joystick, returned from irr::IrrlichtDevice::activateJoysticks()
Definition: IEventReceiver.h:451
irr::gui::EGET_TREEVIEW_NODE_SELECT
@ EGET_TREEVIEW_NODE_SELECT
A tree view node was selected. See IGUITreeView::getLastEventNode().
Definition: IEventReceiver.h:243
irr::gui::EGET_MESSAGEBOX_YES
@ EGET_MESSAGEBOX_YES
'Yes' was clicked on a messagebox
Definition: IEventReceiver.h:202
irr::SEvent::SJoystickEvent::Axis
s16 Axis[NUMBER_OF_AXES]
Definition: IEventReceiver.h:369
irr::SEvent::SJoystickEvent::AXIS_Y
@ AXIS_Y
Definition: IEventReceiver.h:349
irr::EMIE_RMOUSE_PRESSED_DOWN
@ EMIE_RMOUSE_PRESSED_DOWN
Right mouse button was pressed down.
Definition: IEventReceiver.h:80
Keycodes.h
irr::gui::EGET_EDITBOX_ENTER
@ EGET_EDITBOX_ENTER
In an editbox 'ENTER' was pressed.
Definition: IEventReceiver.h:214
irr::SEvent::SLogEvent::Text
const c8 * Text
Pointer to text which has been logged.
Definition: IEventReceiver.h:398
irr::EET_KEY_INPUT_EVENT
@ EET_KEY_INPUT_EVENT
A key input event.
Definition: IEventReceiver.h:35
irr::SEvent::SJoystickEvent::AXIS_X
@ AXIS_X
Definition: IEventReceiver.h:348
irr::gui::EGET_MESSAGEBOX_OK
@ EGET_MESSAGEBOX_OK
'OK' was clicked on a messagebox
Definition: IEventReceiver.h:208
irr::EET_LOG_TEXT_EVENT
@ EET_LOG_TEXT_EVENT
A log event.
Definition: IEventReceiver.h:50
irr::SEvent::SKeyInput::PressedDown
bool PressedDown
If not true, then the key was left up.
Definition: IEventReceiver.h:325
irr::SEvent::SJoystickEvent::Joystick
u8 Joystick
The ID of the joystick which generated this event.
Definition: IEventReceiver.h:381
irr::s32
signed int s32
32 bit signed variable.
Definition: irrTypes.h:66
irr::EMIE_RMOUSE_TRIPLE_CLICK
@ EMIE_RMOUSE_TRIPLE_CLICK
Definition: IEventReceiver.h:119
irr::gui::EGET_EDITBOX_CHANGED
@ EGET_EDITBOX_CHANGED
The text in an editbox was changed. This does not include automatic changes in text-breaking.
Definition: IEventReceiver.h:217
irr::EEVENT_TYPE
EEVENT_TYPE
Enumeration for all event types there are.
Definition: IEventReceiver.h:15
irr::EMBSM_RIGHT
@ EMBSM_RIGHT
Definition: IEventReceiver.h:133
irr::SEvent::LogEvent
struct SLogEvent LogEvent
Definition: IEventReceiver.h:421
irr::SEvent::SMouseInput::Wheel
f32 Wheel
mouse wheel delta, often 1.0 or -1.0, but can have other values < 0.f or > 0.f;
Definition: IEventReceiver.h:289
irr::SEvent::SJoystickEvent::AXIS_U
@ AXIS_U
Definition: IEventReceiver.h:352
irr::SEvent::UserEvent
struct SUserEvent UserEvent
Definition: IEventReceiver.h:422
irr::gui::EGET_SPINBOX_CHANGED
@ EGET_SPINBOX_CHANGED
The value of a spin box has changed.
Definition: IEventReceiver.h:232
irr::EMIE_LMOUSE_DOUBLE_CLICK
@ EMIE_LMOUSE_DOUBLE_CLICK
Definition: IEventReceiver.h:103
irr::EMBSM_EXTRA1
@ EMBSM_EXTRA1
currently only on windows
Definition: IEventReceiver.h:137
irr::SEvent::SMouseInput::Event
EMOUSE_INPUT_EVENT Event
Type of mouse event.
Definition: IEventReceiver.h:312
irr::f32
float f32
32 bit floating point variable.
Definition: irrTypes.h:104
irr::gui::EGET_ELEMENT_HOVERED
@ EGET_ELEMENT_HOVERED
The mouse cursor hovered over a gui element.
Definition: IEventReceiver.h:164
irr::SEvent
SEvents hold information about an event. See irr::IEventReceiver for details on event handling.
Definition: IEventReceiver.h:262
irr::EET_USER_EVENT
@ EET_USER_EVENT
A user event with user data.
Definition: IEventReceiver.h:65
irr::SJoystickInfo::Buttons
u32 Buttons
The number of buttons that the joystick has.
Definition: IEventReceiver.h:463
irr::SEvent::SMouseInput::isRightPressed
bool isRightPressed() const
Is the right button pressed down?
Definition: IEventReceiver.h:306
irr::EMIE_MMOUSE_DOUBLE_CLICK
@ EMIE_MMOUSE_DOUBLE_CLICK
Definition: IEventReceiver.h:111
irr::gui::EGET_TABLE_SELECTED_AGAIN
@ EGET_TABLE_SELECTED_AGAIN
Definition: IEventReceiver.h:237
irr::EMIE_MMOUSE_LEFT_UP
@ EMIE_MMOUSE_LEFT_UP
Middle mouse button was left up.
Definition: IEventReceiver.h:92
irr::SJoystickInfo::POV_HAT_PRESENT
@ POV_HAT_PRESENT
A hat is definitely present.
Definition: IEventReceiver.h:476
irr::gui::EGET_BUTTON_CLICKED
@ EGET_BUTTON_CLICKED
A button was clicked.
Definition: IEventReceiver.h:176
irr::gui::EGET_TREEVIEW_NODE_EXPAND
@ EGET_TREEVIEW_NODE_EXPAND
A tree view node was expanded. See IGUITreeView::getLastEventNode().
Definition: IEventReceiver.h:246
irr::SEvent::SMouseInput::Control
bool Control
True if ctrl was also pressed.
Definition: IEventReceiver.h:295
irr::gui::EGET_ELEMENT_LEFT
@ EGET_ELEMENT_LEFT
The mouse cursor left the hovered element.
Definition: IEventReceiver.h:168
ILogger.h
irr::SJoystickInfo::POV_HAT_UNKNOWN
@ POV_HAT_UNKNOWN
The presence or absence of a hat cannot be determined.
Definition: IEventReceiver.h:482
irr::core::string
Definition: irrString.h:73
irr::gui::EGET_MESSAGEBOX_NO
@ EGET_MESSAGEBOX_NO
'No' was clicked on a messagebox
Definition: IEventReceiver.h:205
irr::SEvent::SGUIEvent::Element
gui::IGUIElement * Element
If the event has something to do with another element, it will be held here.
Definition: IEventReceiver.h:271
irr::SEvent::SJoystickEvent::NUMBER_OF_BUTTONS
@ NUMBER_OF_BUTTONS
Definition: IEventReceiver.h:346
irr::SEvent::SMouseInput
Any kind of mouse event.
Definition: IEventReceiver.h:279
irr::IEventReceiver
Interface of an object which can receive events.
Definition: IEventReceiver.h:433
irr::SEvent::SMouseInput::X
s32 X
X position of mouse cursor.
Definition: IEventReceiver.h:282
irr::gui::EGET_TREEVIEW_NODE_COLLAPSE
@ EGET_TREEVIEW_NODE_COLLAPSE
A tree view node was collapsed. See IGUITreeView::getLastEventNode().
Definition: IEventReceiver.h:249
irr::gui::EGET_TABLE_HEADER_CHANGED
@ EGET_TABLE_HEADER_CHANGED
Definition: IEventReceiver.h:236
irr::EET_JOYSTICK_INPUT_EVENT
@ EET_JOYSTICK_INPUT_EVENT
A joystick (joypad, gamepad) input event.
Definition: IEventReceiver.h:45
irr
Everything in the Irrlicht Engine can be found in this namespace.
Definition: aabbox3d.h:12
irr::EMBSM_EXTRA2
@ EMBSM_EXTRA2
currently only on windows
Definition: IEventReceiver.h:140
irr::u16
unsigned short u16
16 bit unsigned variable.
Definition: irrTypes.h:40
irr::SEvent::SGUIEvent
Any kind of GUI event.
Definition: IEventReceiver.h:265
irr::EMBSM_FORCE_32_BIT
@ EMBSM_FORCE_32_BIT
Definition: IEventReceiver.h:142
irr::SEvent::SJoystickEvent::ButtonStates
u32 ButtonStates
Definition: IEventReceiver.h:359
irr::gui::EGET_ELEMENT_FOCUS_LOST
@ EGET_ELEMENT_FOCUS_LOST
A gui element has lost its focus.
Definition: IEventReceiver.h:156
irr::u32
unsigned int u32
32 bit unsigned variable.
Definition: irrTypes.h:58
irr::EMOUSE_INPUT_EVENT
EMOUSE_INPUT_EVENT
Enumeration for all mouse input events.
Definition: IEventReceiver.h:74
irr::EMIE_MOUSE_WHEEL
@ EMIE_MOUSE_WHEEL
Definition: IEventReceiver.h:99
irr::ELOG_LEVEL
ELOG_LEVEL
Definition: ILogger.h:17
irr::gui::EGET_ELEMENT_CLOSED
@ EGET_ELEMENT_CLOSED
An element would like to close.
Definition: IEventReceiver.h:173
irr::EMIE_LMOUSE_TRIPLE_CLICK
@ EMIE_LMOUSE_TRIPLE_CLICK
Definition: IEventReceiver.h:115
irr::SEvent::SJoystickEvent::AXIS_R
@ AXIS_R
Definition: IEventReceiver.h:351
irr::SEvent::SGUIEvent::Caller
gui::IGUIElement * Caller
IGUIElement who called the event.
Definition: IEventReceiver.h:268
irr::SEvent::SUserEvent::UserData2
s32 UserData2
Another user specified data as int.
Definition: IEventReceiver.h:411
irr::EMIE_RMOUSE_LEFT_UP
@ EMIE_RMOUSE_LEFT_UP
Right mouse button was left up.
Definition: IEventReceiver.h:89
irr::SEvent::SKeyInput::Key
EKEY_CODE Key
Key which has been pressed or released.
Definition: IEventReceiver.h:322
irr::gui::EGET_TAB_CHANGED
@ EGET_TAB_CHANGED
The tab was changed in an tab control.
Definition: IEventReceiver.h:223
irr::gui::EGET_MESSAGEBOX_CANCEL
@ EGET_MESSAGEBOX_CANCEL
'Cancel' was clicked on a messagebox
Definition: IEventReceiver.h:211
irr::SEvent::SUserEvent
Any kind of user event.
Definition: IEventReceiver.h:405
irr::SEvent::SKeyInput::Shift
bool Shift
True if shift was also pressed.
Definition: IEventReceiver.h:328
irr::EMIE_COUNT
@ EMIE_COUNT
No real event. Just for convenience to get number of events.
Definition: IEventReceiver.h:126
irr::IEventReceiver::OnEvent
virtual bool OnEvent(const SEvent &event)=0
Called if an event happened.
irr::SEvent::EventType
EEVENT_TYPE EventType
Definition: IEventReceiver.h:414
irr::gui::EGET_COMBO_BOX_CHANGED
@ EGET_COMBO_BOX_CHANGED
The selection in a combo box has been changed.
Definition: IEventReceiver.h:229
irr::SEvent::SMouseInput::ButtonStates
u32 ButtonStates
Definition: IEventReceiver.h:300
irr::EMBSM_MIDDLE
@ EMBSM_MIDDLE
Definition: IEventReceiver.h:134
irr::EMIE_MMOUSE_TRIPLE_CLICK
@ EMIE_MMOUSE_TRIPLE_CLICK
Definition: IEventReceiver.h:123
irr::SEvent::SUserEvent::UserData1
s32 UserData1
Some user specified data as int.
Definition: IEventReceiver.h:408
irr::EET_GUI_EVENT
@ EET_GUI_EVENT
An event of the graphical user interface.
Definition: IEventReceiver.h:22
irr::EMIE_MOUSE_MOVED
@ EMIE_MOUSE_MOVED
The mouse cursor changed its position.
Definition: IEventReceiver.h:95
irr::SEvent::SMouseInput::Y
s32 Y
Y position of mouse cursor.
Definition: IEventReceiver.h:285
irr::SEvent::SJoystickEvent::IsButtonPressed
bool IsButtonPressed(u32 button) const
A helper function to check if a button is pressed.
Definition: IEventReceiver.h:384
irr::EKEY_CODE
EKEY_CODE
Definition: Keycodes.h:11
irr::gui::IGUIElement
Base class of all GUI elements.
Definition: IGUIElement.h:25
irr::gui::EGET_MENU_ITEM_SELECTED
@ EGET_MENU_ITEM_SELECTED
A menu item was selected in a (context) menu.
Definition: IEventReceiver.h:226
irr::u8
unsigned char u8
8 bit unsigned variable.
Definition: irrTypes.h:18
irr::SEvent::SLogEvent::Level
ELOG_LEVEL Level
Log level in which the text has been logged.
Definition: IEventReceiver.h:401
irr::SEvent::SMouseInput::Shift
bool Shift
True if shift was also pressed.
Definition: IEventReceiver.h:292
irr::SEvent::SGUIEvent::EventType
gui::EGUI_EVENT_TYPE EventType
Type of GUI Event.
Definition: IEventReceiver.h:274
irr::gui::EGET_TREEVIEW_NODE_COLLAPS
@ EGET_TREEVIEW_NODE_COLLAPS
Definition: IEventReceiver.h:253
irr::E_MOUSE_BUTTON_STATE_MASK
E_MOUSE_BUTTON_STATE_MASK
Masks for mouse button states.
Definition: IEventReceiver.h:130
irr::EMIE_RMOUSE_DOUBLE_CLICK
@ EMIE_RMOUSE_DOUBLE_CLICK
Definition: IEventReceiver.h:107