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.
67 lines
2.3 KiB
67 lines
2.3 KiB
using System; // require keep for Windows Universal App |
|
using UnityEngine; |
|
|
|
namespace UniRx.Triggers |
|
{ |
|
[DisallowMultipleComponent] |
|
public class ObservableTriggerTrigger : ObservableTriggerBase |
|
{ |
|
Subject<Collider> onTriggerEnter; |
|
|
|
/// <summary>OnTriggerEnter is called when the Collider other enters the trigger.</summary> |
|
void OnTriggerEnter(Collider other) |
|
{ |
|
if (onTriggerEnter != null) onTriggerEnter.OnNext(other); |
|
} |
|
|
|
/// <summary>OnTriggerEnter is called when the Collider other enters the trigger.</summary> |
|
public IObservable<Collider> OnTriggerEnterAsObservable() |
|
{ |
|
return onTriggerEnter ?? (onTriggerEnter = new Subject<Collider>()); |
|
} |
|
|
|
Subject<Collider> onTriggerExit; |
|
|
|
/// <summary>OnTriggerExit is called when the Collider other has stopped touching the trigger.</summary> |
|
void OnTriggerExit(Collider other) |
|
{ |
|
if (onTriggerExit != null) onTriggerExit.OnNext(other); |
|
} |
|
|
|
/// <summary>OnTriggerExit is called when the Collider other has stopped touching the trigger.</summary> |
|
public IObservable<Collider> OnTriggerExitAsObservable() |
|
{ |
|
return onTriggerExit ?? (onTriggerExit = new Subject<Collider>()); |
|
} |
|
|
|
Subject<Collider> onTriggerStay; |
|
|
|
/// <summary>OnTriggerStay is called once per frame for every Collider other that is touching the trigger.</summary> |
|
void OnTriggerStay(Collider other) |
|
{ |
|
if (onTriggerStay != null) onTriggerStay.OnNext(other); |
|
} |
|
|
|
/// <summary>OnTriggerStay is called once per frame for every Collider other that is touching the trigger.</summary> |
|
public IObservable<Collider> OnTriggerStayAsObservable() |
|
{ |
|
return onTriggerStay ?? (onTriggerStay = new Subject<Collider>()); |
|
} |
|
|
|
protected override void RaiseOnCompletedOnDestroy() |
|
{ |
|
if (onTriggerEnter != null) |
|
{ |
|
onTriggerEnter.OnCompleted(); |
|
} |
|
if (onTriggerExit != null) |
|
{ |
|
onTriggerExit.OnCompleted(); |
|
} |
|
if (onTriggerStay != null) |
|
{ |
|
onTriggerStay.OnCompleted(); |
|
} |
|
} |
|
} |
|
} |