namespace VRTK
|
|
{
|
|
using UnityEngine;
|
|
|
|
public struct CollisionTrackerEventArgs
|
|
{
|
|
public bool isTrigger;
|
|
public Collision collision;
|
|
public Collider collider;
|
|
}
|
|
|
|
public delegate void CollisionTrackerEventHandler(object sender, CollisionTrackerEventArgs e);
|
|
|
|
public class VRTK_CollisionTracker : MonoBehaviour
|
|
{
|
|
public event CollisionTrackerEventHandler CollisionEnter;
|
|
public event CollisionTrackerEventHandler CollisionStay;
|
|
public event CollisionTrackerEventHandler CollisionExit;
|
|
public event CollisionTrackerEventHandler TriggerEnter;
|
|
public event CollisionTrackerEventHandler TriggerStay;
|
|
public event CollisionTrackerEventHandler TriggerExit;
|
|
|
|
protected void OnCollisionEnterEvent(CollisionTrackerEventArgs e)
|
|
{
|
|
if (CollisionEnter != null)
|
|
{
|
|
CollisionEnter(this, e);
|
|
}
|
|
}
|
|
|
|
protected void OnCollisionStayEvent(CollisionTrackerEventArgs e)
|
|
{
|
|
if (CollisionStay != null)
|
|
{
|
|
CollisionStay(this, e);
|
|
}
|
|
}
|
|
|
|
protected void OnCollisionExitEvent(CollisionTrackerEventArgs e)
|
|
{
|
|
if (CollisionExit != null)
|
|
{
|
|
CollisionExit(this, e);
|
|
}
|
|
}
|
|
|
|
protected void OnTriggerEnterEvent(CollisionTrackerEventArgs e)
|
|
{
|
|
if (TriggerEnter != null)
|
|
{
|
|
TriggerEnter(this, e);
|
|
}
|
|
}
|
|
|
|
protected void OnTriggerStayEvent(CollisionTrackerEventArgs e)
|
|
{
|
|
if (TriggerStay != null)
|
|
{
|
|
TriggerStay(this, e);
|
|
}
|
|
}
|
|
|
|
protected void OnTriggerExitEvent(CollisionTrackerEventArgs e)
|
|
{
|
|
if (TriggerExit != null)
|
|
{
|
|
TriggerExit(this, e);
|
|
}
|
|
}
|
|
|
|
protected virtual void OnCollisionEnter(Collision collision)
|
|
{
|
|
OnCollisionEnterEvent(SetCollisionTrackerEvent(false, collision, collision.collider));
|
|
}
|
|
|
|
protected virtual void OnCollisionStay(Collision collision)
|
|
{
|
|
OnCollisionStayEvent(SetCollisionTrackerEvent(false, collision, collision.collider));
|
|
}
|
|
|
|
protected virtual void OnCollisionExit(Collision collision)
|
|
{
|
|
OnCollisionExitEvent(SetCollisionTrackerEvent(false, collision, collision.collider));
|
|
}
|
|
|
|
protected virtual void OnTriggerEnter(Collider collider)
|
|
{
|
|
OnTriggerEnterEvent(SetCollisionTrackerEvent(true, null, collider));
|
|
}
|
|
|
|
protected virtual void OnTriggerStay(Collider collider)
|
|
{
|
|
OnTriggerStayEvent(SetCollisionTrackerEvent(true, null, collider));
|
|
}
|
|
|
|
protected virtual void OnTriggerExit(Collider collider)
|
|
{
|
|
OnTriggerExitEvent(SetCollisionTrackerEvent(true, null, collider));
|
|
}
|
|
|
|
protected virtual CollisionTrackerEventArgs SetCollisionTrackerEvent(bool isTrigger, Collision givenCollision, Collider givenCollider)
|
|
{
|
|
CollisionTrackerEventArgs e;
|
|
e.isTrigger = isTrigger;
|
|
e.collision = givenCollision;
|
|
e.collider = givenCollider;
|
|
return e;
|
|
}
|
|
}
|
|
}
|