// Copyright (c) 2018 Augie R. Maddox, Guavaman Enterprises. All rights reserved. #pragma warning disable 0219 #pragma warning disable 0618 #pragma warning disable 0649 namespace Rewired.Demos { using System.Text; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; using Rewired.Integration.UnityUI; /// /// Example handler of Player Pointer Events. /// [AddComponentMenu("")] public sealed class PlayerPointerEventHandlerExample : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerUpHandler, IPointerDownHandler, IPointerClickHandler, IScrollHandler, IBeginDragHandler, IDragHandler, IEndDragHandler { public Text text; private const int logLength = 10; private List log = new List(); private void Log(string o) { log.Add(o); if(log.Count > logLength) log.RemoveAt(0); } void Update() { if(text != null) { StringBuilder sb = new StringBuilder(); foreach(var s in log) { sb.AppendLine(s); } text.text = sb.ToString(); } } public void OnPointerEnter(PointerEventData eventData) { if(eventData is PlayerPointerEventData) { PlayerPointerEventData playerEventData = (PlayerPointerEventData)eventData; Log("OnPointerEnter: " + " Player = " + playerEventData.playerId + ", Pointer Index = " + playerEventData.inputSourceIndex + ", Source = " + GetSourceName(playerEventData)); } } public void OnPointerExit(PointerEventData eventData) { if(eventData is PlayerPointerEventData) { PlayerPointerEventData playerEventData = (PlayerPointerEventData)eventData; Log("OnPointerExit: " + " Player = " + playerEventData.playerId + ", Pointer Index = " + playerEventData.inputSourceIndex + ", Source = " + GetSourceName(playerEventData)); } } public void OnPointerUp(PointerEventData eventData) { if(eventData is PlayerPointerEventData) { PlayerPointerEventData playerEventData = (PlayerPointerEventData)eventData; Log("OnPointerUp: " + " Player = " + playerEventData.playerId + ", Pointer Index = " + playerEventData.inputSourceIndex + ", Source = " + GetSourceName(playerEventData) + ", Button Index = " + playerEventData.buttonIndex); } } public void OnPointerDown(PointerEventData eventData) { if(eventData is PlayerPointerEventData) { PlayerPointerEventData playerEventData = (PlayerPointerEventData)eventData; Log("OnPointerDown: " + " Player = " + playerEventData.playerId + ", Pointer Index = " + playerEventData.inputSourceIndex + ", Source = " + GetSourceName(playerEventData) + ", Button Index = " + playerEventData.buttonIndex); } } public void OnPointerClick(PointerEventData eventData) { if(eventData is PlayerPointerEventData) { PlayerPointerEventData playerEventData = (PlayerPointerEventData)eventData; Log("OnPointerClick: " + " Player = " + playerEventData.playerId + ", Pointer Index = " + playerEventData.inputSourceIndex + ", Source = " + GetSourceName(playerEventData) + ", Button Index = " + playerEventData.buttonIndex); } } public void OnScroll(PointerEventData eventData) { if(eventData is PlayerPointerEventData) { PlayerPointerEventData playerEventData = (PlayerPointerEventData)eventData; Log("OnScroll: " + " Player = " + playerEventData.playerId + ", Pointer Index = " + playerEventData.inputSourceIndex + ", Source = " + GetSourceName(playerEventData)); } } public void OnBeginDrag(PointerEventData eventData) { if(eventData is PlayerPointerEventData) { PlayerPointerEventData playerEventData = (PlayerPointerEventData)eventData; Log("OnBeginDrag: " + " Player = " + playerEventData.playerId + ", Pointer Index = " + playerEventData.inputSourceIndex + ", Source = " + GetSourceName(playerEventData) + ", Button Index = " + playerEventData.buttonIndex); } } public void OnDrag(PointerEventData eventData) { if(eventData is PlayerPointerEventData) { PlayerPointerEventData playerEventData = (PlayerPointerEventData)eventData; Log("OnDrag: " + " Player = " + playerEventData.playerId + ", Pointer Index = " + playerEventData.inputSourceIndex + ", Source = " + GetSourceName(playerEventData) + ", Button Index = " + playerEventData.buttonIndex); } } public void OnEndDrag(PointerEventData eventData) { if(eventData is PlayerPointerEventData) { PlayerPointerEventData playerEventData = (PlayerPointerEventData)eventData; Log("OnEndDrag: " + " Player = " + playerEventData.playerId + ", Pointer Index = " + playerEventData.inputSourceIndex + ", Source = " + GetSourceName(playerEventData) + ", Button Index = " + playerEventData.buttonIndex); } } private static string GetSourceName(PlayerPointerEventData playerEventData) { if(playerEventData.sourceType == PointerEventType.Mouse) { if(playerEventData.mouseSource is Behaviour) return (playerEventData.mouseSource as Behaviour).name; } else if(playerEventData.sourceType == PointerEventType.Touch) { if(playerEventData.touchSource is Behaviour) return (playerEventData.touchSource as Behaviour).name; } return null; } } }