Skip to content

Instantly share code, notes, and snippets.

@ashblue
Created October 15, 2019 01:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ashblue/911ac84d55c34bccd193f740a75a5328 to your computer and use it in GitHub Desktop.
Save ashblue/911ac84d55c34bccd193f740a75a5328 to your computer and use it in GitHub Desktop.
A modular wrapper for Unity Triggers that makes them trigger events for enter and exit.
using Adnc.Utility;
using UnityEngine;
using UnityEngine.Events;
namespace CleverCrow.DungeonsAndHumans.Explorations {
public class TriggerEvents : MonoBehaviour {
private TriggerEventsInternal _internal;
[SerializeField]
private string _tag;
[SerializeField]
private UnityEvent _enterEvent;
[SerializeField]
private UnityEvent _exitEvent;
private void Start () {
_internal = new TriggerEventsInternal(_tag, _enterEvent, _exitEvent);
}
private void OnTriggerEnter (Collider other) {
_internal.EnterUpdate(other.tag);
}
private void OnTriggerExit (Collider other) {
_internal.ExitUpdate(other.tag);
}
}
public class TriggerEventsInternal {
private readonly string _targetTag;
private readonly UnityEvent _enterEvent;
private readonly UnityEvent _exitEvent;
public TriggerEventsInternal (string targetTag, UnityEvent enterEvent, UnityEvent exitEvent) {
_targetTag = targetTag;
_enterEvent = enterEvent;
_exitEvent = exitEvent;
}
public void EnterUpdate (string tag) {
if (tag != _targetTag) return;
_enterEvent.Invoke();
}
public void ExitUpdate (string tag) {
if (tag != _targetTag) return;
_exitEvent.Invoke();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment