Assignment for RMIT Mixed Reality in 2020
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.
 
 
 

110 lines
3.3 KiB

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;
}
}
}