Toggle navigation
ivorium
iv_components
Example project
GitHub
Main Page
Modules
Classes
Files
File List
File Members
ivorium_systems
InputSystem
SourceInputNode.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include "
InputNode.hpp
"
4
#include "
InputBindingSystem/InputBindingListener.hpp
"
5
#include "../TimeSystem/FrameUpdateClient.hpp"
6
7
namespace
iv
8
{
9
10
class
SourceInputNode
:
public
InputNode
,
public
InputRoot
,
private
InputBindingListener
,
public
FrameUpdateClient
11
{
12
public
:
13
using
InputNode::instance
;
14
ClientMarker
cm
;
15
16
SourceInputNode
(
Instance
* inst );
17
~SourceInputNode
();
18
19
bool
input
(
Input
const
*
input
);
20
21
void
Add_InputNode
(
InputNode
* node );
22
void
Remove_InputNode
(
InputNode
* node );
23
24
// InputRoot
25
virtual
void
treeRefresh
()
override
;
26
virtual
void
deactivateSubtree
(
InputNode
* node )
override
;
27
virtual
void
reserve_key
(
Input::DeviceKey
key,
bool
reserve )
override
;
28
29
// InputNode
30
virtual
InputRoot
*
input_getRoot
()
override
;
31
virtual
void
input_eachChild
( std::function<
void
(
InputNode
* ) >
const
& )
override
;
32
virtual
void
input_childDisconnect
(
InputNode
* )
override
;
33
34
private
:
35
// FrameUpdateClient
36
virtual
void
frame_update()
override
;
37
38
// InputBindingListener
39
virtual
void
on_binding_changed()
override
;
40
41
//
42
void
do_refresh();
43
bool
is_reserved(
Input::DeviceKey
device_key );
44
45
private
:
46
std::unordered_set< Input::DeviceKey, Input::DeviceKey_Hash > pressed;
47
std::unordered_set< Input::DeviceKey, Input::DeviceKey_Hash > reserved;
48
std::unordered_set< Input::Key > reserved_whole;
49
50
bool
refresh_queued;
51
52
std::vector< InputNode * > _input_children;
53
};
54
55
}