/**************************************************************************** * 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 OnTriggerEnterEventTrigger : MonoBehaviour { public readonly EasyEvent OnTriggerEnterEvent = new EasyEvent(); private void OnTriggerEnter(Collider collider) { TriggerEntityMono onTriggerEnterEventTrigger= collider.GetComponent(); ITriggerEntity triggerEntity = null; if(onTriggerEnterEventTrigger!=null) { triggerEntity= onTriggerEnterEventTrigger.triggerEntity; } OnTriggerEnterEvent.Trigger(collider,triggerEntity); } } public static class OnTriggerEnterEventTriggerExtension { // public static IUnRegister OnTriggerEnterEvent(this T self, Action onTriggerEnter) // where T : Component // { // return self.GetOrAddComponent().OnTriggerEnterEvent // .Register(onTriggerEnter); // } public static IUnRegister OnTriggerEnterEvent(this GameObject self,ITriggerEntity triggerEntity, Action onTriggerEnter) { OnTriggerEnterEventTrigger onTriggerEnterEventTrigger= self.GetOrAddComponent(); onTriggerEnterEventTrigger.OnTriggerEnterEvent.Close(); TriggerEntityMono TriggerEntityMono = self.GetOrAddComponent(); TriggerEntityMono.triggerEntity= triggerEntity; CustomUnRegister customUnRegister=(CustomUnRegister) onTriggerEnterEventTrigger.OnTriggerEnterEvent .Register(onTriggerEnter); customUnRegister.OnUnRegisterFinish = delegate() { TriggerEntityMono.triggerEntity = null; Collider collider= self.GetComponent(); if (collider != null) { collider.enabled = false; } }; Collider collider= self.GetComponent(); if (collider != null) { collider.enabled = true; } return customUnRegister; } } }