You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
359 lines
9.7 KiB
359 lines
9.7 KiB
11 months ago
|
// for uGUI(from 4.6)
|
||
|
#if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5)
|
||
|
|
||
|
using System; // require keep for Windows Universal App
|
||
|
using UnityEngine;
|
||
|
using UnityEngine.EventSystems;
|
||
|
|
||
|
namespace UniRx.Triggers
|
||
|
{
|
||
|
[DisallowMultipleComponent]
|
||
|
public class ObservableEventTrigger : ObservableTriggerBase, IEventSystemHandler, IPointerEnterHandler, IPointerExitHandler, IPointerDownHandler, IPointerUpHandler, IPointerClickHandler, IBeginDragHandler, IInitializePotentialDragHandler, IDragHandler, IEndDragHandler, IDropHandler, IScrollHandler, IUpdateSelectedHandler, ISelectHandler, IDeselectHandler, IMoveHandler, ISubmitHandler, ICancelHandler
|
||
|
{
|
||
|
#region IDeselectHandler
|
||
|
|
||
|
Subject<BaseEventData> onDeselect;
|
||
|
|
||
|
void IDeselectHandler.OnDeselect(BaseEventData eventData)
|
||
|
{
|
||
|
if (onDeselect != null) onDeselect.OnNext(eventData);
|
||
|
}
|
||
|
|
||
|
public IObservable<BaseEventData> OnDeselectAsObservable()
|
||
|
{
|
||
|
return onDeselect ?? (onDeselect = new Subject<BaseEventData>());
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region IMoveHandler
|
||
|
|
||
|
Subject<AxisEventData> onMove;
|
||
|
|
||
|
void IMoveHandler.OnMove(AxisEventData eventData)
|
||
|
{
|
||
|
if (onMove != null) onMove.OnNext(eventData);
|
||
|
}
|
||
|
|
||
|
public IObservable<AxisEventData> OnMoveAsObservable()
|
||
|
{
|
||
|
return onMove ?? (onMove = new Subject<AxisEventData>());
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region IPointerDownHandler
|
||
|
|
||
|
Subject<PointerEventData> onPointerDown;
|
||
|
|
||
|
void IPointerDownHandler.OnPointerDown(PointerEventData eventData)
|
||
|
{
|
||
|
if (onPointerDown != null) onPointerDown.OnNext(eventData);
|
||
|
}
|
||
|
|
||
|
public IObservable<PointerEventData> OnPointerDownAsObservable()
|
||
|
{
|
||
|
return onPointerDown ?? (onPointerDown = new Subject<PointerEventData>());
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region IPointerEnterHandler
|
||
|
|
||
|
Subject<PointerEventData> onPointerEnter;
|
||
|
|
||
|
void IPointerEnterHandler.OnPointerEnter(PointerEventData eventData)
|
||
|
{
|
||
|
if (onPointerEnter != null) onPointerEnter.OnNext(eventData);
|
||
|
}
|
||
|
|
||
|
public IObservable<PointerEventData> OnPointerEnterAsObservable()
|
||
|
{
|
||
|
return onPointerEnter ?? (onPointerEnter = new Subject<PointerEventData>());
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region IPointerExitHandler
|
||
|
|
||
|
Subject<PointerEventData> onPointerExit;
|
||
|
|
||
|
void IPointerExitHandler.OnPointerExit(PointerEventData eventData)
|
||
|
{
|
||
|
if (onPointerExit != null) onPointerExit.OnNext(eventData);
|
||
|
}
|
||
|
|
||
|
public IObservable<PointerEventData> OnPointerExitAsObservable()
|
||
|
{
|
||
|
return onPointerExit ?? (onPointerExit = new Subject<PointerEventData>());
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region IPointerUpHandler
|
||
|
|
||
|
Subject<PointerEventData> onPointerUp;
|
||
|
|
||
|
void IPointerUpHandler.OnPointerUp(PointerEventData eventData)
|
||
|
{
|
||
|
if (onPointerUp != null) onPointerUp.OnNext(eventData);
|
||
|
}
|
||
|
|
||
|
public IObservable<PointerEventData> OnPointerUpAsObservable()
|
||
|
{
|
||
|
return onPointerUp ?? (onPointerUp = new Subject<PointerEventData>());
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region ISelectHandler
|
||
|
|
||
|
Subject<BaseEventData> onSelect;
|
||
|
|
||
|
void ISelectHandler.OnSelect(BaseEventData eventData)
|
||
|
{
|
||
|
if (onSelect != null) onSelect.OnNext(eventData);
|
||
|
}
|
||
|
|
||
|
public IObservable<BaseEventData> OnSelectAsObservable()
|
||
|
{
|
||
|
return onSelect ?? (onSelect = new Subject<BaseEventData>());
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region IPointerClickHandler
|
||
|
|
||
|
Subject<PointerEventData> onPointerClick;
|
||
|
|
||
|
void IPointerClickHandler.OnPointerClick(PointerEventData eventData)
|
||
|
{
|
||
|
if (onPointerClick != null) onPointerClick.OnNext(eventData);
|
||
|
}
|
||
|
|
||
|
public IObservable<PointerEventData> OnPointerClickAsObservable()
|
||
|
{
|
||
|
return onPointerClick ?? (onPointerClick = new Subject<PointerEventData>());
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region ISubmitHandler
|
||
|
|
||
|
Subject<BaseEventData> onSubmit;
|
||
|
|
||
|
void ISubmitHandler.OnSubmit(BaseEventData eventData)
|
||
|
{
|
||
|
if (onSubmit != null) onSubmit.OnNext(eventData);
|
||
|
}
|
||
|
|
||
|
public IObservable<BaseEventData> OnSubmitAsObservable()
|
||
|
{
|
||
|
return onSubmit ?? (onSubmit = new Subject<BaseEventData>());
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region IDragHandler
|
||
|
|
||
|
Subject<PointerEventData> onDrag;
|
||
|
|
||
|
void IDragHandler.OnDrag(PointerEventData eventData)
|
||
|
{
|
||
|
if (onDrag != null) onDrag.OnNext(eventData);
|
||
|
}
|
||
|
|
||
|
public IObservable<PointerEventData> OnDragAsObservable()
|
||
|
{
|
||
|
return onDrag ?? (onDrag = new Subject<PointerEventData>());
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region IBeginDragHandler
|
||
|
|
||
|
Subject<PointerEventData> onBeginDrag;
|
||
|
|
||
|
void IBeginDragHandler.OnBeginDrag(PointerEventData eventData)
|
||
|
{
|
||
|
if (onBeginDrag != null) onBeginDrag.OnNext(eventData);
|
||
|
}
|
||
|
|
||
|
public IObservable<PointerEventData> OnBeginDragAsObservable()
|
||
|
{
|
||
|
return onBeginDrag ?? (onBeginDrag = new Subject<PointerEventData>());
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region IEndDragHandler
|
||
|
|
||
|
Subject<PointerEventData> onEndDrag;
|
||
|
|
||
|
void IEndDragHandler.OnEndDrag(PointerEventData eventData)
|
||
|
{
|
||
|
if (onEndDrag != null) onEndDrag.OnNext(eventData);
|
||
|
}
|
||
|
|
||
|
public IObservable<PointerEventData> OnEndDragAsObservable()
|
||
|
{
|
||
|
return onEndDrag ?? (onEndDrag = new Subject<PointerEventData>());
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region IDropHandler
|
||
|
|
||
|
Subject<PointerEventData> onDrop;
|
||
|
|
||
|
void IDropHandler.OnDrop(PointerEventData eventData)
|
||
|
{
|
||
|
if (onDrop != null) onDrop.OnNext(eventData);
|
||
|
}
|
||
|
|
||
|
public IObservable<PointerEventData> OnDropAsObservable()
|
||
|
{
|
||
|
return onDrop ?? (onDrop = new Subject<PointerEventData>());
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region IUpdateSelectedHandler
|
||
|
|
||
|
Subject<BaseEventData> onUpdateSelected;
|
||
|
|
||
|
void IUpdateSelectedHandler.OnUpdateSelected(BaseEventData eventData)
|
||
|
{
|
||
|
if (onUpdateSelected != null) onUpdateSelected.OnNext(eventData);
|
||
|
}
|
||
|
|
||
|
public IObservable<BaseEventData> OnUpdateSelectedAsObservable()
|
||
|
{
|
||
|
return onUpdateSelected ?? (onUpdateSelected = new Subject<BaseEventData>());
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region IInitializePotentialDragHandler
|
||
|
|
||
|
Subject<PointerEventData> onInitializePotentialDrag;
|
||
|
|
||
|
void IInitializePotentialDragHandler.OnInitializePotentialDrag(PointerEventData eventData)
|
||
|
{
|
||
|
if (onInitializePotentialDrag != null) onInitializePotentialDrag.OnNext(eventData);
|
||
|
}
|
||
|
|
||
|
public IObservable<PointerEventData> OnInitializePotentialDragAsObservable()
|
||
|
{
|
||
|
return onInitializePotentialDrag ?? (onInitializePotentialDrag = new Subject<PointerEventData>());
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region ICancelHandler
|
||
|
|
||
|
Subject<BaseEventData> onCancel;
|
||
|
|
||
|
void ICancelHandler.OnCancel(BaseEventData eventData)
|
||
|
{
|
||
|
if (onCancel != null) onCancel.OnNext(eventData);
|
||
|
}
|
||
|
|
||
|
public IObservable<BaseEventData> OnCancelAsObservable()
|
||
|
{
|
||
|
return onCancel ?? (onCancel = new Subject<BaseEventData>());
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
#region IScrollHandler
|
||
|
|
||
|
Subject<PointerEventData> onScroll;
|
||
|
|
||
|
void IScrollHandler.OnScroll(PointerEventData eventData)
|
||
|
{
|
||
|
if (onScroll != null) onScroll.OnNext(eventData);
|
||
|
}
|
||
|
|
||
|
public IObservable<PointerEventData> OnScrollAsObservable()
|
||
|
{
|
||
|
return onScroll ?? (onScroll = new Subject<PointerEventData>());
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
protected override void RaiseOnCompletedOnDestroy()
|
||
|
{
|
||
|
if (onDeselect != null)
|
||
|
{
|
||
|
onDeselect.OnCompleted();
|
||
|
}
|
||
|
if (onMove != null)
|
||
|
{
|
||
|
onMove.OnCompleted();
|
||
|
}
|
||
|
if (onPointerDown != null)
|
||
|
{
|
||
|
onPointerDown.OnCompleted();
|
||
|
}
|
||
|
if (onPointerEnter != null)
|
||
|
{
|
||
|
onPointerEnter.OnCompleted();
|
||
|
}
|
||
|
if (onPointerExit != null)
|
||
|
{
|
||
|
onPointerExit.OnCompleted();
|
||
|
}
|
||
|
if (onPointerUp != null)
|
||
|
{
|
||
|
onPointerUp.OnCompleted();
|
||
|
}
|
||
|
if (onSelect != null)
|
||
|
{
|
||
|
onSelect.OnCompleted();
|
||
|
}
|
||
|
if (onPointerClick != null)
|
||
|
{
|
||
|
onPointerClick.OnCompleted();
|
||
|
}
|
||
|
if (onSubmit != null)
|
||
|
{
|
||
|
onSubmit.OnCompleted();
|
||
|
}
|
||
|
if (onDrag != null)
|
||
|
{
|
||
|
onDrag.OnCompleted();
|
||
|
}
|
||
|
if (onBeginDrag != null)
|
||
|
{
|
||
|
onBeginDrag.OnCompleted();
|
||
|
}
|
||
|
if (onEndDrag != null)
|
||
|
{
|
||
|
onEndDrag.OnCompleted();
|
||
|
}
|
||
|
if (onDrop != null)
|
||
|
{
|
||
|
onDrop.OnCompleted();
|
||
|
}
|
||
|
if (onUpdateSelected != null)
|
||
|
{
|
||
|
onUpdateSelected.OnCompleted();
|
||
|
}
|
||
|
if (onInitializePotentialDrag != null)
|
||
|
{
|
||
|
onInitializePotentialDrag.OnCompleted();
|
||
|
}
|
||
|
if (onCancel != null)
|
||
|
{
|
||
|
onCancel.OnCompleted();
|
||
|
}
|
||
|
if (onScroll != null)
|
||
|
{
|
||
|
onScroll.OnCompleted();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#endif
|