using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Gameplay.Common; using Gameplay.Unit; namespace Gameplay.Pause { using UnityEngine; using Character; using Gameplay.Skill; public class ParticalPauser : IPauser { public readonly ParticleSystem rawPartical; private float _logicScale = 1f; public float logicScale { get { return _logicScale; } } public bool isScaleChanged; public GameUnit owner; public ParticalPauser(ParticleSystem rawPartical) { isScaleChanged = false; this.rawPartical = rawPartical; } public void LogicUpdate(float dt) { if (IsNeedRemove()) { return; } var slogicScale = 1; if (SkillManager.instance.needSkillPaused && SkillManager.instance.inSkillingUnit != owner) { slogicScale = 0; } if (Math.Abs(_logicScale - slogicScale) > 0.1f) { _logicScale = slogicScale; isScaleChanged = true; } if (isScaleChanged || PauseManager.instance.isSpeedChanged) { isScaleChanged = false; var main = rawPartical.main; main.simulationSpeed = PauseManager.instance.globalScale * logicScale; } } public bool isEffect { get; set; } public bool IsNeedRemove() { return rawPartical == null || rawPartical.isStopped; } } }