AR Design
UBC EML collab with UBC SALA - visualizing IoT data in AR
CapabilitySettingsWindow.cs
Go to the documentation of this file.
1 // Copyright (c) Microsoft Corporation. All rights reserved.
2 // Licensed under the MIT License. See LICENSE in the project root for license information.
3 
4 using System;
5 using UnityEditor;
6 using UnityEngine;
7 
8 namespace HoloToolkit.Unity
9 {
13  public class CapabilitySettingsWindow : AutoConfigureWindow<PlayerSettings.WSACapability>
14  {
15  #region Internal Methods
16 
17  private void ApplySetting(PlayerSettings.WSACapability setting)
18  {
19  switch (setting)
20  {
21  case PlayerSettings.WSACapability.InternetClient:
22  if (Values[setting])
23  {
24  PlayerSettings.WSA.SetCapability(PlayerSettings.WSACapability.InternetClientServer, false);
25  }
26  break;
27  case PlayerSettings.WSACapability.InternetClientServer:
28  if (Values[setting])
29  {
30  PlayerSettings.WSA.SetCapability(PlayerSettings.WSACapability.InternetClient, false);
31  }
32  break;
33  case PlayerSettings.WSACapability.PrivateNetworkClientServer:
34  if (Values[setting])
35  {
36  PlayerSettings.WSA.SetCapability(PlayerSettings.WSACapability.InternetClient, false);
37  PlayerSettings.WSA.SetCapability(PlayerSettings.WSACapability.InternetClientServer, true);
38  }
39  break;
40  case PlayerSettings.WSACapability.Chat:
41  case PlayerSettings.WSACapability.WebCam:
42  case PlayerSettings.WSACapability.AllJoyn:
43  case PlayerSettings.WSACapability.Location:
44  case PlayerSettings.WSACapability.VoipCall:
45  case PlayerSettings.WSACapability.Objects3D:
46  case PlayerSettings.WSACapability.PhoneCall:
47  case PlayerSettings.WSACapability.Bluetooth:
48  case PlayerSettings.WSACapability.Proximity:
49  case PlayerSettings.WSACapability.Microphone:
50  case PlayerSettings.WSACapability.MusicLibrary:
51  case PlayerSettings.WSACapability.VideosLibrary:
52  case PlayerSettings.WSACapability.CodeGeneration:
53  case PlayerSettings.WSACapability.PicturesLibrary:
54  case PlayerSettings.WSACapability.RemovableStorage:
55  case PlayerSettings.WSACapability.SpatialPerception:
56  case PlayerSettings.WSACapability.BlockedChatMessages:
57  case PlayerSettings.WSACapability.HumanInterfaceDevice:
58  case PlayerSettings.WSACapability.SharedUserCertificates:
59  case PlayerSettings.WSACapability.UserAccountInformation:
60  case PlayerSettings.WSACapability.InputInjectionBrokered:
61  case PlayerSettings.WSACapability.EnterpriseAuthentication:
62  break;
63  default:
64  throw new ArgumentOutOfRangeException("setting", setting, null);
65  }
66 
67  PlayerSettings.WSA.SetCapability(setting, Values[setting]);
68  }
69 
70  private void LoadSetting(PlayerSettings.WSACapability setting)
71  {
72  Values[setting] = PlayerSettings.WSA.GetCapability(setting);
73  }
74 
75  #endregion // Internal Methods
76 
77  #region Overrides / Event Handlers
78 
79  protected override void ApplySettings()
80  {
81  Close();
82  }
83 
84  protected override void LoadSettings()
85  {
86  LoadSetting(PlayerSettings.WSACapability.Microphone);
87  LoadSetting(PlayerSettings.WSACapability.WebCam);
88  LoadSetting(PlayerSettings.WSACapability.SpatialPerception);
89  LoadSetting(PlayerSettings.WSACapability.InternetClient);
90  LoadSetting(PlayerSettings.WSACapability.InternetClientServer);
91  LoadSetting(PlayerSettings.WSACapability.PrivateNetworkClientServer);
92  }
93 
94  protected override void OnGuiChanged()
95  {
96  ApplySetting(PlayerSettings.WSACapability.Microphone);
97  ApplySetting(PlayerSettings.WSACapability.WebCam);
98  ApplySetting(PlayerSettings.WSACapability.SpatialPerception);
99  ApplySetting(PlayerSettings.WSACapability.InternetClient);
100  ApplySetting(PlayerSettings.WSACapability.InternetClientServer);
101  ApplySetting(PlayerSettings.WSACapability.PrivateNetworkClientServer);
102 
103  LoadSettings();
104  }
105 
106  protected override void LoadStrings()
107  {
108  Names[PlayerSettings.WSACapability.Microphone] = "Microphone";
109  Descriptions[PlayerSettings.WSACapability.Microphone] = "Required for access to the Microphone. This includes behaviors like DictationRecognizer, " +
110  "GrammarRecognizer, and KeywordRecognizer. This capability is NOT required for the 'Select' keyword.\n\n" +
111  "Recommendation: Only enable if your application needs access to the microphone beyond the 'Select' keyword. " +
112  "The microphone is considered a privacy sensitive resource.";
113 
114  Names[PlayerSettings.WSACapability.WebCam] = "Webcam";
115  Descriptions[PlayerSettings.WSACapability.WebCam] = "Required for access to the RGB camera (also known as the locatable camera). This includes " +
116  "APIs like PhotoCapture and VideoCapture. This capability is NOT required for mixed reality streaming " +
117  "or for capturing photos or videos using the start menu.\n\n" +
118  "Recommendation: Only enable if your application needs to programmatically capture photos or videos " +
119  "from the RGB camera. The RGB camera is considered a privacy sensitive resource.\n\nNote: The webcam capability " +
120  "only grants access to the video stream. In order to grant access to the audio stream as well, the microphone " +
121  "capability must be added.";
122 
123  Names[PlayerSettings.WSACapability.SpatialPerception] = "Spatial Perception";
124  Descriptions[PlayerSettings.WSACapability.SpatialPerception] = "Required for access to the HoloLens world mapping capabilities. These include behaviors like " +
125  "SurfaceObserver, SpatialMappingManager and SpatialAnchor.\n\n" +
126  "Recommendation: Enabled, unless your application doesn't use spatial mapping or spatial " +
127  "collisions in any way.";
128 
129  Names[PlayerSettings.WSACapability.InternetClient] = "Internet Client";
130  Descriptions[PlayerSettings.WSACapability.InternetClient] = "The Internet Client capability indicates that apps can receive incoming data from the Internet. " +
131  "Cannot act as a server. No local network access.\n\n" +
132  "Recommendation: Leave unchecked unless your application uses online services.";
133 
134  Names[PlayerSettings.WSACapability.InternetClientServer] = "Internet Client Server";
135  Descriptions[PlayerSettings.WSACapability.InternetClientServer] = "The Internet Client Server capability indicates that apps can receive incoming data from the " +
136  "Internet. Can act as a server. No local network access.\n\nNote: Apps that enable peer-to-peer " +
137  "(P2P) scenarios where the app needs to listen for incoming network connections should use " +
138  "Internet Client Server. The Internet Client Server capability includes the access that the " +
139  "Internet Client capability provides, so you don't need to specify Internet Client when you specify " +
140  "Internet Client Server.";
141 
142  Names[PlayerSettings.WSACapability.PrivateNetworkClientServer] = "Private Network Client Server";
143  Descriptions[PlayerSettings.WSACapability.PrivateNetworkClientServer] = "The Private Network Client Server capability provides inbound and outbound access to home and " +
144  "work networks through the firewall. This capability is typically used for games that " +
145  "communicate across the local area network (LAN), and for apps that share data across a variety " +
146  "of local devices.\n\nRequired when connecting the Unity Profiler to your app on the HoloLens" +
147  "\n\nNote: On Windows, this capability does not provide access to the Internet.";
148  }
149 
150  protected override void OnEnable()
151  {
152  // Pass to base first
153  base.OnEnable();
154 
155  // Set size
156  minSize = new Vector2(350, 350);
157  maxSize = minSize;
158  }
159 
160  #endregion // Overrides / Event Handlers
161  }
162 }
override void ApplySettings()
Called when settings should be applied.
override void OnGuiChanged()
Called when a toggle has been flipped and a change has been detected.
Renders the UI and handles update logic for HoloToolkit/Configure/Apply Mixed Reality Capability Sett...
Base class for auto configuration build windows.
override void LoadSettings()
Called when settings should be loaded.
override void LoadStrings()
Called when string names and descriptions should be loaded.