summaryrefslogtreecommitdiff
path: root/Runtime/Utilities/UserAuthorizationManager.h
blob: 386a22c3f5d47a16fa66c1a9ef4758e9f36425ab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#ifndef USERAUTHORIZATIONMANAGER_H
#define USERAUTHORIZATIONMANAGER_H

#include "Runtime/Mono/MonoBehaviour.h"
#include "Runtime/Misc/AsyncOperation.h"

class UserAuthorizationManager;

UserAuthorizationManager &GetUserAuthorizationManager();

class UserAuthorizationManager {
public:
	UserAuthorizationManager ();
	
	enum Mode {
		kNone = 0,
		kWebCam = 1 << 0,
		kMicrophone = 1 << 1
	};
	
	void Reset ();
	AsyncOperation *RequestUserAuthorization (int mode);
	void ReplyToUserAuthorizationRequest (bool reply, bool remember = false);
	bool HasUserAuthorization (int mode) const  { return (m_AuthorizationMode & mode) == mode; }
	
	int GetAuthorizationRequest() const { return m_AuthorizationRequest; }
	
	MonoBehaviour *GetAuthorizationDialog ();
private:
	class UserAuthorizationManagerOperation : public AsyncOperation
	{
		virtual float GetProgress () { return 0.0f; }
		virtual bool IsDone () { return GetUserAuthorizationManager().m_AuthorizationRequest == 0; }
	};

	class UserAuthorizationManagerErrorOperation : public AsyncOperation
	{
		virtual float GetProgress () { return 0.0f; }
		virtual bool IsDone () { return true; }
	};

	int m_AuthorizationMode;
	int m_AuthorizationRequest;
	UserAuthorizationManagerOperation *m_AuthorizationOperation;
	PPtr<GameObject> m_AuthorizationDialog;
};
#endif