OnTriggerEnterEventTrigger.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. CustomUnRegister customUnRegister=(CustomUnRegister) onTriggerEnterEventTrigger.OnTriggerEnterEvent
  42. .Register(onTriggerEnter);
  43. customUnRegister.OnUnRegisterFinish = delegate()
  44. {
  45. TriggerEntityMono.triggerEntity = null;
  46. Collider collider= self.GetComponent<Collider>();
  47. if (collider != null)
  48. {
  49. collider.enabled = false;
  50. }
  51. };
  52. Collider collider= self.GetComponent<Collider>();
  53. if (collider != null)
  54. {
  55. collider.enabled = true;
  56. }
  57. return customUnRegister;
  58. }
  59. }
  60. }