123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- using Core.Triiger;
- using Fort23.UTool;
- using UnityEngine;
- using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
- namespace UTool.CustomizeTimeLogic.FxLogic.TimeLineEventLogic
- {
- public class TimeLineAlertLogic : TimeLineEventLogicBasic,ITriggerEntity
- {
- private IUnRegister _enterRegister;
- private IUnRegister _exitRegister;
- protected GameObject _gameObject;
- private GameObjectPool _newGameObjectPool;
- private TimeLineAlertSeriailztion timeLineAlertSeriailztion;
- protected bool isManualClose;
- protected override void ProSetCombatInfo()
- {
- }
- protected override void ProDormancyObj()
- {
- }
- public override bool IsFinish()
- {
- return !isManualClose;
- }
- protected override void ProEnter()
- {
-
- _enterRegister?.UnRegister();
- _exitRegister?.UnRegister();
- _enterRegister = null;
- _exitRegister = null;
- timeLineAlertSeriailztion =
- mTimeLineAssetSerialization as TimeLineAlertSeriailztion;
- isManualClose = timeLineAlertSeriailztion.manualClose;
- if (!string.IsNullOrEmpty(timeLineAlertSeriailztion.guid))
- {
- SpecialDotInfo specialDotInfo = castEntity.GetMainHotPoin<ILifetCycleHitPoint>(true)
- .GetSpecialDotInfo(timeLineAlertSeriailztion.guid);
- GameObject gameObject = specialDotInfo.targetTran.gameObject;
- gameObject.SetActive(false);
- if (timeLineAlertSeriailztion.isNew)
- {
- string poolName = castEntity.guidName + timeLineAlertSeriailztion.groupName +
- timeLineAlertSeriailztion.guid;
- _newGameObjectPool =
- GObjectPool.Instance.FetchAsyncForGameObject<GameObjectPool>(gameObject, poolName);
- _gameObject = _newGameObjectPool.own;
- _gameObject.transform.position = gameObject.transform.position;
- }
- else
- {
- _gameObject = gameObject;
- }
- _enterRegister = _gameObject.OnTriggerEnterEvent(this,OnTriggerEnterEvent);
- _exitRegister = _gameObject.OnTriggerExitEvent(OnTriggerExitEvent);
- ITimeLineAlertTargetEnter timeLineAlertTarget =
- _timeLineTriggerEntity as ITimeLineAlertTargetEnter;
- if (timeLineAlertTarget != null)
- {
- timeLineAlertTarget.InitAlert(timeLineAlertSeriailztion, _gameObject);
- }
- _gameObject.SetActive(true);
- }
- }
- protected void OnTriggerEnterEvent(Collider collider,ITriggerEntity triggerEntity)
- {
- TimeLineAlertSeriailztion timeLineAlertSeriailztion =
- mTimeLineAssetSerialization as TimeLineAlertSeriailztion;
- ITimeLineAlertTargetEnter timeLineAlertTarget =
- _timeLineTriggerEntity as ITimeLineAlertTargetEnter;
- if (timeLineAlertTarget != null)
- {
- ExitEventGameObject exitEventGameObject = collider.gameObject.GetOrAddComponent<ExitEventGameObject>();
- exitEventGameObject.Collider = collider;
- exitEventGameObject.OnCollisionExitEvent = (OnTriggerExitEvent);
- timeLineAlertTarget.Enter(timeLineAlertSeriailztion, collider, _gameObject);
- }
- }
- protected void OnTriggerExitEvent(Collider collider)
- {
- TimeLineAlertSeriailztion timeLineAlertSeriailztion =
- mTimeLineAssetSerialization as TimeLineAlertSeriailztion;
- ITimeLineAlertTargetEnter timeLineAlertTarget =
- _timeLineTriggerEntity as ITimeLineAlertTargetEnter;
- if (timeLineAlertTarget != null)
- {
- ExitEventGameObject exitEventGameObject = collider.gameObject.GetOrAddComponent<ExitEventGameObject>();
- if (exitEventGameObject.OnCollisionExitEvent == null)
- {
- return;
- }
- exitEventGameObject.Collider = null;
- exitEventGameObject.OnCollisionExitEvent = null;
- timeLineAlertTarget.Leave(timeLineAlertSeriailztion, collider, _gameObject);
- }
- }
- protected override void ProLeave()
- {
- TimeLineAlertSeriailztion timeLineAlertSeriailztion =
- mTimeLineAssetSerialization as TimeLineAlertSeriailztion;
- if (timeLineAlertSeriailztion.manualClose)
- {
- return;
- }
- ClearTrigger();
- }
- protected override void ProTimeUpdate()
- {
- // if (_gameObject != null)
- // {
- // if (timeLineAlertSeriailztion.isFixedPoint)
- // {
- //
- // }
- // }
- }
- protected override void ProBreakTimeLine()
- {
- isManualClose = false;
- ClearTrigger();
- }
- protected void ClearTrigger()
- {
- if (_gameObject != null)
- {
- _gameObject.SetActive(false);
- ITimeLineAlertTargetEnter timeLineAlertTarget =
- _timeLineTriggerEntity as ITimeLineAlertTargetEnter;
- if (timeLineAlertTarget != null)
- {
- timeLineAlertTarget.LeaveAlert(timeLineAlertSeriailztion, _gameObject);
- }
- }
- GObjectPool.Instance.Recycle(_newGameObjectPool);
- _enterRegister?.UnRegister();
- _exitRegister?.UnRegister();
- _enterRegister = null;
- _exitRegister = null;
- _newGameObjectPool = null;
- _gameObject = null;
- }
- protected override void ProDispose()
- {
- ClearTrigger();
- }
- public string tag { get; }
- }
- }
|