OnTriggerEnterEventTrigger.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /****************************************************************************
  2. * Copyright (c) 2016 - 2022 liangxiegame UNDER MIT License
  3. *
  4. * https://qframework.cn
  5. * https://github.com/liangxiegame/QFramework
  6. * https://gitee.com/liangxiegame/QFramework
  7. ****************************************************************************/
  8. using System;
  9. using UnityEngine;
  10. namespace Core.Triiger
  11. {
  12. public class OnTriggerEnterEventTrigger : MonoBehaviour
  13. {
  14. public readonly EasyEvent<Collider,ITriggerEntity> OnTriggerEnterEvent = new EasyEvent<Collider,ITriggerEntity>();
  15. private void OnTriggerEnter(Collider collider)
  16. {
  17. TriggerEntityMono onTriggerEnterEventTrigger= collider.GetComponent<TriggerEntityMono>();
  18. ITriggerEntity triggerEntity = null;
  19. if(onTriggerEnterEventTrigger!=null)
  20. {
  21. triggerEntity= onTriggerEnterEventTrigger.triggerEntity;
  22. }
  23. OnTriggerEnterEvent.Trigger(collider,triggerEntity);
  24. }
  25. }
  26. public static class OnTriggerEnterEventTriggerExtension
  27. {
  28. // public static IUnRegister OnTriggerEnterEvent<T>(this T self, Action<Collider> onTriggerEnter)
  29. // where T : Component
  30. // {
  31. // return self.GetOrAddComponent<OnTriggerEnterEventTrigger>().OnTriggerEnterEvent
  32. // .Register(onTriggerEnter);
  33. // }
  34. public static IUnRegister OnTriggerEnterEvent(this GameObject self,ITriggerEntity triggerEntity, Action<Collider,ITriggerEntity> onTriggerEnter)
  35. {
  36. OnTriggerEnterEventTrigger onTriggerEnterEventTrigger= self.GetOrAddComponent<OnTriggerEnterEventTrigger>();
  37. onTriggerEnterEventTrigger.OnTriggerEnterEvent.Close();
  38. TriggerEntityMono TriggerEntityMono =
  39. self.GetOrAddComponent<TriggerEntityMono>();
  40. TriggerEntityMono.triggerEntity= triggerEntity;
  41. return onTriggerEnterEventTrigger.OnTriggerEnterEvent
  42. .Register(onTriggerEnter);
  43. }
  44. }
  45. }