SLProject  4.3.020
A platform independent 3D computer graphics framework for desktop OS, Android, iOS and online in web browsers
SENSOrientation Class Referenceabstract

#include <SENSOrientation.h>

Inheritance diagram for SENSOrientation:
[legend]

Classes

struct  Quat
 

Public Member Functions

virtual ~SENSOrientation ()
 
virtual bool start ()=0
 
virtual void stop ()=0
 
Quat getOrientation () const
 
bool isRunning ()
 
void registerListener (SENSOrientationListener *listener)
 
void unregisterListener (SENSOrientationListener *listener)
 

Protected Member Functions

void setOrientation (Quat orientation)
 

Protected Attributes

bool _running = false
 

Private Attributes

SENSTimePt _timePt
 
Quat _orientation
 
std::mutex _orientationMutex
 
std::vector< SENSOrientationListener * > _listeners
 
std::mutex _listenerMutex
 

Detailed Description

Definition at line 52 of file SENSOrientation.h.

Constructor & Destructor Documentation

◆ ~SENSOrientation()

virtual SENSOrientation::~SENSOrientation ( )
inlinevirtual

Definition at line 71 of file SENSOrientation.h.

71 {}

Member Function Documentation

◆ getOrientation()

SENSOrientation::Quat SENSOrientation::getOrientation ( ) const

Definition at line 7 of file SENSOrientation.cpp.

8 {
9  const std::lock_guard<std::mutex> lock(_orientationMutex);
10  return _orientation;
11 }
std::mutex _orientationMutex

◆ isRunning()

bool SENSOrientation::isRunning ( )
inline

Definition at line 78 of file SENSOrientation.h.

78 { return _running; }

◆ registerListener()

void SENSOrientation::registerListener ( SENSOrientationListener listener)

Definition at line 31 of file SENSOrientation.cpp.

32 {
33  std::lock_guard<std::mutex> lock(_listenerMutex);
34  if (std::find(_listeners.begin(), _listeners.end(), listener) == _listeners.end())
35  _listeners.push_back(listener);
36 }
std::mutex _listenerMutex
std::vector< SENSOrientationListener * > _listeners

◆ setOrientation()

void SENSOrientation::setOrientation ( SENSOrientation::Quat  orientation)
protected

Definition at line 13 of file SENSOrientation.cpp.

14 {
15  //estimate time before running into lock
16  SENSTimePt timePt = SENSClock::now();
17 
18  {
19  const std::lock_guard<std::mutex> lock(_orientationMutex);
20  _orientation = orientation;
21  _timePt = timePt;
22  }
23 
24  {
25  std::lock_guard<std::mutex> lock(_listenerMutex); //to secure new listeners from registerListener, should not be a performance issue
27  l->onOrientation(timePt, orientation);
28  }
29 }
std::chrono::high_resolution_clock::time_point SENSTimePt
Definition: SENS.h:57
SENSTimePt _timePt

◆ start()

virtual bool SENSOrientation::start ( )
pure virtual

◆ stop()

virtual void SENSOrientation::stop ( )
pure virtual

◆ unregisterListener()

void SENSOrientation::unregisterListener ( SENSOrientationListener listener)

Definition at line 37 of file SENSOrientation.cpp.

38 {
39  std::lock_guard<std::mutex> lock(_listenerMutex);
40  for (auto it = _listeners.begin(); it != _listeners.end(); ++it)
41  {
42  if (*it == listener)
43  {
44  _listeners.erase(it);
45  break;
46  }
47  }
48 }

Member Data Documentation

◆ _listenerMutex

std::mutex SENSOrientation::_listenerMutex
private

Definition at line 94 of file SENSOrientation.h.

◆ _listeners

std::vector<SENSOrientationListener*> SENSOrientation::_listeners
private

Definition at line 93 of file SENSOrientation.h.

◆ _orientation

Quat SENSOrientation::_orientation
private

Definition at line 90 of file SENSOrientation.h.

◆ _orientationMutex

std::mutex SENSOrientation::_orientationMutex
mutableprivate

Definition at line 91 of file SENSOrientation.h.

◆ _running

bool SENSOrientation::_running = false
protected

Definition at line 86 of file SENSOrientation.h.

◆ _timePt

SENSTimePt SENSOrientation::_timePt
private

Definition at line 89 of file SENSOrientation.h.


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