80 lines
1.7 KiB
C#
80 lines
1.7 KiB
C#
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;
|
|
}
|
|
|
|
}
|
|
}
|