protected virtual void AddBufferItem(BufferItem item, PathUnit.Position target)
{
uint num = this.m_laneLocation[(int)((UIntPtr)item.m_laneID)];
uint num2 = num >> 16;
int num3 = (int)(num & 65535u);
int num6;
if (num2 == this.m_pathFindIndex)
{
if (item.m_comparisonValue >= this.m_buffer[num3].m_comparisonValue)
{
return;
}
int num4 = num3 >> 6;
int num5 = num3 & -64;
if (num4 < this.m_bufferMinPos || (num4 == this.m_bufferMinPos && num5 < this.m_bufferMin[num4]))
{
return;
}
num6 = Mathf.Max(Mathf.RoundToInt(item.m_comparisonValue * 1024f), this.m_bufferMinPos);
if (num6 == num4)
{
this.m_buffer[num3] = item;
this.m_laneTarget[(int)((UIntPtr)item.m_laneID)] = target;
return;
}
int num7 = num4 << 6 | this.m_bufferMax[num4]--;
BufferItem bufferItem = this.m_buffer[num7];
this.m_laneLocation[(int)((UIntPtr)bufferItem.m_laneID)] = num;
this.m_buffer[num3] = bufferItem;
}
else
{
num6 = Mathf.Max(Mathf.RoundToInt(item.m_comparisonValue * 1024f), this.m_bufferMinPos);
}
if (num6 >= 1024)
{
return;
}
while (this.m_bufferMax[num6] == 63)
{
num6++;
if (num6 == 1024)
{
return;
}
}
if (num6 > this.m_bufferMaxPos)
{
this.m_bufferMaxPos = num6;
}
num3 = (num6 << 6 | ++this.m_bufferMax[num6]);
this.m_buffer[num3] = item;
this.m_laneLocation[(int)((UIntPtr)item.m_laneID)] = (this.m_pathFindIndex << 16 | (uint)num3);
this.m_laneTarget[(int)((UIntPtr)item.m_laneID)] = target;
}