ECSTASY
All in the name
Loading...
Searching...
No Matches
ecstasy::integration::event Namespace Reference

Event integration. More...

Classes

struct  Event
 Event class. More...
 
class  EventListeners
 Event listeners component type. More...
 
class  EventsManager
 Static helper class to handle ecstasy events. More...
 
class  Gamepad
 Current Gamepad state. More...
 
struct  GamepadAxisEvent
 Event describing a gamepad axis value change. More...
 
struct  GamepadButtonEvent
 Event describing a gamepad button pressed or released. More...
 
struct  GamepadButtonPressedEvent
 Event describing a gamepad button pressed. More...
 
struct  GamepadButtonReleasedEvent
 Event describing a gamepad button released. More...
 
class  GamepadCombinationListener
 Listener of a button combination. More...
 
struct  GamepadConnectedEvent
 Event describing a gamepad connection or disconnection. More...
 
class  Gamepads
 Current Gamepads states. More...
 
class  GamepadSequenceListener
 Listener of a button sequence. More...
 
class  Keyboard
 Current Keyboard state. More...
 
class  KeyCombinationListener
 Listener of a key combination. More...
 
struct  KeyEvent
 Event describing a key pressed or released. More...
 
struct  KeyPressedEvent
 Event describing a key pressed. More...
 
struct  KeyReleasedEvent
 Event describing a key released. More...
 
class  KeySequenceListener
 Listener of a key sequence. More...
 
class  Mouse
 Current mouse state. More...
 
struct  MouseButtonEvent
 Event describing when a mouse button is pressed or released. More...
 
struct  MouseButtonPressedEvent
 Event describing when a mouse button is pressed. More...
 
struct  MouseButtonReleasedEvent
 Event describing when a mouse button is released. More...
 
struct  MouseMoveEvent
 Event describing when the mouse move. More...
 
struct  MouseWheelScrollEvent
 Event describing when a mouse wheel is scrolled. More...
 
struct  TextEnteredEvent
 Event describing a text (character) entered. More...
 

Typedefs

template<typename E >
using EventListener = std::function< void(Registry &, Entity, const E &)>
 Event listener component type.
 
using GamepadAxisListener = EventListener< GamepadAxisEvent >
 GamepadAxisEvent listener.
 
using GamepadButtonListener = EventListener< GamepadButtonEvent >
 GamepadButtonEvent listener.
 
using GamepadConnectedListener = EventListener< GamepadConnectedEvent >
 GamepadConnectedEvent listener.
 
using KeyListener = EventListener< KeyEvent >
 KeyEvent listener.
 
using MouseButtonListener = EventListener< MouseButtonEvent >
 MouseButtonEvent listener.
 
using MouseMoveListener = EventListener< MouseMoveEvent >
 MouseMoveEvent listener.
 
using MouseWheelScrollListener = EventListener< MouseWheelScrollEvent >
 MouseWheelScrollEvent listener.
 
using TextEnteredListener = EventListener< TextEnteredEvent >
 TextEnteredEvent listener.
 

Functions

template<typename E >
static void callListeners (Registry &registry, const E &event)
 
static void callKeyListeners (Registry &registry, const KeyEvent &event)
 
static void callGamepadListeners (Registry &registry, const GamepadButtonEvent &event)
 

Detailed Description

Event integration.

Includes input states and event listeners for keyboard, mouse and gamepad.

Note
This is only a event handling integration: event detection is not included.
Enabled by ECSTASY_INTEGRATIONS_EVENT.
Author
Andréas Leroux (andre.nosp@m.as.l.nosp@m.eroux.nosp@m.@epi.nosp@m.tech..nosp@m.eu)
Since
1.0.0 (2022-11-18)

Typedef Documentation

◆ EventListener

template<typename E >
using ecstasy::integration::event::EventListener = typedef std::function<void(Registry &, Entity, const E &)>

Event listener component type.

Template Parameters
EEvent type to listen to.
Author
Andréas Leroux (andre.nosp@m.as.l.nosp@m.eroux.nosp@m.@epi.nosp@m.tech..nosp@m.eu)
Since
1.0.0 (2022-11-18)

Definition at line 36 of file EventListeners.hpp.

◆ GamepadAxisListener

◆ GamepadButtonListener

◆ GamepadConnectedListener

◆ KeyListener

KeyEvent listener.

Definition at line 22 of file KeyListener.hpp.

◆ MouseButtonListener

◆ MouseMoveListener

◆ MouseWheelScrollListener

◆ TextEnteredListener

Function Documentation

◆ callGamepadListeners()

static void ecstasy::integration::event::callGamepadListeners ( Registry registry,
const GamepadButtonEvent event 
)
static

Definition at line 66 of file EventsManager.cpp.

67 {
68 for (auto [entity, listener, listeners, sequence, combination] :
69 registry
74 if (listener)
75 listener.value()(registry, entity, event);
76 if (listeners)
77 listeners.value()(registry, entity, event);
78 if (sequence && sequence.value().get().update(event))
79 sequence.value()(registry, entity);
80 if (combination && combination.value().get().update(event))
81 combination.value()(registry, entity);
82 }
83 }
Resource holding all the Registry entities.
Definition Entities.hpp:30
Event integration.
Definition Event.hpp:25
Placeholder for Maybe.
Definition Maybe.hpp:31
Placeholder for Or.
Definition Or.hpp:31
Event describing a gamepad button pressed or released.

◆ callKeyListeners()

static void ecstasy::integration::event::callKeyListeners ( Registry registry,
const KeyEvent event 
)
static

Definition at line 47 of file EventsManager.cpp.

48 {
49 for (auto [entity, listener, listeners, sequence, combination] :
50 registry
55 if (listener)
56 listener.value()(registry, entity, event);
57 if (listeners)
58 listeners.value()(registry, entity, event);
59 if (sequence && sequence.value().get().update(event))
60 sequence.value()(registry, entity);
61 if (combination && combination.value().get().update(event))
62 combination.value()(registry, entity);
63 }
64 }
Event describing a key pressed or released.
Definition KeyEvent.hpp:25

◆ callListeners()

template<typename E >
static void ecstasy::integration::event::callListeners ( Registry registry,
const E &  event 
)
static

Definition at line 35 of file EventsManager.cpp.

36 {
37 for (auto [entity, listener, listeners] :
38 registry.select<Entities, Maybe<EventListener<E>>, Maybe<EventListeners<E>>>()
39 .template where<Or<EventListener<E>, EventListeners<E>>>()) {
40 if (listener)
41 listener.value()(registry, entity, event);
42 if (listeners)
43 listeners.value()(registry, entity, event);
44 }
45 }