diff options
Diffstat (limited to 'Runtime/Export/UserAuthorizationDialog.cs')
-rw-r--r-- | Runtime/Export/UserAuthorizationDialog.cs | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/Runtime/Export/UserAuthorizationDialog.cs b/Runtime/Export/UserAuthorizationDialog.cs new file mode 100644 index 0000000..c2cb011 --- /dev/null +++ b/Runtime/Export/UserAuthorizationDialog.cs @@ -0,0 +1,166 @@ +using UnityEngine; +namespace UnityEngine +{ + +[AddComponentMenu("")] +class UserAuthorizationDialog : MonoBehaviour +{ +#if !UNITY_FLASH && !UNITY_WEBGL && !UNITY_WINRT + private Rect windowRect; + private const int width = 385; + private const int height = 155; + + private Texture warningIcon; +#endif + + private void Start () + { +#if !UNITY_FLASH && !UNITY_WEBGL && !UNITY_WINRT + warningIcon = Resources.GetBuiltinResource(typeof (Texture2D), "WarningSign.psd") as Texture2D; + if (Screen.width < width || Screen.height < height) + { + Debug.LogError ("Screen is to small to display authorization dialog. Authorization denied."); + Application.ReplyToUserAuthorizationRequest (false); + } + + windowRect = new Rect (Screen.width / 2 - width/2, Screen.height / 2 - height/2, width, height); +#endif + } + + private void OnGUI () { +#if !UNITY_FLASH && !UNITY_WEBGL && !UNITY_WINRT + GUISkin oldSkin = GUI.skin; + + // Create a custom GUISkin from scratch so users cannot change + // the look of the security dialog by changing the default GUI skins. + GUISkin skin = ScriptableObject.CreateInstance ("GUISkin") as GUISkin; + + skin.box.normal.background = (Texture2D)Resources.GetBuiltinResource(typeof(Texture2D), "GameSkin/box.png"); + skin.box.normal.textColor = new Color (0.9f, 0.9f, 0.9f, 1.0f); + skin.box.padding.left = 6; + skin.box.padding.right = 6; + skin.box.padding.top = 4; + skin.box.padding.bottom = 4; + skin.box.border.left = 6; + skin.box.border.right = 6; + skin.box.border.top = 6; + skin.box.border.bottom = 6; + skin.box.margin.left = 4; + skin.box.margin.right = 4; + skin.box.margin.top = 4; + skin.box.margin.bottom = 4; + + skin.button.normal.background = (Texture2D)Resources.GetBuiltinResource(typeof(Texture2D), "GameSkin/button.png"); + skin.button.normal.textColor = new Color (0.9f, 0.9f, 0.9f, 1.0f); + skin.button.hover.background = (Texture2D)Resources.GetBuiltinResource(typeof(Texture2D), "GameSkin/button hover.png"); + skin.button.hover.textColor = Color.white; + skin.button.active.background = (Texture2D)Resources.GetBuiltinResource(typeof(Texture2D), "GameSkin/button active.png"); + skin.button.active.textColor = new Color (0.9f, 0.9f, 0.9f, 1.0f); + skin.button.border.left = 6; + skin.button.border.right = 6; + skin.button.border.top = 6; + skin.button.border.bottom = 6; + skin.button.padding.left = 8; + skin.button.padding.right = 8; + skin.button.padding.top = 4; + skin.button.padding.bottom = 4; + skin.button.margin.left = 4; + skin.button.margin.right = 4; + skin.button.margin.top = 4; + skin.button.margin.bottom = 4; + + skin.label.normal.textColor = new Color (0.9f, 0.9f, 0.9f, 1.0f); + skin.label.padding.left = 6; + skin.label.padding.right = 6; + skin.label.padding.top = 4; + skin.label.padding.bottom = 4; + skin.label.margin.left = 4; + skin.label.margin.right = 4; + skin.label.margin.top = 4; + skin.label.margin.bottom = 4; + skin.label.alignment = TextAnchor.UpperLeft; + + skin.window.normal.background = (Texture2D)Resources.GetBuiltinResource(typeof(Texture2D), "GameSkin/window.png"); + skin.window.normal.textColor = Color.white; + skin.window.border.left = 8; + skin.window.border.right = 8; + skin.window.border.top = 18; + skin.window.border.bottom = 8; + skin.window.padding.left = 8; + skin.window.padding.right = 8; + skin.window.padding.top = 20; + skin.window.padding.bottom = 5; + skin.window.alignment = TextAnchor.UpperCenter; + skin.window.contentOffset = new Vector2 (0, -18); + + GUI.skin = skin; + windowRect = GUI.Window (0, windowRect, DoUserAuthorizationDialog, "Unity Web Player Authorization Request"); + GUI.skin = oldSkin; +#endif + } + + // Make the contents of the window + private void DoUserAuthorizationDialog (int windowID) { +#if !UNITY_FLASH && !UNITY_WEBGL && !UNITY_WINRT + UserAuthorization auth = Application.GetUserAuthorizationRequestMode(); + + GUILayout.FlexibleSpace (); + + GUI.backgroundColor = new Color (0.9f, 0.9f, 0.9f, 0.7f); + GUILayout.BeginHorizontal ("box"); + GUILayout.FlexibleSpace (); + + GUILayout.BeginVertical(); + GUILayout.FlexibleSpace (); + + GUILayout.Label(warningIcon); + + GUILayout.FlexibleSpace (); + GUILayout.EndVertical(); + + GUILayout.FlexibleSpace (); + + GUILayout.BeginVertical(); + GUILayout.FlexibleSpace (); + + if (auth == (UserAuthorization.WebCam | UserAuthorization.Microphone)) + GUILayout.Label ("The content on this site would like to use your\ncomputer's web camera and microphone.\nThese images and sounds may be recorded."); + else + if (auth == UserAuthorization.WebCam) + GUILayout.Label ("The content on this site would like to use\nyour computer's web camera. The images\nfrom your web camera may be recorded."); + else + if (auth == UserAuthorization.Microphone) + GUILayout.Label ("The content on this site would like to use\nyour computer's microphone. The sounds\nfrom your microphone may be recorded."); + else + return; + + GUILayout.FlexibleSpace (); + GUILayout.EndVertical(); + + GUILayout.FlexibleSpace (); + GUILayout.EndHorizontal (); + + GUILayout.FlexibleSpace (); + + GUI.backgroundColor = Color.white; + GUILayout.BeginHorizontal (); + + if (GUILayout.Button ("Deny")) + Application.ReplyToUserAuthorizationRequest (false); + + GUILayout.FlexibleSpace (); + + if (GUILayout.Button ("Always Allow for this Site")) + Application.ReplyToUserAuthorizationRequest (true, true); + + GUILayout.Space (5); + + if (GUILayout.Button ("Allow")) + Application.ReplyToUserAuthorizationRequest (true); + + GUILayout.EndHorizontal (); + GUILayout.FlexibleSpace (); +#endif + } +} +} |