// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using UnityEngine.EventSystems;
namespace Microsoft.MixedReality.Toolkit.Input
{
///
/// Interface to implement to react to focus enter/exit.
///
///
/// The events on this interface are related to those of , whose event have
/// a known ordering with this interface:
/// IMixedRealityFocusChangedHandler::OnBeforeFocusChange
/// IMixedRealityFocusHandler::OnFocusEnter
/// IMixedRealityFocusHandler::OnFocusExit
/// IMixedRealityFocusChangedHandler::OnFocusChanged
/// Because these two interfaces are different, consumers must be wary about having nested
/// hierarchies where some game objects will implement both interfaces, and more deeply nested
/// object within the same parent-child chain that implement a single one of these - such
/// a presence can lead to scenarios where one interface is invoked on the child object, and then
/// the other interface is invoked on the parent object (thus, the parent would "miss" getting
/// the event that the child had already processed).
///
public interface IMixedRealityFocusHandler : IEventSystemHandler
{
///
/// The Focus Enter event is raised on this GameObject whenever a 's focus enters this GameObject's Collider.
///
void OnFocusEnter(FocusEventData eventData);
///
/// The Focus Exit event is raised on this GameObject whenever a 's focus leaves this GameObject's Collider.
///
void OnFocusExit(FocusEventData eventData);
}
}