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