LeiaSR SDK 720218b2 v1.32.7.6322 2025-02-13T14:55:38Z
Stable
handtracker.h
Go to the documentation of this file.
1
5#pragma once
6
8
9#include <map>
10#include <thread>
11#include <mutex>
12#include <string>
13
14#include "handpose.h"
15#include "handposestream.h"
16#include "handevent.h"
17#include "handeventstream.h"
18
19#ifdef WIN32
20# ifdef COMPILING_DLL_SimulatedRealityHandTrackers
21# define DIMENCOSR_API __declspec(dllexport)
22# else
23# define DIMENCOSR_API __declspec(dllimport)
24# endif
25#else
26# define DIMENCOSR_API
27#endif
28
29namespace SR {
30
42
43public:
50 static HandTracker* create(SRContext &context);
51
56 virtual std::shared_ptr<HandPoseStream> openHandPoseStream(HandPoseListener* listener) = 0;
62 virtual std::shared_ptr<HandPoseStream> openHandPoseStream(HandPoseListener* listener, uint64_t handIdentifier) = 0;
69 virtual std::shared_ptr<HandEventStream> openHandEventStream(HandEventListener* listener) = 0;
74 virtual void streamClosed(HandPoseStream* stream) = 0;
79 virtual void streamClosed(HandEventStream* stream) = 0;
80
89 static std::shared_ptr<HandPoseStream> openDynamicHandPoseStream(SR_handEvent createEvent, HandPoseListener* listener) {
90 if (createEvent.eventType == CreateHand) {
91 HandTracker* sender = (HandTracker*)createEvent.sender;
92 return sender->openHandPoseStream(listener, createEvent.handId);
93 }
94 else {
95 return nullptr;
96 }
97 }
98
107 static void closeDynamicHandPoseStream(SR_handEvent destroyEvent, HandPoseListener* listener) {
108 if (destroyEvent.eventType == DestroyHand) {
109 HandTracker* sender = (HandTracker*)destroyEvent.sender;
110 // Do stuff
111 }
112 }
113};
114
115}
116
117#undef DIMENCOSR_API
Interface for listening to SR_handEvent updates.
Definition: handposelistener.h:16
Stream of SR_handEvent objects.
Definition: handeventstream.h:31
Interface for listening to SR_handPose updates.
Definition: handposelistener.h:34
Stream of SR_handPose objects.
Definition: handposestream.h:31
Sense class which provides hand tracking functionality to the SR system.
Definition: handtracker.h:41
virtual std::shared_ptr< HandPoseStream > openHandPoseStream(HandPoseListener *listener)=0
Creates a HandPoseStream for listener to be connected to.
static void closeDynamicHandPoseStream(SR_handEvent destroyEvent, HandPoseListener *listener)
Closes a specific HandPoseStream referenced by destroyEvent.
Definition: handtracker.h:107
virtual std::shared_ptr< HandEventStream > openHandEventStream(HandEventListener *listener)=0
Creates a HandEventStream for listener to be connected to.
virtual void streamClosed(HandPoseStream *stream)=0
Closes a specific HandPoseStream.
virtual std::shared_ptr< HandPoseStream > openHandPoseStream(HandPoseListener *listener, uint64_t handIdentifier)=0
Creates a HandPoseStream specific for handIdentifier for listener to be connected to.
virtual void streamClosed(HandEventStream *stream)=0
Closes a specific HandEventStream.
static std::shared_ptr< HandPoseStream > openDynamicHandPoseStream(SR_handEvent createEvent, HandPoseListener *listener)
Creates a HandPoseStream specific for createEvent for listener to be connected to.
Definition: handtracker.h:89
static HandTracker * create(SRContext &context)
Creates a functional HandTracker instance.
Maintains WorldObject and Sense objects during the application lifetime.
Definition: srcontext.h:75
Class of objects dealing with Streams of data.
Definition: sense.h:37
@ CreateHand
Definition: handevent.h:11
@ DestroyHand
Definition: handevent.h:12
#define DIMENCOSR_API
Definition: handtracker.h:26
Namespace containing all C++ Simulated Reality classes.
Definition: srconfiguration.h:20
C-compatible struct notifying the listener that the state of a hand has changed.
Definition: handevent.h:23
uint64_t sender
SR::HandTracker* Is valid while the event is being handled.
Definition: handevent.h:29
uint64_t handId
Hand identifier.
Definition: handevent.h:26
SR_handEventType eventType
Type of hand event.
Definition: handevent.h:28