Created
October 15, 2019 01:39
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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