UniRx 에셋 추가
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
using System; // require keep for Windows Universal App
|
||||
using UnityEngine;
|
||||
|
||||
namespace UniRx.Triggers
|
||||
{
|
||||
[DisallowMultipleComponent]
|
||||
public class ObservableCollisionTrigger : ObservableTriggerBase
|
||||
{
|
||||
Subject<Collision> onCollisionEnter;
|
||||
|
||||
/// <summary>OnCollisionEnter is called when this collider/rigidbody has begun touching another rigidbody/collider.</summary>
|
||||
void OnCollisionEnter(Collision collision)
|
||||
{
|
||||
if (onCollisionEnter != null) onCollisionEnter.OnNext(collision);
|
||||
}
|
||||
|
||||
/// <summary>OnCollisionEnter is called when this collider/rigidbody has begun touching another rigidbody/collider.</summary>
|
||||
public IObservable<Collision> OnCollisionEnterAsObservable()
|
||||
{
|
||||
return onCollisionEnter ?? (onCollisionEnter = new Subject<Collision>());
|
||||
}
|
||||
|
||||
Subject<Collision> onCollisionExit;
|
||||
|
||||
/// <summary>OnCollisionExit is called when this collider/rigidbody has stopped touching another rigidbody/collider.</summary>
|
||||
void OnCollisionExit(Collision collisionInfo)
|
||||
{
|
||||
if (onCollisionExit != null) onCollisionExit.OnNext(collisionInfo);
|
||||
}
|
||||
|
||||
/// <summary>OnCollisionExit is called when this collider/rigidbody has stopped touching another rigidbody/collider.</summary>
|
||||
public IObservable<Collision> OnCollisionExitAsObservable()
|
||||
{
|
||||
return onCollisionExit ?? (onCollisionExit = new Subject<Collision>());
|
||||
}
|
||||
|
||||
Subject<Collision> onCollisionStay;
|
||||
|
||||
/// <summary>OnCollisionStay is called once per frame for every collider/rigidbody that is touching rigidbody/collider.</summary>
|
||||
void OnCollisionStay(Collision collisionInfo)
|
||||
{
|
||||
if (onCollisionStay != null) onCollisionStay.OnNext(collisionInfo);
|
||||
}
|
||||
|
||||
/// <summary>OnCollisionStay is called once per frame for every collider/rigidbody that is touching rigidbody/collider.</summary>
|
||||
public IObservable<Collision> OnCollisionStayAsObservable()
|
||||
{
|
||||
return onCollisionStay ?? (onCollisionStay = new Subject<Collision>());
|
||||
}
|
||||
|
||||
protected override void RaiseOnCompletedOnDestroy()
|
||||
{
|
||||
if (onCollisionEnter != null)
|
||||
{
|
||||
onCollisionEnter.OnCompleted();
|
||||
}
|
||||
if (onCollisionExit != null)
|
||||
{
|
||||
onCollisionExit.OnCompleted();
|
||||
}
|
||||
if (onCollisionStay != null)
|
||||
{
|
||||
onCollisionStay.OnCompleted();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user