diff --git a/Assets/Cryville/Crtr/EffectGroup.cs b/Assets/Cryville/Crtr/EffectGroup.cs index 06acfce..f508ae5 100644 --- a/Assets/Cryville/Crtr/EffectGroup.cs +++ b/Assets/Cryville/Crtr/EffectGroup.cs @@ -43,14 +43,17 @@ namespace Cryville.Crtr { } public void Emit(float index) { EffectInstance instance; - if (!_instances.TryGetValue(index, out instance)) { + if (_instances.TryGetValue(index, out instance)) { + var i = _endQueue.BinarySearch(instance); + _endQueue.RemoveAt(i); + } + else { _instances.Add(index, instance = _pool.Rent()); } instance.Index = index; instance.OnEmit(_time); - var i = _endQueue.BinarySearch(instance); - if (i < 0) i = ~i; - _endQueue.Insert(i, instance); + var i2 = ~_endQueue.BinarySearch(instance); + _endQueue.Insert(i2, instance); } public void Dispose() { _pool.DisposeAll();