using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic; using Fort23.UTool; using GameLogic.Combat.CombatTool; using UnityEngine; namespace GameLogic.Combat.Hero.State { public class CombatHeroActiveState : CombatHeroStateBasic { private Vector3 stratPos; private Vector3 endpos; private float currTime; private ParticleSystemPool loopFx; public CombatHeroActiveState(CombatHeroEntity combatHeroEntity) : base(combatHeroEntity) { } protected override void ProEnter() { if (combatHeroEntity.IsEnemy) { combatHeroEntity.GameObject.SetActive(false); stratPos = combatHeroEntity.dotPos+CombatController.currActiveCombat.playerHeroEntity.faceDir*100; endpos = combatHeroEntity.dotPos; currTime = 0; GObjectPool.Instance.FetchAsync("fx_gw_dunguang_loop.prefab", delegate(ParticleSystemPool obj) { loopFx = obj; obj.own.transform.position = stratPos; }); } else { combatHeroEntity.CombatAIBasic.ChangeState(CombatHeroStateType.idle); } } protected override void ProUpdate(float t) { currTime += t*1.3f; if (loopFx != null) { loopFx.own.transform.position = Vector3.Lerp(stratPos, endpos, currTime); } if (currTime > 1) { combatHeroEntity.GameObject.SetActive(true); GObjectPool.Instance.FetchAsync("fx_gw_dunguang_show.prefab", delegate(ParticleSystemPool obj) { obj.own.transform.position = endpos; }); GObjectPool.Instance.Recycle(loopFx); combatHeroEntity.CombatAIBasic.ChangeState(CombatHeroStateType.idle); } } } }