Fix effect queue with multiple items of the same instance.

This commit is contained in:
2023-02-19 22:15:25 +08:00
parent 3728360dd2
commit f2f3dba098

View File

@@ -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();