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 ObservableCollision2DTrigger : ObservableTriggerBase |
|
{ |
|
Subject<Collision2D> onCollisionEnter2D; |
|
|
|
/// <summary>Sent when an incoming collider makes contact with this object's collider (2D physics only).</summary> |
|
void OnCollisionEnter2D(Collision2D coll) |
|
{ |
|
if (onCollisionEnter2D != null) onCollisionEnter2D.OnNext(coll); |
|
} |
|
|
|
/// <summary>Sent when an incoming collider makes contact with this object's collider (2D physics only).</summary> |
|
public IObservable<Collision2D> OnCollisionEnter2DAsObservable() |
|
{ |
|
return onCollisionEnter2D ?? (onCollisionEnter2D = new Subject<Collision2D>()); |
|
} |
|
|
|
Subject<Collision2D> onCollisionExit2D; |
|
|
|
/// <summary>Sent when a collider on another object stops touching this object's collider (2D physics only).</summary> |
|
void OnCollisionExit2D(Collision2D coll) |
|
{ |
|
if (onCollisionExit2D != null) onCollisionExit2D.OnNext(coll); |
|
} |
|
|
|
/// <summary>Sent when a collider on another object stops touching this object's collider (2D physics only).</summary> |
|
public IObservable<Collision2D> OnCollisionExit2DAsObservable() |
|
{ |
|
return onCollisionExit2D ?? (onCollisionExit2D = new Subject<Collision2D>()); |
|
} |
|
|
|
Subject<Collision2D> onCollisionStay2D; |
|
|
|
/// <summary>Sent each frame where a collider on another object is touching this object's collider (2D physics only).</summary> |
|
void OnCollisionStay2D(Collision2D coll) |
|
{ |
|
if (onCollisionStay2D != null) onCollisionStay2D.OnNext(coll); |
|
} |
|
|
|
/// <summary>Sent each frame where a collider on another object is touching this object's collider (2D physics only).</summary> |
|
public IObservable<Collision2D> OnCollisionStay2DAsObservable() |
|
{ |
|
return onCollisionStay2D ?? (onCollisionStay2D = new Subject<Collision2D>()); |
|
} |
|
|
|
protected override void RaiseOnCompletedOnDestroy() |
|
{ |
|
if (onCollisionEnter2D != null) |
|
{ |
|
onCollisionEnter2D.OnCompleted(); |
|
} |
|
if (onCollisionExit2D != null) |
|
{ |
|
onCollisionExit2D.OnCompleted(); |
|
} |
|
if (onCollisionStay2D != null) |
|
{ |
|
onCollisionStay2D.OnCompleted(); |
|
} |
|
} |
|
} |
|
} |