diff options
author | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
commit | 15740faf9fe9fe4be08965098bbf2947e096aeeb (patch) | |
tree | a730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/Utilities/UserAuthorizationManager.h |
Diffstat (limited to 'Runtime/Utilities/UserAuthorizationManager.h')
-rw-r--r-- | Runtime/Utilities/UserAuthorizationManager.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/Runtime/Utilities/UserAuthorizationManager.h b/Runtime/Utilities/UserAuthorizationManager.h new file mode 100644 index 0000000..386a22c --- /dev/null +++ b/Runtime/Utilities/UserAuthorizationManager.h @@ -0,0 +1,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
\ No newline at end of file |