mixedreality/com.microsoft.mixedreality..../Core/Providers/InputSimulation/InputSimulationHelpGuide.cs

80 lines
3.0 KiB
C#

// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using Microsoft.MixedReality.Toolkit.Utilities;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.Serialization;
namespace Microsoft.MixedReality.Toolkit.Input
{
/// <summary>
/// Class which handles displaying and hiding the input simulation help guide
/// </summary>
internal class InputSimulationHelpGuide : MonoBehaviour
{
[SerializeField, FormerlySerializedAs("HelpGuideShortcutKeys")]
[Tooltip("Keys required to bring up the input display tips")]
private List<KeyCode> helpGuideShortcutKeys = new List<KeyCode>(0);
[SerializeField, FormerlySerializedAs("HelpGuideShortcutTip")]
[Tooltip("The GameObject that displays the shortcut for bringing up the input simulation help guide")]
private GameObject helpGuideShortcutTip = null;
[SerializeField, FormerlySerializedAs("DisplayHelpGuideShortcutTipOnStart")]
[Tooltip("Whether or not to show the help guide shortcut on startup")]
private bool displayHelpGuideShortcutTipOnStart = true;
[SerializeField, FormerlySerializedAs("HelpGuideVisual")]
[Tooltip("The GameObject containing the input simulation help guide")]
private GameObject helpGuideVisual = null;
private void Start()
{
if (DeviceUtility.IsPresent)
{
gameObject.SetActive(false);
return;
}
string HelpGuideShortcutString = "";
for (int i = 0; i < helpGuideShortcutKeys.Count; i++)
{
string key = helpGuideShortcutKeys[i].ToString();
if (i > 0)
{
HelpGuideShortcutString += " + ";
}
HelpGuideShortcutString += key;
}
helpGuideShortcutTip.GetComponentInChildren<TextMeshProUGUI>().text = "Press " + HelpGuideShortcutString + " to open up the input simulation guide";
if (displayHelpGuideShortcutTipOnStart)
{
helpGuideShortcutTip.SetActive(true);
}
helpGuideVisual.SetActive(false);
}
private void Update()
{
bool shortcutPressed = true;
bool shortcutDown = false;
// Checks to make sure that all keys are pressed and that one of the required shortcut keys was pressed on this frame
// before bringing up the shortcut
foreach (KeyCode key in helpGuideShortcutKeys)
{
shortcutPressed &= KeyInputSystem.GetKey(KeyBinding.FromKey(key));
shortcutDown |= KeyInputSystem.GetKeyDown(KeyBinding.FromKey(key));
}
if (shortcutPressed && shortcutDown)
{
helpGuideVisual.SetActive(!helpGuideVisual.activeSelf);
helpGuideShortcutTip.SetActive(false);
}
}
}
}