privateconststringProfileDescription="This gesture map is any and all movements of part the user's body, especially a hand or the head, that raise actions through the input system.\n\n"+
"Note: Defined controllers can look up the list of gestures and raise the events based on specific criteria.";
privatestaticreadonlyGUIContentBaseActionContent=newGUIContent("Base Input Action:","The Action that will raise new actions based on the criteria met");
privatestaticreadonlyGUIContentRuleActionContent=newGUIContent("Rule Input Action:","The Action that will be raised when the criteria is met");
privatestaticreadonlyGUIContentCriteriaContent=newGUIContent("Action Criteria:","The Criteria that must be met in order to raise the new Action");
privateconststringProfileDescription="Input Action Rules help define alternative Actions that will be raised based on specific criteria.\n\n"+
"You can create new rules by assigning a base Input Action below, then assigning the criteria you'd like to meet. When the criteria is met, the Rule's Action will be raised with the criteria value.\n\n"+
"Note: Rules can only be created for the same axis constraints.";
privatestaticreadonlyGUIContentControllerTypeContent=newGUIContent("Controller Type","The type of Controller this pointer will attach itself to at runtime.");
EditorGUILayout.HelpBox("This profile has sub-profiles. By default your clone will reference the existing profiles. If you want to specify a different profile, or if you want to clone the sub-profile, use the options below.",MessageType.Info);
EditorGUILayout.HelpBox("If no folder is provided, the profile will be cloned to the Assets/MixedRealityToolkit.Generated/CustomProfiles folder.",MessageType.Info);
privateconststringProfileDescription="This profile defines any additional Services like systems, features, and managers to register with the Mixed Reality Toolkit.";
"The Manager scene is loaded first and remains loaded for the duration of the app. Only one Manager scene is ever loaded, and no scene operation will ever unload it.";
privatestaticstringlightingSceneContent=
"The Lighting scene controls lighting settings such as ambient light, skybox and sun direction. A Lighting scene's content is restricted based on the types defined in your editor settings. A default lighting scene is loaded on initialization. Only one lighting scene will ever be loaded at a time.";
privatestaticstringcontentSceneContent=
"Content scenes are everything else. You can load and unload any number of content scenes in any combination, and their content is unrestricted.";
EditorGUILayout.HelpBox("Below are the component types that will be allowed in lighting scenes. Types not found in this list will be moved to another scene.",MessageType.Info);
EditorGUILayout.HelpBox("Your cached lighting settings may be out of date. This could result in unexpected appearances at runtime.",MessageType.Warning);
privatestaticreadonlyGUIContentAddButtonContent=newGUIContent("+ Add a New Speech Command","Add Speech Command");
privatestaticreadonlyGUIContentLocalizationContent=newGUIContent("LocalizationKey","An optional key to lookup a localized value for keyword");
privatestaticreadonlyGUIContentKeywordContent=newGUIContent("Keyword","Spoken word that will trigger the action. Overridden by a localized version if LocalizationKey is specified and found");
privatestaticreadonlyGUIContentKeyCodeContent=newGUIContent("KeyCode","The keyboard key that will trigger the action.");
privatestaticreadonlyGUIContentActionContent=newGUIContent("Action","The action to trigger when a keyboard key is pressed or keyword is recognized.");
privateconststringProfileTitle="Speech Settings";
privateconststringProfileDescription="Speech Commands are any/all spoken keywords your users will be able say to raise an Input Action in your application.";
// Either when we are recompiling, or the inspector window is hidden behind another one, the target can get destroyed (null) and thereby will raise an ArgumentException when accessing serializedObject. For now, just return.
EditorGUILayout.HelpBox("It is recommended to enable the Diagnostics system during development. Be sure to disable prior to building your shipping product.",MessageType.Warning);
EditorGUILayout.HelpBox($"The {service} is disabled.\n\nThis module will not be loaded and thus none of its features will be available at runtime.",MessageType.Info);
/// Custom property drawer to show an optionally collapsible foldout help section in the Inspector
/// </summary>
/// <example>
/// <code>
/// [Help("This is a multiline optionally collapsable help section.\n • Great for providing simple instructions in Inspector.\n • Easy to use.\n • Saves space.")]
/// </code>
/// </example>
[CustomPropertyDrawer(typeof(HelpAttribute))]
publicclassHelpDrawer:DecoratorDrawer
{
/// <summary>
/// Unity calls this function to draw the GUI
/// </summary>
/// <param name="position">Rectangle to display the GUI in</param>