NAP
inputrouter.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 // External Includes
8 #include <rtti/object.h>
9 #include <component.h>
10 #include <utility/dllexport.h>
11 
12 namespace nap
13 {
14  class InputEvent;
15  class EntityInstance;
16  class DefaultInputRouterComponentInstance;
17 
23  class NAPAPI InputRouter
24  {
25  public:
26  using EntityList = std::vector<EntityInstance*>;
27 
33  virtual void routeEvent(const InputEvent& event, const EntityList& entities) = 0;
34  };
35 
36 
41  class NAPAPI DefaultInputRouter : public InputRouter
42  {
43  public:
47  DefaultInputRouter() = default;
48 
53  DefaultInputRouter(bool recursive) : mRecursive(recursive) { }
54 
61  virtual void routeEvent(const InputEvent& event, const EntityList& entities);
62 
66  void setRecursive(bool value) { mRecursive = value; }
67 
71  bool isRecursive() const { return mRecursive; }
72 
73  private:
74  bool mRecursive = false;
75  };
76 
77 
83  class NAPAPI DefaultInputRouterComponent : public Component
84  {
85  RTTI_ENABLE(Component)
87  };
88 
89 
95  {
96  RTTI_ENABLE(ComponentInstance)
97 
98  public:
100  ComponentInstance(entity, resource)
101  { }
102 
103  DefaultInputRouter mInputRouter; // Default input router
104  };
105 }
nap::DefaultInputRouter::setRecursive
void setRecursive(bool value)
Definition: inputrouter.h:66
nap::InputRouter
Definition: inputrouter.h:23
nap::DefaultInputRouter
Definition: inputrouter.h:41
nap::DefaultInputRouterComponentInstance::DefaultInputRouterComponentInstance
DefaultInputRouterComponentInstance(EntityInstance &entity, Component &resource)
Definition: inputrouter.h:99
nap::DefaultInputRouter::isRecursive
bool isRecursive() const
Definition: inputrouter.h:71
nap::EntityList
std::vector< EntityInstance * > EntityList
Definition: entity.h:27
nap::EntityInstance
Definition: entity.h:34
nap::ComponentInstance
Definition: component.h:43
nap::DefaultInputRouter::DefaultInputRouter
DefaultInputRouter(bool recursive)
Definition: inputrouter.h:53
nap::Component
Definition: component.h:151
nap
Definition: templateapp.h:17
nap::DefaultInputRouterComponentInstance::mInputRouter
DefaultInputRouter mInputRouter
Definition: inputrouter.h:103
nap::InputRouter::EntityList
std::vector< EntityInstance * > EntityList
Definition: inputrouter.h:26
nap::DefaultInputRouterComponentInstance
Definition: inputrouter.h:94
nap::InputEvent
Definition: inputevent.h:27
nap::DefaultInputRouterComponent
Definition: inputrouter.h:83