// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using UnityEngine;
namespace Microsoft.MixedReality.Toolkit.Input
{
///
/// Base class for the Mixed Reality Toolkit's SDK input handlers.
///
public abstract class BaseInputHandler : InputSystemGlobalHandlerListener
{
[SerializeField]
[Tooltip("Is Focus required to receive input events on this GameObject?")]
private bool isFocusRequired = true;
// Helper variable used to register/unregister handlers during play mode
private bool isFocusRequiredRuntime = true;
///
/// Is Focus required to receive input events on this GameObject?
///
public virtual bool IsFocusRequired
{
get { return isFocusRequired; }
protected set { isFocusRequired = value; }
}
#region MonoBehaviour Implementation
protected override void OnEnable()
{
if (!isFocusRequired)
{
base.OnEnable();
}
}
protected override void Start()
{
if (!isFocusRequired)
{
base.Start();
}
isFocusRequiredRuntime = isFocusRequired;
}
protected virtual void Update()
{
if (isFocusRequiredRuntime != isFocusRequired)
{
isFocusRequiredRuntime = isFocusRequired;
// If focus wasn't required before and is required now, unregister global handlers.
// Otherwise, register them.
if (isFocusRequired)
{
UnregisterHandlers();
}
else
{
RegisterHandlers();
}
}
}
protected override void OnDisable()
{
if (!isFocusRequiredRuntime)
{
base.OnDisable();
}
}
#endregion MonoBehaviour Implementation
}
}