using System;
using UnityEngine.UI;
namespace UnityEngine.XR.Content.Walkthrough
{
///
/// Trigger that, when active, waits for a UI button to be pressed
///
internal class ButtonPressTrigger : WalkthroughTrigger
{
#pragma warning disable 649
[SerializeField]
[Tooltip("The UI button that when pressed, will allow this trigger to pass.")]
Button m_ButtonToPress;
[SerializeField]
[Tooltip("Allow pressing of the button switch the step of the tutorial")]
bool m_SwitchContext = true;
#pragma warning restore 649
bool m_Triggered = false;
void Start()
{
if (m_ButtonToPress == null)
return;
m_ButtonToPress.onClick.RemoveListener(ButtonPressHandler);
m_ButtonToPress.onClick.AddListener(ButtonPressHandler);
}
public override bool ResetTrigger()
{
m_Triggered = false;
if (m_ButtonToPress == null)
return false;
m_ButtonToPress.onClick.RemoveListener(ButtonPressHandler);
m_ButtonToPress.onClick.AddListener(ButtonPressHandler);
return true;
}
public override bool Check()
{
return m_Triggered;
}
void ButtonPressHandler()
{
// Attempt to switch to this step if this button is not part of the current step
if (m_SwitchContext)
{
var parent = GetComponentInParent();
var walkthrough = GetComponentInParent();
if (parent != null && walkthrough != null)
{
var steps = walkthrough.steps;
var stepIndex = Array.IndexOf(steps, parent);
if (stepIndex != walkthrough.currentStep)
walkthrough.SkipToStep(stepIndex);
}
}
m_Triggered = true;
}
}
}