Omnidome
Fulldome Mapping Software Toolkit
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
omni::input::Controller Class Reference

Input controller controls which inputs are currently active Implemented as a singleton. More...

#include <Controller.h>

Collaboration diagram for omni::input::Controller:
Collaboration graph
[legend]

Public Member Functions

bool isActive (input::Interface *) const
 
int activeCount (input::Interface *) const
 
void add (input::Interface *)
 
void remove (input::Interface *)
 
void activate (input::Interface *)
 Activate input. More...
 
void deactivate (input::Interface *)
 Deactivate input. More...
 

Static Public Member Functions

static Controllerinstance ()
 

Private Member Functions

 Controller ()
 
 ~Controller ()
 

Private Attributes

std::unordered_map
< input::Interface *, int > 
usage_
 

Static Private Attributes

static Controllerinstance_ = nullptr
 

Detailed Description

Input controller controls which inputs are currently active Implemented as a singleton.

Constructor & Destructor Documentation

omni::input::Controller::Controller ( )
private
26  {
27 
28  }
omni::input::Controller::~Controller ( )
private
30  {
31  }

Member Function Documentation

void omni::input::Controller::activate ( input::Interface _input)

Activate input.

Increment usage count

50  {
51  if (!_input) return;
52 
53  if (!isActive(_input)) {
54  // Activate input if it not in usage list
55  _input->activate();
56 
57  // Set usage count to 1 initially
58  usage_[_input] = 1;
59  } else {
60  /// Increment usage count
61  ++usage_[_input];
62  }
63  }
bool isActive(input::Interface *) const
Definition: Controller.cpp:40
std::unordered_map< input::Interface *, int > usage_
Definition: Controller.h:54
int omni::input::Controller::activeCount ( input::Interface _input) const
44  {
45  if (usage_.count(_input) == 0) return 0;
46 
47  return usage_.at(_input);
48  }
std::unordered_map< input::Interface *, int > usage_
Definition: Controller.h:54
void omni::input::Controller::add ( input::Interface _input)
76  {
77  if (usage_.count(_input) > 0) return;
78 
79  usage_[_input] = 0; // Do not activate the input
80  }
std::unordered_map< input::Interface *, int > usage_
Definition: Controller.h:54
void omni::input::Controller::deactivate ( input::Interface _input)

Deactivate input.

65  {
66  if (usage_.count(_input) == 0) return;
67  if (usage_[_input] == 0) return;
68 
69  --usage_[_input];
70 
71  if (!isActive(_input)) {
72  _input->deactivate();
73  }
74  }
bool isActive(input::Interface *) const
Definition: Controller.cpp:40
std::unordered_map< input::Interface *, int > usage_
Definition: Controller.h:54
Controller * omni::input::Controller::instance ( )
static
33  {
34  if (!instance_) {
35  instance_ = new Controller;
36  }
37  return instance_;
38  }
Controller()
Definition: Controller.cpp:26
static Controller * instance_
Definition: Controller.h:52
bool omni::input::Controller::isActive ( input::Interface _input) const
40  {
41  return activeCount(_input) > 0;
42  }
int activeCount(input::Interface *) const
Definition: Controller.cpp:44
void omni::input::Controller::remove ( input::Interface _input)
82  {
83  if (usage_.count(_input) == 0) return;
84  deactivate(_input);
85  usage_.erase(_input);
86  }
void deactivate(input::Interface *)
Deactivate input.
Definition: Controller.cpp:65
std::unordered_map< input::Interface *, int > usage_
Definition: Controller.h:54

Field Documentation

Controller * omni::input::Controller::instance_ = nullptr
staticprivate
std::unordered_map<input::Interface *, int> omni::input::Controller::usage_
private

The documentation for this class was generated from the following files: