OnTriggerExitEventTrigger.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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 OnTriggerExitEventTrigger
  13. // : MonoBehaviour
  14. // {
  15. // public readonly EasyEvent<Collider> OnTriggerExitEvent = new EasyEvent<Collider>();
  16. // private void OnTriggerExit(Collider collider)
  17. // {
  18. // OnTriggerExitEvent.Trigger(collider);
  19. // }
  20. // }
  21. //
  22. // public static class OnTriggerExitEventTriggerExtension
  23. // {
  24. // public static IUnRegister OnTriggerExitEvent<T>(this T self, Action<Collider> onTriggerExit)
  25. // where T : Component
  26. // {
  27. // return self.GetOrAddComponent<OnTriggerExitEventTrigger>().OnTriggerExitEvent
  28. // .Register(onTriggerExit);
  29. // }
  30. //
  31. // public static IUnRegister OnTriggerExitEvent(this GameObject self, Action<Collider> onTriggerExit)
  32. // {
  33. // return self.GetOrAddComponent<OnTriggerExitEventTrigger>().OnTriggerExitEvent
  34. // .Register(onTriggerExit);
  35. // }
  36. // }
  37. // }
  38. : MonoBehaviour
  39. {
  40. public ITriggerEntity triggerEntity;
  41. public readonly EasyEvent<Collider, ITriggerEntity> OnTriggerEnterEvent =
  42. new EasyEvent<Collider, ITriggerEntity>();
  43. private void OnTriggerExit(Collider collider)
  44. {
  45. OnTriggerExitEventTrigger onTriggerEnterEventTrigger = collider.GetComponent<OnTriggerExitEventTrigger>();
  46. ITriggerEntity triggerEntity = null;
  47. if (onTriggerEnterEventTrigger != null)
  48. {
  49. triggerEntity = onTriggerEnterEventTrigger.triggerEntity;
  50. }
  51. OnTriggerEnterEvent.Trigger(collider, triggerEntity);
  52. }
  53. }
  54. public static class OnTriggerExitEventTriggerExtension
  55. {
  56. // public static IUnRegister OnTriggerEnterEvent<T>(this T self, Action<Collider> onTriggerEnter)
  57. // where T : Component
  58. // {
  59. // return self.GetOrAddComponent<OnTriggerEnterEventTrigger>().OnTriggerEnterEvent
  60. // .Register(onTriggerEnter);
  61. // }
  62. public static IUnRegister OnTriggerExitEvent(this GameObject self, ITriggerEntity triggerEntity,
  63. Action<Collider, ITriggerEntity> onTriggerEnter)
  64. {
  65. OnTriggerExitEventTrigger onTriggerEnterEventTrigger =
  66. self.GetOrAddComponent<OnTriggerExitEventTrigger>();
  67. onTriggerEnterEventTrigger.triggerEntity = triggerEntity;
  68. onTriggerEnterEventTrigger.OnTriggerEnterEvent.Close();
  69. return onTriggerEnterEventTrigger.OnTriggerEnterEvent
  70. .Register(onTriggerEnter);
  71. }
  72. }
  73. }