NAP
napinput/src/inputcomponent.h
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4 
5 #pragma once
6 
7 #include <rtti/rtti.h>
8 #include <nap/signalslot.h>
9 #include <component.h>
10 #include <inputevent.h>
11 #include <utility/dllexport.h>
12 
13 namespace nap
14 {
15  // Forward declares
16  class InputService;
17  class InputComponentInstance;
18 
22  class InputComponent : public Component
23  {
24  RTTI_ENABLE(Component)
25  DECLARE_COMPONENT(InputComponent, InputComponentInstance)
26  };
27 
28 
34  {
35  RTTI_ENABLE(ComponentInstance)
36  public:
38  ComponentInstance(entity, resource)
39  { }
40 
46  virtual void trigger(const nap::InputEvent& inEvent) = 0;
47  };
48 
49 
51  // Key Input Component
53 
54  class KeyInputComponentInstance;
55 
59  class NAPAPI KeyInputComponent : public InputComponent
60  {
61  RTTI_ENABLE(InputComponent)
63  };
64 
65 
71  {
72  friend class InputService;
73  RTTI_ENABLE(InputComponentInstance)
74 
75  public:
77  InputComponentInstance(entity, resource)
78  { }
79 
80  // Signals
83 
84  protected:
85  virtual void trigger(const nap::InputEvent& inEvent) override;
86  };
87 
88 
90  // Pointer Input Component
92 
94 
98  class NAPAPI PointerInputComponent : public InputComponent
99  {
100  RTTI_ENABLE(InputComponent)
102  };
103 
104 
110  {
111  friend class InputService;
112  RTTI_ENABLE(InputComponentInstance)
113 
114  public:
116  InputComponentInstance(entity, resource)
117  { }
118 
122 
123  protected:
124  virtual void trigger(const nap::InputEvent& inEvent) override;
125  };
126 
127 
129  // Touch Input Component
131 
133 
138  class NAPAPI TouchInputComponent : public InputComponent
139  {
140  RTTI_ENABLE(InputComponent)
142  };
143 
144 
150  {
151  friend class InputService;
152  RTTI_ENABLE(InputComponentInstance)
153 
154  public:
156  InputComponentInstance(entity, resource)
157  { }
158 
162 
163  protected:
164  virtual void trigger(const nap::InputEvent& inEvent) override;
165  };
166 
167 
169  // Controller Input Component
171 
178  {
179  RTTI_ENABLE(InputComponent)
181  };
182 
183 
189  {
190  friend class InputService;
191  RTTI_ENABLE(InputComponentInstance)
192 
193  public:
195  InputComponentInstance(entity, resource)
196  { }
197 
201 
202  protected:
203  virtual void trigger(const nap::InputEvent& inEvent) override;
204  };
205 }
nap::InputComponentInstance
Definition: napinput/src/inputcomponent.h:33
nap::ControllerInputComponentInstance::ControllerInputComponentInstance
ControllerInputComponentInstance(EntityInstance &entity, Component &resource)
Definition: napinput/src/inputcomponent.h:194
nap::PointerInputComponent
Definition: napinput/src/inputcomponent.h:98
nap::KeyInputComponentInstance::pressed
Signal< const KeyPressEvent & > pressed
Signal emitted when a key is pressed.
Definition: napinput/src/inputcomponent.h:81
nap::ControllerInputComponentInstance::axisChanged
Signal< const ControllerAxisEvent & > axisChanged
Signal emitted when this component receives axis movement information.
Definition: napinput/src/inputcomponent.h:200
nap::TouchInputComponentInstance::pressed
Signal< const TouchPressEvent & > pressed
Signal emitted when the component receives a finger press.
Definition: napinput/src/inputcomponent.h:159
nap::KeyInputComponentInstance::released
Signal< const KeyReleaseEvent & > released
Signal emitted when a key is released.
Definition: napinput/src/inputcomponent.h:82
nap::PointerInputComponentInstance::pressed
Signal< const PointerPressEvent & > pressed
Signal emitted when the input component receives a click.
Definition: napinput/src/inputcomponent.h:119
nap::TouchInputComponentInstance
Definition: napinput/src/inputcomponent.h:149
nap::KeyInputComponent
Definition: napinput/src/inputcomponent.h:59
nap::ControllerInputComponentInstance::pressed
Signal< const ControllerButtonPressEvent & > pressed
Signal emitted when the controller button is pressed.
Definition: napinput/src/inputcomponent.h:198
nap::ControllerInputComponent
Definition: napinput/src/inputcomponent.h:177
nap::Signal
Definition: signalslot.h:28
nap::InputService
Definition: inputservice.h:32
nap::ControllerInputComponentInstance
Definition: napinput/src/inputcomponent.h:188
nap::EntityInstance
Definition: entity.h:34
nap::TouchInputComponent
Definition: napinput/src/inputcomponent.h:138
nap::TouchInputComponentInstance::released
Signal< const TouchReleaseEvent & > released
Signal emitted when the finger is released.
Definition: napinput/src/inputcomponent.h:160
nap::PointerInputComponentInstance::moved
Signal< const PointerMoveEvent & > moved
Signal emitted when this component receives a mouse move.
Definition: napinput/src/inputcomponent.h:121
nap::KeyInputComponentInstance::KeyInputComponentInstance
KeyInputComponentInstance(EntityInstance &entity, Component &resource)
Definition: napinput/src/inputcomponent.h:76
nap::ComponentInstance
Definition: component.h:43
nap::PointerInputComponentInstance
Definition: napinput/src/inputcomponent.h:109
nap::Component
Definition: component.h:151
nap::PointerInputComponentInstance::PointerInputComponentInstance
PointerInputComponentInstance(EntityInstance &entity, Component &resource)
Definition: napinput/src/inputcomponent.h:115
nap::TouchInputComponentInstance::TouchInputComponentInstance
TouchInputComponentInstance(EntityInstance &entity, Component &resource)
Definition: napinput/src/inputcomponent.h:155
nap::InputComponentInstance::InputComponentInstance
InputComponentInstance(EntityInstance &entity, Component &resource)
Definition: napinput/src/inputcomponent.h:37
nap
Definition: templateapp.h:17
nap::ControllerInputComponentInstance::released
Signal< const ControllerButtonReleaseEvent & > released
Signal emitted when the controller button is released.
Definition: napinput/src/inputcomponent.h:199
nap::TouchInputComponentInstance::moved
Signal< const TouchMoveEvent & > moved
Signal emitted when the finger moves.
Definition: napinput/src/inputcomponent.h:161
nap::InputComponent
Definition: napinput/src/inputcomponent.h:22
nap::PointerInputComponentInstance::released
Signal< const PointerReleaseEvent & > released
Signal emitted when the click is released.
Definition: napinput/src/inputcomponent.h:120
nap::KeyInputComponentInstance
Definition: napinput/src/inputcomponent.h:70
nap::InputEvent
Definition: inputevent.h:27