TimeLineAlertLogic.cs 5.6 KB

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