60 lines
1.0 KiB
C#
60 lines
1.0 KiB
C#
using UnityEngine;
|
|
|
|
namespace DebuggingEssentials
|
|
{
|
|
public class FastIntQueue : FastQueue<int>
|
|
{
|
|
public FastIntQueue(int capacity)
|
|
: base(capacity)
|
|
{
|
|
}
|
|
|
|
public void EnqueueRange(int startIndex, int endIndex)
|
|
{
|
|
for (int i = startIndex; i < endIndex; i++)
|
|
{
|
|
Enqueue(i);
|
|
}
|
|
}
|
|
|
|
public void ClearAndEnqueueRange(int startIndex, int endIndex)
|
|
{
|
|
FastClear();
|
|
EnqueueRange(startIndex, endIndex);
|
|
}
|
|
|
|
public override void Dequeue(int item)
|
|
{
|
|
if (_count == 0)
|
|
{
|
|
Debug.LogError("FastQueue is empty!");
|
|
return;
|
|
}
|
|
int num = -1;
|
|
int i;
|
|
for (i = 0; i < _count; i++)
|
|
{
|
|
num = (i + head) % items.Length;
|
|
if (items[num] == item)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
if (i == _count)
|
|
{
|
|
Debug.LogError("Item not found in FastQueue");
|
|
return;
|
|
}
|
|
Count = --_count;
|
|
for (int num2 = i; num2 >= 1; num2--)
|
|
{
|
|
num = (num2 + head) % items.Length;
|
|
int num3 = (num2 + (head - 1)) % items.Length;
|
|
items[num] = items[num3];
|
|
}
|
|
items[head] = 0;
|
|
head = (head + 1) % items.Length;
|
|
}
|
|
}
|
|
}
|