/**************************************************************************** * Copyright (c) 2016 - 2022 liangxiegame UNDER MIT License * * https://qframework.cn * https://github.com/liangxiegame/QFramework * https://gitee.com/liangxiegame/QFramework ****************************************************************************/ using System; using UnityEngine; namespace Core.Triiger { public class OnTriggerExitEventTrigger // : MonoBehaviour // { // public readonly EasyEvent OnTriggerExitEvent = new EasyEvent(); // private void OnTriggerExit(Collider collider) // { // OnTriggerExitEvent.Trigger(collider); // } // } // // public static class OnTriggerExitEventTriggerExtension // { // public static IUnRegister OnTriggerExitEvent(this T self, Action onTriggerExit) // where T : Component // { // return self.GetOrAddComponent().OnTriggerExitEvent // .Register(onTriggerExit); // } // // public static IUnRegister OnTriggerExitEvent(this GameObject self, Action onTriggerExit) // { // return self.GetOrAddComponent().OnTriggerExitEvent // .Register(onTriggerExit); // } // } // } : MonoBehaviour { public ITriggerEntity triggerEntity; public readonly EasyEvent OnTriggerEnterEvent = new EasyEvent(); private void OnTriggerExit(Collider collider) { OnTriggerExitEventTrigger onTriggerEnterEventTrigger = collider.GetComponent(); ITriggerEntity triggerEntity = null; if (onTriggerEnterEventTrigger != null) { triggerEntity = onTriggerEnterEventTrigger.triggerEntity; } OnTriggerEnterEvent.Trigger(collider, triggerEntity); } } public static class OnTriggerExitEventTriggerExtension { // public static IUnRegister OnTriggerEnterEvent(this T self, Action onTriggerEnter) // where T : Component // { // return self.GetOrAddComponent().OnTriggerEnterEvent // .Register(onTriggerEnter); // } public static IUnRegister OnTriggerExitEvent(this GameObject self, ITriggerEntity triggerEntity, Action onTriggerEnter) { OnTriggerExitEventTrigger onTriggerEnterEventTrigger = self.GetOrAddComponent(); onTriggerEnterEventTrigger.triggerEntity = triggerEntity; onTriggerEnterEventTrigger.OnTriggerEnterEvent.Close(); return onTriggerEnterEventTrigger.OnTriggerEnterEvent .Register(onTriggerEnter); } } }