using Core.Triiger; using UnityEngine; using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface; namespace UTool.CustomizeTimeLogic.FxLogic.TimeLineEventLogic { public class TimeLineAlertLogic : TimeLineEventLogicBasic { private IUnRegister _enterRegister; private IUnRegister _exitRegister; protected GameObject _gameObject; protected override void ProSetCombatInfo() { } protected override void ProEnter() { _enterRegister?.UnRegister(); _exitRegister?.UnRegister(); _enterRegister = null; _exitRegister = null; TimeLineAlertSeriailztion timeLineAlertSeriailztion = mTimeLineAssetSerialization as TimeLineAlertSeriailztion; if (!string.IsNullOrEmpty(timeLineAlertSeriailztion.guid)) { SpecialDotInfo specialDotInfo = castEntity.GetMainHotPoin(true) .GetSpecialDotInfo(timeLineAlertSeriailztion.guid); _gameObject = specialDotInfo.targetTran.gameObject; _gameObject.SetActive(false); _enterRegister = specialDotInfo.targetTran.gameObject.OnTriggerEnterEvent(OnTriggerEnterEvent); _exitRegister = specialDotInfo.targetTran.gameObject.OnTriggerExitEvent(OnTriggerExitEvent); ITimeLineAlertTargetEnter timeLineAlertTarget = _timeLineTriggerEntity as ITimeLineAlertTargetEnter; if (timeLineAlertTarget != null) { timeLineAlertTarget.InitAlert(timeLineAlertSeriailztion,specialDotInfo.targetTran.gameObject); } specialDotInfo.targetTran.gameObject.SetActive(true); } } protected void OnTriggerEnterEvent(Collider collider) { TimeLineAlertSeriailztion timeLineAlertSeriailztion = mTimeLineAssetSerialization as TimeLineAlertSeriailztion; ITimeLineAlertTargetEnter timeLineAlertTarget = _timeLineTriggerEntity as ITimeLineAlertTargetEnter; if (timeLineAlertTarget != null) { ExitEventGameObject exitEventGameObject= collider.gameObject.GetOrAddComponent(); 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(); 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; } if (!string.IsNullOrEmpty(timeLineAlertSeriailztion.guid)) { SpecialDotInfo specialDotInfo = castEntity.GetMainHotPoin(true) .GetSpecialDotInfo(timeLineAlertSeriailztion.guid); specialDotInfo.targetTran.gameObject.SetActive(false); ITimeLineAlertTargetEnter timeLineAlertTarget = _timeLineTriggerEntity as ITimeLineAlertTargetEnter; if (timeLineAlertTarget != null) { timeLineAlertTarget.LeaveAlert(timeLineAlertSeriailztion,specialDotInfo.targetTran.gameObject); } } _enterRegister?.UnRegister(); _exitRegister?.UnRegister(); _enterRegister = null; _exitRegister = null; } protected override void ProTimeUpdate() { } protected override void ProBreakTimeLine() { TimeLineAlertSeriailztion timeLineAlertSeriailztion = mTimeLineAssetSerialization as TimeLineAlertSeriailztion; if (!string.IsNullOrEmpty(timeLineAlertSeriailztion.guid)) { SpecialDotInfo specialDotInfo = castEntity.GetMainHotPoin(true) .GetSpecialDotInfo(timeLineAlertSeriailztion.guid); specialDotInfo.targetTran.gameObject.SetActive(false); ITimeLineAlertTargetEnter timeLineAlertTarget = _timeLineTriggerEntity as ITimeLineAlertTargetEnter; if (timeLineAlertTarget != null) { timeLineAlertTarget.LeaveAlert(timeLineAlertSeriailztion,specialDotInfo.targetTran.gameObject); } } _enterRegister?.UnRegister(); _exitRegister?.UnRegister(); _enterRegister = null; _exitRegister = null; } protected override void ProDispose() { _enterRegister?.UnRegister(); _exitRegister?.UnRegister(); _enterRegister = null; _exitRegister = null; } } }