//======= Copyright (c) Valve Corporation, All rights reserved. =============== // // Purpose: Makes the hand act as an input module for Unity's event system // //============================================================================= using UnityEngine; using System.Collections; using UnityEngine.EventSystems; namespace Valve.VR.InteractionSystem { //------------------------------------------------------------------------- public class InputModule : BaseInputModule { private GameObject submitObject; //------------------------------------------------- private static InputModule _instance; public static InputModule instance { get { if ( _instance == null ) _instance = GameObject.FindObjectOfType(); return _instance; } } //------------------------------------------------- public override bool ShouldActivateModule() { if ( !base.ShouldActivateModule() ) return false; return submitObject != null; } //------------------------------------------------- public void HoverBegin( GameObject gameObject ) { PointerEventData pointerEventData = new PointerEventData( eventSystem ); ExecuteEvents.Execute( gameObject, pointerEventData, ExecuteEvents.pointerEnterHandler ); } //------------------------------------------------- public void HoverEnd( GameObject gameObject ) { PointerEventData pointerEventData = new PointerEventData( eventSystem ); pointerEventData.selectedObject = null; ExecuteEvents.Execute( gameObject, pointerEventData, ExecuteEvents.pointerExitHandler ); } //------------------------------------------------- public void Submit( GameObject gameObject ) { submitObject = gameObject; } //------------------------------------------------- public override void Process() { if ( submitObject ) { BaseEventData data = GetBaseEventData(); data.selectedObject = submitObject; ExecuteEvents.Execute( submitObject, data, ExecuteEvents.submitHandler ); submitObject = null; } } } }