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.5 KiB
67 lines
2.5 KiB
using System; // require keep for Windows Universal App |
|
using UnityEngine; |
|
|
|
namespace UniRx.Triggers |
|
{ |
|
[DisallowMultipleComponent] |
|
public class ObservableTrigger2DTrigger : ObservableTriggerBase |
|
{ |
|
Subject<Collider2D> onTriggerEnter2D; |
|
|
|
/// <summary>Sent when another object enters a trigger collider attached to this object (2D physics only).</summary> |
|
void OnTriggerEnter2D(Collider2D other) |
|
{ |
|
if (onTriggerEnter2D != null) onTriggerEnter2D.OnNext(other); |
|
} |
|
|
|
/// <summary>Sent when another object enters a trigger collider attached to this object (2D physics only).</summary> |
|
public IObservable<Collider2D> OnTriggerEnter2DAsObservable() |
|
{ |
|
return onTriggerEnter2D ?? (onTriggerEnter2D = new Subject<Collider2D>()); |
|
} |
|
|
|
Subject<Collider2D> onTriggerExit2D; |
|
|
|
/// <summary>Sent when another object leaves a trigger collider attached to this object (2D physics only).</summary> |
|
void OnTriggerExit2D(Collider2D other) |
|
{ |
|
if (onTriggerExit2D != null) onTriggerExit2D.OnNext(other); |
|
} |
|
|
|
/// <summary>Sent when another object leaves a trigger collider attached to this object (2D physics only).</summary> |
|
public IObservable<Collider2D> OnTriggerExit2DAsObservable() |
|
{ |
|
return onTriggerExit2D ?? (onTriggerExit2D = new Subject<Collider2D>()); |
|
} |
|
|
|
Subject<Collider2D> onTriggerStay2D; |
|
|
|
/// <summary>Sent each frame where another object is within a trigger collider attached to this object (2D physics only).</summary> |
|
void OnTriggerStay2D(Collider2D other) |
|
{ |
|
if (onTriggerStay2D != null) onTriggerStay2D.OnNext(other); |
|
} |
|
|
|
/// <summary>Sent each frame where another object is within a trigger collider attached to this object (2D physics only).</summary> |
|
public IObservable<Collider2D> OnTriggerStay2DAsObservable() |
|
{ |
|
return onTriggerStay2D ?? (onTriggerStay2D = new Subject<Collider2D>()); |
|
} |
|
|
|
protected override void RaiseOnCompletedOnDestroy() |
|
{ |
|
if (onTriggerEnter2D != null) |
|
{ |
|
onTriggerEnter2D.OnCompleted(); |
|
} |
|
if (onTriggerExit2D != null) |
|
{ |
|
onTriggerExit2D.OnCompleted(); |
|
} |
|
if (onTriggerStay2D != null) |
|
{ |
|
onTriggerStay2D.OnCompleted(); |
|
} |
|
} |
|
} |
|
} |