mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-01 17:20:09 -06:00
- Moved all OpenSpace headers to separate include directory - Added OpenSpaceTests binary with OPENSPACE_HAVE_TESTS define - Added CMake setting of BASE_DIR - Added OpenSpace initial tests for SceneGraph and SceneGraphNodes - Added OpenSpace initial tests for psc and pss - Restructured OpenSpace so no GL functions are called in constructors to make the classes testable - Todo: Make the base dir possible to set through command line argument and configuration file
55 lines
1.3 KiB
C++
55 lines
1.3 KiB
C++
#ifndef DEVICEIDENTIFIER_H
|
|
#define DEVICEIDENTIFIER_H
|
|
|
|
// std includes
|
|
#include <array>
|
|
#include <mutex>
|
|
#include <memory>
|
|
|
|
namespace openspace {
|
|
|
|
#define MAXDEVICES 16
|
|
|
|
enum class InputDevice {NONE, UNKNOWN, SPACENAVIGATOR, XBOX};
|
|
|
|
class DeviceIdentifier {
|
|
public:
|
|
static DeviceIdentifier& ref();
|
|
virtual ~DeviceIdentifier();
|
|
|
|
static void init();
|
|
static void deinit();
|
|
static bool isInitialized();
|
|
|
|
void scanDevices();
|
|
const int numberOfDevices() const;
|
|
const InputDevice type(const int device) const;
|
|
|
|
void update();
|
|
void update(const int device);
|
|
|
|
const int getButtons(const int device, unsigned char **buttons = nullptr) const;
|
|
const int getAxes(const int device, float **axespos = nullptr) const;
|
|
void get(const int device, unsigned char **buttons, float **axespos) const;
|
|
|
|
private:
|
|
// singleton
|
|
static DeviceIdentifier* this_;
|
|
DeviceIdentifier(void);
|
|
DeviceIdentifier(const DeviceIdentifier& src);
|
|
DeviceIdentifier& operator=(const DeviceIdentifier& rhs);
|
|
|
|
|
|
// member variables
|
|
int devices_;
|
|
std::array<InputDevice, MAXDEVICES> inputDevice_;
|
|
std::array<int, MAXDEVICES> numberOfAxes_;
|
|
std::array<int, MAXDEVICES> numberOfButtons_;
|
|
std::array<float *, MAXDEVICES> axesPos_;
|
|
std::array<unsigned char *, MAXDEVICES> buttons_;
|
|
|
|
};
|
|
|
|
} // namespace openspace
|
|
|
|
#endif |