TimeLineAlertLogic.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. using Core.Triiger;
  2. using UnityEngine;
  3. using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
  4. namespace UTool.CustomizeTimeLogic.FxLogic.TimeLineEventLogic
  5. {
  6. public class TimeLineAlertLogic : TimeLineEventLogicBasic
  7. {
  8. private IUnRegister _enterRegister;
  9. private IUnRegister _exitRegister;
  10. protected GameObject _gameObject;
  11. protected override void ProSetCombatInfo()
  12. {
  13. }
  14. protected override void ProEnter()
  15. {
  16. _enterRegister?.UnRegister();
  17. _exitRegister?.UnRegister();
  18. _enterRegister = null;
  19. _exitRegister = null;
  20. TimeLineAlertSeriailztion timeLineAlertSeriailztion =
  21. mTimeLineAssetSerialization as TimeLineAlertSeriailztion;
  22. if (!string.IsNullOrEmpty(timeLineAlertSeriailztion.guid))
  23. {
  24. SpecialDotInfo specialDotInfo = castEntity.GetMainHotPoin<ILifetCycleHitPoint>(true)
  25. .GetSpecialDotInfo(timeLineAlertSeriailztion.guid);
  26. _gameObject = specialDotInfo.targetTran.gameObject;
  27. _gameObject.SetActive(false);
  28. _enterRegister = specialDotInfo.targetTran.gameObject.OnTriggerEnterEvent(OnTriggerEnterEvent);
  29. _exitRegister = specialDotInfo.targetTran.gameObject.OnTriggerExitEvent(OnTriggerExitEvent);
  30. ITimeLineAlertTargetEnter timeLineAlertTarget =
  31. _timeLineTriggerEntity as ITimeLineAlertTargetEnter;
  32. if (timeLineAlertTarget != null)
  33. {
  34. timeLineAlertTarget.InitAlert(timeLineAlertSeriailztion,specialDotInfo.targetTran.gameObject);
  35. }
  36. specialDotInfo.targetTran.gameObject.SetActive(true);
  37. }
  38. }
  39. protected void OnTriggerEnterEvent(Collider collider)
  40. {
  41. TimeLineAlertSeriailztion timeLineAlertSeriailztion =
  42. mTimeLineAssetSerialization as TimeLineAlertSeriailztion;
  43. ITimeLineAlertTargetEnter timeLineAlertTarget =
  44. _timeLineTriggerEntity as ITimeLineAlertTargetEnter;
  45. if (timeLineAlertTarget != null)
  46. {
  47. timeLineAlertTarget.Enter(timeLineAlertSeriailztion, collider,_gameObject);
  48. }
  49. }
  50. protected void OnTriggerExitEvent(Collider collider)
  51. {
  52. TimeLineAlertSeriailztion timeLineAlertSeriailztion =
  53. mTimeLineAssetSerialization as TimeLineAlertSeriailztion;
  54. ITimeLineAlertTargetEnter timeLineAlertTarget =
  55. _timeLineTriggerEntity as ITimeLineAlertTargetEnter;
  56. if (timeLineAlertTarget != null)
  57. {
  58. timeLineAlertTarget.Leave(timeLineAlertSeriailztion, collider,_gameObject);
  59. }
  60. }
  61. protected override void ProLeave()
  62. {
  63. TimeLineAlertSeriailztion timeLineAlertSeriailztion =
  64. mTimeLineAssetSerialization as TimeLineAlertSeriailztion;
  65. if (timeLineAlertSeriailztion.manualClose)
  66. {
  67. return;
  68. }
  69. if (!string.IsNullOrEmpty(timeLineAlertSeriailztion.guid))
  70. {
  71. SpecialDotInfo specialDotInfo = castEntity.GetMainHotPoin<ILifetCycleHitPoint>(true)
  72. .GetSpecialDotInfo(timeLineAlertSeriailztion.guid);
  73. specialDotInfo.targetTran.gameObject.SetActive(false);
  74. ITimeLineAlertTargetEnter timeLineAlertTarget =
  75. _timeLineTriggerEntity as ITimeLineAlertTargetEnter;
  76. if (timeLineAlertTarget != null)
  77. {
  78. timeLineAlertTarget.LeaveAlert(timeLineAlertSeriailztion,specialDotInfo.targetTran.gameObject);
  79. }
  80. }
  81. _enterRegister?.UnRegister();
  82. _exitRegister?.UnRegister();
  83. _enterRegister = null;
  84. _exitRegister = null;
  85. }
  86. protected override void ProTimeUpdate()
  87. {
  88. }
  89. protected override void ProBreakTimeLine()
  90. {
  91. TimeLineAlertSeriailztion timeLineAlertSeriailztion =
  92. mTimeLineAssetSerialization as TimeLineAlertSeriailztion;
  93. if (!string.IsNullOrEmpty(timeLineAlertSeriailztion.guid))
  94. {
  95. SpecialDotInfo specialDotInfo = castEntity.GetMainHotPoin<ILifetCycleHitPoint>(true)
  96. .GetSpecialDotInfo(timeLineAlertSeriailztion.guid);
  97. specialDotInfo.targetTran.gameObject.SetActive(false);
  98. ITimeLineAlertTargetEnter timeLineAlertTarget =
  99. _timeLineTriggerEntity as ITimeLineAlertTargetEnter;
  100. if (timeLineAlertTarget != null)
  101. {
  102. timeLineAlertTarget.LeaveAlert(timeLineAlertSeriailztion,specialDotInfo.targetTran.gameObject);
  103. }
  104. }
  105. _enterRegister?.UnRegister();
  106. _exitRegister?.UnRegister();
  107. _enterRegister = null;
  108. _exitRegister = null;
  109. }
  110. protected override void ProDispose()
  111. {
  112. }
  113. }
  114. }