You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CrowdControl/Assets/3rd/Plugins/UltEvents/Event Holders/CollisionEvents3D.cs

99 lines
3.6 KiB
C#

// UltEvents // Copyright 2020 Kybernetik //
using UnityEngine;
namespace UltEvents
{
/// <summary>
/// An event that takes a single <see cref="Collision"/> parameter.
/// </summary>
[System.Serializable]
public sealed class CollisionEvent3D : UltEvent<Collision> { }
/************************************************************************************************************************/
/// <summary>
/// Holds <see cref="UltEvent"/>s which are called by various <see cref="MonoBehaviour"/> collision events:
/// <see cref="OnCollisionEnter"/>, <see cref="OnCollisionStay"/>, and <see cref="OnCollisionExit"/>.
/// </summary>
[AddComponentMenu(UltEventUtils.ComponentMenuPrefix + "Collision Events 3D")]
[HelpURL(UltEventUtils.APIDocumentationURL + "/CollisionEvents3D")]
[DisallowMultipleComponent]
[RequireComponent(typeof(Collider))]
public class CollisionEvents3D : MonoBehaviour
{
/************************************************************************************************************************/
[SerializeField]
private CollisionEvent3D _CollisionEnterEvent;
/// <summary>Invoked by <see cref="OnCollisionEnter"/>.</summary>
public CollisionEvent3D CollisionEnterEvent
{
get
{
if (_CollisionEnterEvent == null)
_CollisionEnterEvent = new CollisionEvent3D();
return _CollisionEnterEvent;
}
set { _CollisionEnterEvent = value; }
}
/// <summary>Invokes <see cref="CollisionEnterEvent"/>.</summary>
public virtual void OnCollisionEnter(Collision collision)
{
if (_CollisionEnterEvent != null)
_CollisionEnterEvent.Invoke(collision);
}
/************************************************************************************************************************/
[SerializeField]
private CollisionEvent3D _CollisionStayEvent;
/// <summary>Invoked by <see cref="OnCollisionStay"/>.</summary>
public CollisionEvent3D CollisionStayEvent
{
get
{
if (_CollisionStayEvent == null)
_CollisionStayEvent = new CollisionEvent3D();
return _CollisionStayEvent;
}
set { _CollisionStayEvent = value; }
}
/// <summary>Invokes <see cref="CollisionStayEvent"/>.</summary>
public virtual void OnCollisionStay(Collision collision)
{
if (_CollisionStayEvent != null)
_CollisionStayEvent.Invoke(collision);
}
/************************************************************************************************************************/
[SerializeField]
private CollisionEvent3D _CollisionExitEvent;
/// <summary>Invoked by <see cref="OnCollisionExit"/>.</summary>
public CollisionEvent3D CollisionExitEvent
{
get
{
if (_CollisionExitEvent == null)
_CollisionExitEvent = new CollisionEvent3D();
return _CollisionExitEvent;
}
set { _CollisionExitEvent = value; }
}
/// <summary>Invokes <see cref="CollisionExitEvent"/>.</summary>
public virtual void OnCollisionExit(Collision collision)
{
if (_CollisionExitEvent != null)
_CollisionExitEvent.Invoke(collision);
}
/************************************************************************************************************************/
}
}